Ten Months of Programming – Months 2 & 3

March 3, 2013

Months two and three of my ten-month project to become a solid programmer have now ended. In total I have spent 121 hours programming since the start of the project which means I’m one hour ahead of schedule (Hooray!) and have completed 24.2% of the targeted 500 hours. In this post, I will discuss how I have spent my time in the last two months. I have also made three important changes to my approach that have helped me speed up my progress significantly.

My Beeminder progress chart:

Beeminder Progress Chart

How I Spent my Time

I started January by reorganizing the project with the working name CamuCamu that I started last year. CamuCamu is an application that can be used to track the books you read. (It is, however, unfinished and not live yet.) One thing that had confused me for a while with Django was which code should be put on the project level and which on the application level. After reading an article on the best way to organize Django code, I reorganized the project which broke everything. Much of the first half of January I spent trying to figure what went wrong. I also spent around 20 hours learning about jQuery and AJAX.

At the end of January I started using git and github (My exciting new github account!) These are both amazing tools and I’ve been using them extensively since then. In the context of the Weekly Django Coding Session, I also worked a bit on the open-source project Django-Photologue. More on this below.

Finally, on February 7 I started the project that will be taking up a lot of my time over the coming months. I’m developing an online application to run some psychology experiments for my dissertation. So far, I’ve spent 25 hours on it and made good progress.

Let’s move on to the three things that have upgraded my learning pace these months.

Weekly Django Coding Session

At the beginning of the year, I realized that one of the things that slowed me down the most in my learning was that I got no feedback on my code and did not interact with other programmers. All my learning came from tutorials, books, blog posts, documentations and Stackoverflow.

When I looked for a Django coding meetup in London, I couldn’t find one so I ended up starting my own. We’ve been running for about a month now and it has been an excellent experience. There are around 50 group members now and probably 20 to 25 people have actually been to a meetup. In the beginning we were meeting at a cafe every Wednesday night and programmed together for 3 hours. We have since moved to the startup Conversocial in Shoreditch that Gareth, one of the meetup members works at.

The meetup has been lots of fun and very stimulating. Many of the guys who come are full-time Django developers, while some of them work with other languages and are just learning Django. Almost everyone is a far better programmer than myself. They’re also very friendly and great to hang out with.

A lot of the focus of the meetups has been to work on the open-source project Django-Photologue that Richard Barran maintains. You can check out the meetup page here.

Hiring a Tutor
Second, for about a month I have been working with Felipe Coelho, a Django developer in Brazil. We usually work together once a week for 2-3 hours. He reviews the code I’ve written, discuss questions I have and tackle issues that I’m stuck with. He’s a great guy, a very good programmer and exceptional at explaining things. This has been extraordinarily helpful.

Particularly striking was when we rewrote the code I had written for CamuCamu. The code base ended up shrinking by a good 50% as much of what I had written was unnecessary because Django already had the functionality built-in or unncecessarily verbose.

Mindmapping
Third, three weeks ago I started using mindmaps to organize my knowledge and learning. I often have the mindmaps open as I code and when I learn something new I will put the information in the mindmap. This forces to think of the context and broader meaning of what I learn.

What Lies Ahead
In March I’ll be increasing my daily programming hours from 2.5 to 3 for the rest of the project. I will focus much of my time on the psychology application but I will also start learning more about how to analyze data. I’m not quite sure yet whether I will learn R for that or stick with Python.

I’m excited to report back soon with a post about month 4.

Previous post:

Next post: