I've been building websites since I was 12 (1996) and foolishly thought that if I could use HTML, that a Computer Science degree was best. Literally the first day of the first year, I went to the professor after class and told him I didn't think I was in the right class — it was too technical and it seemed like this introductory 101 class assumed so much more knowledge than I had. Over the year, things only got worse, and I switched majors to Art, thinking that I would never program again. I certainly didn't want to, especially Java which was the language of the classes at the time.
Fast forward five years — I met my now-husband, who is a Python programmer, and watched him go through Y Combinator. I decided I wanted to build a startup myself and started looking for cofounders, as I only knew front-end development. It was a disaster, and eventually I was faced with a decision: do I go back to being a web designer, or do I learn how to code and build the startup myself? I started teaching myself Python (light years easier than Java, for me) and started to build my startup.
Designers are really my target audience: my original title was "Django for Designers." Most programming tutorials leave out the web site and templates part from the tutorial, or stick it at the very end — teaching models, views, and logic first. Hello Web App shows the website first, and fun things you can do on the website, before jumping into more intermediate topics, so designers (who are comfortable with websites already) will see results in a form they're already used to. I try to avoid the command line as much as possible, and focus only on websites and web app functionality.
My now-husband and close friends recommended Python over Ruby, as Python's clean code and formatting would appeal to me as a designer (not to mention I had a lot of friends from whom I could ask questions.)
I started out with Learn Python the Hard Way by Zed Shaw to acquaint myself with the basics of Python logic. I don't think I finished the course completely — I started playing with Django tutorials early, and the one that stuck with me the best was a video series by Kenneth Love (http://gettingstartedwithdjango.com/pages/gigantuan/). I honestly couldn't code on my own worth a damn, but I followed along his tutorial (which builds a blog) and I altered it to fit my project, which was a directory of invitation designers (http://weddinginvitelove.com). I basically taught myself as I built my startup.
I use Stack Overflow near-daily, since I usually Google my errors before asking friends, and generally someone else has run into that error before me and already posted on SO. But if that didn't work out, I would ping my Django friends on Google Talk. Thankfully, they've been really patient with me asking so many questions over the years!
Most computer science fundamentals and best practices can be ignored for the beginner, in my opinion, as long as it doesn't break security. As a designer builds up their website/web app, I believe they'll stumble into best practices and principles on their own. For example, my original app had one giant model — I didn't know proper schema design, and just placed all my model fields in one place. I know better now, but my original app functioned just fine with this "improper" design, and starting out that way allowed me to launch faster with less knowledge, and I am farther along in my career because I didn't try to learn all the best principles at the start and instead just launched an app. Gradual education while learning is okay!
Ankur has coded and deployed numerous Python software over the last 10 years, at three venture funded startup and a fortune 10 company. He currently heads Numerate Labs. ImportPython is his side project with Python being his go to programming language.