Continued from Part 1.
Then, as we were nearing the summer, I was faced with a dilemma: either get an internship or work on my own projects. I had collected so many ideas during my school term (that I send to my evernote db with an #idea tag when inspiration strikes), that I really didn’t know which way to go. After some deliberation, I thought I’ll go down the projects path, and in order to prevent any regret from arising in the future, I was to take 2 intensive summer courses to move ahead in my cs minor. The day I was done with my last exam in May 2011, I started full steam on my personal projects. I had many things to ramp up on to bring my ideas to fruition.
My first idea was a framework aggregating all the book quotes I’ve been collecting from my readings since 2009. I wanted to create a way to allow me to remind myself of these memorable passages, and to share them with the world. But I had problem. I had never done serious web development before. I thus spent about two weeks ramping up on ROR by, among other things, completing the hands on tutorial in Agile Web Development with Rails (which walks you through the implementation of an online store) and tinkering with Ruby. Two weeks later, I was wiring my framework, and not too long after, the Wisbit app was born.
I look back fondly on this project even though it didn’t get the traction I was hoping it’d get. In fact, it is this very fact that makes me realize how great of a learning experience it was. Besides the technical knowledge gained, I learned that it is of utmost import to ascertain a market before building anything. Ironically, I had previously written a piece about the importance for an independent software developer to set their priorities right: Market->Marketing->Aesthetics->Functionality. If my goal was to indeed get traction, then I had committed the capital mistake of focusing on functionality before gauging the market. Nonetheless, I still use the Wisbit app today to refresh my memory as to the great content of certain books I’ve read.
I had forgotten to mention something. Even after the end of my “Intro to CS” course, I carried over my habit of making videos to my summer readings. I would read a chapter in a book about something neat in CS (mainly challenges), and I would make a video about it. Then at some point in the summer, in the midst of my courses and learning endeavours, I decided to “capitalize” on the work I had already done (by that time I had a number of videos covering many topics in CS). I was going to build an app that would allow people to follow their progress in completing the CS videos. But I wasn’t going to make my earlier mistake. My plans were to ensure that there were at least two or three dozen people interested in the idea before I move on to implementation. So I setup a landing page explaining my idea (helping myself to a themeforest template), and put it up on Hacker News to get their feedback (which I find to be the most supportive, yet bluntly sincere feedback one could get).
The response was phenomenal. Little did I know that I had tapped into a market that has been hungering for a long time. Despite having nothing to show for my videos on the page (except for the keeners who took the time to dig further to uncover my work), people readily subscribed, tweeted and liked. It seemed clear to me then that the online field of education (especially in relation to topics that touch on programming) is one with great potential today. In fact, just recently, we heard of Codecademy’s recent foray into that market, and how viral they went, racking up 200k users in 72 hours (really looking forward to more of their lessons, especially advanced ones). The niche I was targeting was slightly different (computer science as opposed to sheer programming), but it still got me more interest than I had ever anticipated.
Now that I had confirmed that there was indeed a demand for the idea, I got to work and built hackercs.com as my first Django app. I already knew Python, so I quickly got to reading Django documentation (which, incidently, seems scarcer than ROR’s but I’ll leave that to another post) and worked on my app in parallel. I adopted a simple strategy to face that project which appeared to be more daunting than it really was: write down all the specs I’d like to eventually have, order them by priority, start with the basics, get something out, and then add features/fix bugs at my own pace.
I spent about 3 weeks designing and writing it up, and it’s been live for about a month already. I realize I have much to learn before my videos can reach the quality of the Khan Academy, and I’m always looking for suggestions for improvement (app-wise and video-wise). But my passion to make those videos has never abated along the way, and I really encourage anyone who feels they have something to offer in that field to get involved. There are countless opportunities arising, and if you feel that none of them suits your inclinations, it appears to be quite easy to establish yourself in that market (if an EE student can do it, I think many others can).
Right now, I’m winding down and getting ready for my upcoming and final school term at McGill (and applying to jobs along the way). I’m hoping to take two more CS courses to wrap up my minor, and that’ll be more fodder for videos on Hacker CS (expect more advanced videos on data structures, algorithms and more).
Your input (of all kind) has been extremely valuable to me, and I feel that I owe much of my inspiration to the great community at Hacker News (had it not been for their encouragements with my first post, this wouldn’t have panned out). I realize I’m still a novice in this field, but I hope that my passion will carry me to greater heights with Hacker CS. If there’s anything to take away from this, then it is that the time well spent searching for your calling and its intersection with the needs of people is really worth the investment.