Best path to becoming a web app guru
February 17, 2012 3:55 AM   Subscribe

What's the best way to learning web-app development after working through Learn Python the Hard Way (or any other introductory Python book for noobs)?

I first learnt programming (in C) as a high school student. As an undergrad, I continued to dabble in C and MATLAB. That's now about 5 years in the past. Wanting to get back to hacking personal projects, I set about learning some basic HTML and CSS a couple of weeks ago. Then, I worked through most of Learn Python the Hard Way, along with solving the occasional challenge on Project Euler using Python.

Now, I want to learn to develop simple web-apps. I began by working through an apparently simple Flask tutorial, but frankly, I am a little overwhelmed. I'm beginning to wonder if I am doing this the right away, as I have absolutely no knowledge of databases or networking.

I also think I am something of a sequential learner, where I build on some basics that I first master. The entire teach-yourself-coding paradigm that works on first building simple running apps (or working on large existing open source projects) seems to go against this (in my limited experience so far ), because there are so many moving parts to any application and it's not easy to have a grip on all of them right from the start. Plus, I tend to get frustrated if I see something in the code I don't understand.

So I guess what I am looking for are:
- recommended paths for learning app development
- personal learning experiences
posted by rahulrg to Computers & Internet (7 answers total) 21 users marked this as a favorite sounds like what you're looking for - you can get things running fairly quickly with little code.
posted by GenericUser at 4:17 AM on February 17, 2012

Django is the standard industrial strength framework powered by python. My advice is to get it up and running with the sample website, and then start modifying the sample website layer by layer. First figure out how the routing works, and make some pages at different endpoints using the routing system.

Then make some further modifications using the template system, make some master pages, etc.

Finally get down to the controller and persistence layers. But work layer by layer - starting with the simpler layers and progressing to the more complex ones.

I know that Django is a pretty sophisticated place for a beginner to start. Django will take you through all the moving parts of a serious web-app, top-to-bottom, which I think is important. Also, if you start by modifying a sample app - you will be able to ignore a lot of the moving parts while you focus on one particular, you don't have to tackle the whole thing at once.

Finally, I think you will have to figure out a way to deal with your frustration at code that you don't understand. It takes a long long time until you will understand every single little piece. You need to be able to bracket something that's mysterious to you while you work on something else. Leave it alone until you are ready to really tackle that mysterious thing. And in general, having a good handle on frustration is a major prerequisite to teaching yourself how to code and to coding in general.
posted by tempythethird at 6:36 AM on February 17, 2012

A couple of books you might want to look at:

Head First Python
- The Head First style may or may not appeal to you, but this one might be good to at least skim because it walks you through things like what actually happens when you enter a URL in your browser, what terms like CGI and MVC mean etc. You should learn enough to be able to start building simple things just with info in this book. Plus with those fundamentals down you'll be better placed to make sense of things like The Django Book which tend to assume you pretty much already know all that, or don't do a lot more than pay lip service to explaining them from scratch.

Another good thing about this book is is tells you important practical things like how to put your web app on Google App Engine. And about non-web things that might also take your fancy, like how to make an Android app in Python.

Programming Python - This one is very different to the first book, being huge and lacking the numerous diagrams, but may be useful for other reasons. It has lots of info you can dip into when you have a "I want do X, what are the tools and techniques in the Python world for that?" type question. It also does have sections that explain a fair bit about the underlying tech of the net, so if at some point you want to find out things like "What the heck are sockets?" it can be useful.

Be aware the latest version is for Python 3, though it does try to point out relevant differences for Python 2.x users. But you might prefer an earlier edition if you use 2.x.

I don't think either of those books teaches you the basics of databases, so you'll probably want to find something else that does that as well. Database concepts are not going to be hard to pick up for a guy like you.

Disclaimer: I'm not the kind of person that reads such books cover to cover, nor was my background the same as yours, so YMMV.
posted by philipy at 6:44 AM on February 17, 2012 [1 favorite]

I would definitely recommend Django because of the ecosystem and documentation. The best way I can think of to start would be to work through the whole tutorial and then come up with something you'd like to build. I know that's a cliché, but if you have a problem that needs solving, it helps when you hit the hard parts/ run into problems.
posted by yerfatma at 6:56 AM on February 17, 2012

I recommend getting a tiny app going with (as mentioned above) then going to flask. There is less going on than it looks like. Also, where you see '@' places, it is just a syntactic sugar for a function intended to wrap functions (decorators). Don't be intimidated and feel free to memail.
posted by gregglind at 8:40 AM on February 17, 2012 [1 favorite]

I'll second the Django Book approach. I thought it did a real gentle approach to learning the framework starting at a point that barely used the framework. Chapter by chapter it would make note that the technique you used in the last chapter seemed awefully verbose to accomplish the task at hand. Then it would explain a new Django feature or concept that was aimed at centralizing functionality or reducing the amount of code written or sticking to general good principles. After 10 chapters or so of this you start to get a good handle on what you should be doing.
posted by mmascolino at 10:50 AM on February 17, 2012

Maybe take a course, this one is offered free at Udacity -- building a search engine with Python.
posted by indigo4963 at 11:50 PM on February 17, 2012

« Older Does she stay or does she go?   |   History of Psychoanalysis? Newer »
This thread is closed to new comments.