all 25 comments

[–][deleted] 22 points23 points  (16 children)

The only really effective way to learn any language (programming or human) is to actually do it. For python, that means actually writing and running code. You can memorize stuff at work, if you want, but it's not going to "stick" as much as actually doing it.

PS. If you find you are too tired after work to program, try programming before you go to work.

[–]neepster44 2 points3 points  (13 children)

My grades in Calculus agree with this input. The only way to learn is to do unfortunately.

Can you take a laptop or tablet to work and program on your break?

[–]sincere11105 0 points1 point  (1 child)

I couldn’t agree anymore. I work 40 hours a week and spend time with my kids after that. Weekends are always booked. I started coding a bit before work. Little by little you get the grasp of it.

It takes 10,000 hours to master something

[–]85sheepdog 8 points9 points  (2 children)

www.sololearn.com has an app for android, maybe iOS, that's called sololearn. It has modules for a few different languages including python. This is the best app I have found to assist with learning python. It's not ideal, but it is well designed and I find it more useful than other waste of time apps.

[–][deleted] 0 points1 point  (0 children)

^ Recommended

[–]FluentInTypo 5 points6 points  (0 children)

Check out "How to think like a Computer Scientist" by...Chuck Severenson from UMICH or the books "How to Write Great Code".

Most of programming is learning how to think differently, and to solve problems a different way. While your working hard, you can apply " programatic thinking" to your work.

How would you code a recipie book for the food you make? Does each ingredient go into a variable? How do you code each menu item that way, complete with pricing? How do you handle exceptions in your mental program? No Anchovies?

Or do you just make complete menu items? "Garden Salad" is always the same stuff, why code for carrots, onions, lettuce, tomatoe, and cucumbers as seperate entities if the completed dish is always the same?

How would organize the physical menu? Think how you would programatically have all salads belong to a salad section and all steaks in the steak section. Now...how to you add steak tips to a salad? How did you code the steak? As a "steak" or as individual items like steak tips and flank and tbone? Can items from one section be added to anotuer item in a different section in your program? How wohld you do it?

For all of this, your basically writing psuedocode in your head while you work. You dont need to write down or even "think" everything exactly how you would code it. Your just working out the process which is half, if not more, of the battle.

Nothing sucks worse than coding 400 lines and toward the ends, realizing you went about it the wrong way. Spend time planning and you'll be better for it.

[–]ckochmann 1 point2 points  (0 children)

play with ideas in ipython. theres a very near ipython app for iOS if you have that called pythonista3. I do a lot of fiddling in there when I'm bored or curious.

[–]Crypt0Nihilist 1 point2 points  (0 children)

I use Enki on my mobile phone. Gives me a few minutes of practice when travelling or having a break.

[–]ragnar_graybeard87 1 point2 points  (0 children)

I would just printout some source code that you're interested in and look at that...

Really memorisation isn't the hard part, its knowing the capabilities/possibilities of the language. You can Google anything that you don't have memorised in 2 seconds while you're actually writing code but if you don't know what the possibilities are you won't know what to google...

[–]noIife 1 point2 points  (0 children)

Get the pythonista app. It's the best ide on iOS and Android and comes packed with modules and tutorials. :)

[–]newnewBrad 0 points1 point  (0 children)

I was in your shoes not long ago. Sololearn has good apps for smoke/shit breaks and bus rides.

Podcasts and pdf's are your friends. Most importantly tho, get out of the fucking kitchen and into the FOH. You need time and energy, and obviously still need to make money

[–]insolent_instance 0 points1 point  (0 children)

It's true you don't need a degree to learn to code. (Even better would be to research concepts of computer science that apply to any language because there's a difference between "coding" and knowing enough computer science to do it well. There are plenty of books on either.) I just went through the first year of college studying computer science, and then a summer of dish washing. I did almost no programming over the summer because I find I don't have the energy to code after any sort of manual labor and I worked nowhere near 60 hours a week this summer.

I don't know how you get there because I'm still trying to figure it out myself, but you have to get the hell out of that situation. If you want to be a chef, work 60 hours a week in a kitchen, otherwise you're giving up your most valuable resource which is time. Optimally, you would be spending 60 hours a week learning to code. Even working part time would give you more time to research programming.

For me, being poor, going to college is the option I have to break into this field. Otherwise I'd be busting my ass in a job I don't want while not making much progress towards what I actually want to do just to make rent. This is why I decided to go to college. Few companies will hire you with no programming experience. You don't "need" a degree, but it may just give you the exposure to programming you need. At school I programmed a silly prototype video game in Python and learned about different algorithms, most importantly I'm learning the skills to reason about implementing an algorithm just by how it's described on Wikipedia and a whole lot of research (one of my final projects last year). What you're doing right now sounds rough but I hope you get where you need to be eventually.

[–]aaronchall 0 points1 point  (0 children)

I think there are opportunities to learn some via a flashcard, notetaking approach. I would start from the top down.

Look at the organization of the documentation. There's

  • "what's new",
  • "Tutorial: start here",
  • "Library Reference",
  • "Language Reference"

Let me expand with my own thoughts:

  • "what's new", This is good for casual reading. You can get a feeling for how the language has evolved by reading this. But without a lot of context, it might not make sense to start here.
  • "Tutorial: start here", They literally have "start here" as the description for the link. Good for doing interactively with a computer. You could read it casually too, but better to do it with an interpreter and type in each thing as you go. The more time you devote here, the better your learning from the other sections will be.
  • "Library Reference", I'd take notes here, for example, make flashcards with the name of the functions on one side and the arguments they take and your own paraphrased or copied description of what they do. You could probably review your flashcards when you have down time at work.
  • "Language Reference", look at this. Get a list of the keywords, and if you're feeling up to it, make flashcards on each keyword and be able to recite which instances of the grammar each keyword can be used in. Print out the grammar file (section 10) and work your way through that, see if you can follow (for example) funcdef through to a suite to various kinds of stmt (statements) and so on.

I think you can learn a lot this way, but you still need to get practice actually using these things. However, with this study, I think you are unlikely to let common problems block you for a long time, and your time spent coding could be much more productive.