Reading the umpteeth ‘Son, you need to learn to code if you’re going to be a web startup founder’ article I knew it was the first step I had to take. After all, it makes perfect sense right?
You have a vague product idea which you want to turn into a prototype or even possibly a V1; you’re either going to need to pay a good developer market rates to do it for you (1000s of dollars of precious startup capital with no guarantee the output will be satisfactory) or you could do it yourself. There is no ‘Technical Co-founder’, it’s a mythical creature that never makes itself known to mere ‘Ideas Guys’. There are just ‘Co-founders’ and all of them need to be building the product at least in the early days.
This is how I went about picking up the skills I required in 1 month. First, a disclaimer: I will note that I have an unfair advantage over the general populace because I took Computer Science at UNSW in the early 2000s but since graduation I had never touched a line of code except for hacking some VB macros in Excel in 2007. I held a series of Project and Product Management roles and by 2011 I was very much a ‘Product Guy’.
Week 1: Familiarizing Myself with Python
Every man and his dog are building their applications in either Python or Ruby. These 2 languages allow you build more functionality with less code and your time from 0 to deploying a working app is much shorter. I chose to learn Python simply because I perceived there to be more online learning material and a bigger coding community from which to get help. By the same token it felt like I was drinking from the firehose so I hope this post solves that for other newbies.
My first port of call was Google’s Python Class. I needed to learn the Python syntax, the basic data structures like lists, dictionaries and tuples, control statements and looping. I downloaded the exercises and did them like I was 18 and in Programming 101 again, no peeking at the answers! I had all the resources in front of me, I just had to solve the problems. Google even gives you tests that you can run on your code to give you some ‘woohoo’ moments as you pass them.
Week 2: Introduction to Django
So at the end of week 1, I knew a bit of Python but I couldn’t do anything useful except solve well defined well structured programming problems (like a student). To build a web-app I knew I needed to learn about a web development framework. For Python there’s Django and Pylons among others, again I chose the one I perceived to have the most documentation and support which was Django.
Learning about Django was straightforward. I worked through the first 8 chapters of the Django book in the 2nd week. I didn’t just read, or copy and paste, I worked through and typed out every single code example they gave and made it work to make sure I understood what was going on. Beyond chapter 9 the book was getting too advanced to be useful 2 weeks in so I switched gears to another resource.
Weeks 3 and 4: Django By Example
This set of examples will get you to the point where you are feeling confident that you can build something yourself, even if it’s simple. It took me 2 weeks full-time to go through the examples and type out all the code (don’t copy and paste) into my own projects and work out why it did what it did so it wasn’t ‘magic’ anymore.
This is where the steepest part of the learning curve is but you will build a simple Blog, Forum, Photo Sharing App etc and in the process get a lot of practice in building a Django app starting with the data model, then the views and then the template and then deploying it. Each app required a new useful feature that brings in a slightly higher level of complexity. I highly recommend doing this (but only after the first 8 chapters of the Django Book).
Now You’re Dangerous!
It was Week 5 when I finally felt comfortable in laying down the model for my own app. I’m not saying this is all you need to learn build your app, far from it, this was just the beginning. Currently, I’m making it habit to learn something new from ‘The Hidden Features of Python' everyday. However, you're hopefully well on your way to being able to contribute on building your own App, I know I am.
You’ll still need another type of co-founder, the ‘Designer Co-founder’ but that’s a post for another day. Stay tuned for more, as I’m building my App I’m learning heaps of interesting stuff to be posted here.