The summer after 8th grade, I went to computer camp with my brother and cousin. We learned BASIC, and had a lot of fun playing Starcraft with the other campers at night. For one reason or another, none of us continued to program (I didn’t know anyone who did it, and just kind of thought it was a cool thing to do over a summer…what a loser I was).
My brother eventually taught himself Matlab, R, Python, and turned that into a job as an algo trader on wall street. I played around with some python a few times, but never really sat down to learn anything useful until about 6 months ago.
I want to work with technology, and maybe even start my own company. So, I thought it made sense to learn the basics of programming. How do you do this? There are lots of opinions out there, here’s my story.
Last march I had an idea I was pretty passionate about (it still pains me how ugly this site is). I didn’t know anyone that wanted to work on it with me who had technical skills, thought it would be simple enough to hack together, and so did a lot of googling to build myriverguides.com. It was a lot of brain damage, a lot of missed opportunities to socialize at HBS, but also an amazing sense of accomplishment when it was done and actually worked! Plus, some people really loved it and wrote me some inspiring emails. Lastly, I got to learn some VERY basic HTML, PHP, MySQL, and Drupal. If the second part of that sentence made no sense – don’t worry, it didn’t make any sense to me either a few months ago!
This summer I put a goal in front of me – I was interning at TaskRabbit in a general management role, but wanted to commit to coding every day in my free time. It didn’t matter if it was 5 minutes, or 3 hours, I wanted to sit down at a computer, open a terminal or SublimeText, or whatever, and write code.
I wrote “code everyday” and put it as the background of my phone. I also put it over my bed. Every time I went to text someone or check my email I was forced to remember my goal and forced to think of whether or not I was hitting it.
I didn’t just want to code, I wanted to learn something useful. I picked the django framework for web development (tough choice between that and rails). I first needed more of the python basics, so I took the codecademy course, which was fun and useful. I also ended up taking the jquery course on codecademy which was pretty solid too. Afterwards, I started with chapter 1 of the Django book. The first 8 chapters are really what you need to build a site. You can do one in a few hours, if you’re being very diligent, or you can do one in 30 mins if you are coming from rails or another MVC framework.
To be honest, it was a bit painful. Programming can be REALLY frustrating, especially when you’re already good at the stuff you do at work. Learning from scratch is tough. But, it expands your mind. I always thought that engineers thought differently. It’s hard to explain, but now I have some insight as to why. As a general rule, it’s good to regularly push your brain to think about problems in new ways!
So – I now had the basics to build something and at least host it locally on my computer. Wahoo! Time to work on a passion project – this is when you really start to learn. I’m embarrassed to say that the project I started mid summer was never completed….I got back to school in September and starting working on something entirely different, and the old project died. But, I think that’s ok. I was still coding every day and continuing to learn. It was now a habit.
The last few months have brought more challenges: hosting, databases outside of sqlite, sending/receiving emails, security issues, actually writing good code with comments that can scale…The learning curve hasn’t really flattened yet.
What do I get for my efforts? For the “brain damage” and missed opportunities to watch Madmen or some other show? It turns out, a lot. I can build MVPs…check out lifeguides.me which a classmate and I are working on. Isn’t that cool? I can talk to engineers and not get lost – maybe even have some credibility. I can recruit other technical people to work with me – I’m no whiz but I can contribute on that front now. And, I generally feel like a much more powerful person. This summer at Task Rabbit I re-wrote a piece of our mail merge script to make it A LOT more effective…that’s cool.
Net/net is it worth it? From an ROI perspective….who knows? It depends where life takes me, who I meet and get to work with, and what I do. I enjoyed the process, even the low points where I thought I’d never figure out a problem. And, the highs of getting something to work are pretty incredible too.
I’m relating my story because I know many people out there are trying to learn to code for a variety of reasons. Here’s my advice:
-Get the basics on a language through something like Codecademy.
-Pick a web framework (django, rails) and do the basic tutorials to learn how to create pages and host them locally.
-Pick a PASSION project – something you think the world desperately needs, and figure out a way to hack it together. Break down every step into googleable queries and put it together piece by piece
-Do it EVERYDAY. Don’t let it go 3 days because you’re busy or on vacation, you will lose steam.
-Write down your goal and look at it at least twice a day. It helped me during my wrestling days, and it definitely helped me this summer coding.
-Enjoy the experience. Life is short!