Moving Past Small Software Projects

Published 2011-08-15 on Farid Zakaria's Blog

I've struck copper, now I want to strike gold.

It's funny how that of all the small software projects I've written and released into the public domain, non of them have garnered any attention or use quite like my HypeMachine extension.

By no means was it insanely popular, however it did manage to get roughly 3,000 downloads from the Google App store + any additional downloads I had sent via e-mail or downloaded through my GitHub.

The most shocking and intoxicating aspect of having this mildly popular extension however were the numerous e-mails I'd get thanking me for developing it and all the other miscellaneous work I had done around at annoying the people at HypeMachine (i.e. batch downloader etc..). It's been about a month since I've taken down my extension from the Google App Store yet I probably still receive about 1-2 e-mails a day such as:

Hi Farid,

Thank you so very much for all your work!

Yours truly,

I'm still shocked whenever I receive an e-mail and I wonder whether people who write really popular software are just flooded with e-mails. I'm only curious as I've never really sent an e-mail myself to show appreciation. Maybe I should....

What I think I did right.

I like to reflect on why perhaps I was able to get a little blip on the map with this extension as opposed to some other work I've done and how I can re-create it (since I'm addicted clearly to the wonderful e-mails). While I wouldn't believe anyone who would tell you they have a secret formula for making something popular, I've definitely found the following in retrospect to have helped garner popularity for my extension. Here are my 2 cents on developing and having a very mildly popular Chrome extension.

  1. Luck
  2. A bit of a given, but clearly there is definitely an aspect of luck with any project reaching any level of popularity. It is worth noting that although I am refering to it simply as luck, it is more of a 'the right moment' kind of luck, which anyone who's read Malcolm Gladwell's book Outliers will understand that most things are succesfull due to the timing of their release.

  3. Start Small
  4. This is a lesson I've heard preached many times however it never seems to sink in, even for myself. For some reason, I was able to keep the scale and scope of my Chrome extension within a very small clearly defined boundary. The small scope and scale of the project really helped me perform two key tasks which I hate that I can never achieve on projects of mine that quickly bloat up. Firstly, the project can clearly get to a point of stable release and I can release it for non-error prone use to other people and secondly, it is easier to maintain and work on. The second point was important as I'd like to still develop on my spare time but find it hard sometimes with a full time job and other random activities I'd like to do after work (drink beer).

  5. I was the customer
  6. I've heard two schools of through on the subject of software development; you either develop software for yourself in mind or you set out to solve/fill a problem evident in the world. Although I believe the latter may be more profitable and lead to large scale software, developing software for yourself in mind had given me a bunch of few advantages when I had written this extension. I had written the extension firstly for myself so that I wasn't even expecting any use of it from others. Writing software for myself that I needed helped give me energy throughout the project and a passion for developing it that I might not have when working on fixing a problem for someone else. Secondly, being an avid user of my own extension meant that as soon as the extension had broken (the HypeMachine guys were constantly trying to break it) I would know it just as fast as everyone else and would begin fixing the extension. The level of commitment I had put in for such a small extension was much larger since I had been the #1 customer in retrospect. I believe that the commitment must have been evident.

  7. Continued Feedback
  8. I made sure to respond to ever e-mail, every reply to my blog posts, every comment on my Github and every comment on my Google App Store with respect to my extension. The continued feedback even for such a small project in my opinion helped polish a lot of the usability issues people had and helped turn the extension into a much more popular extension. Even for myself when I use any software project, I look to see whether there is a sense of community around the software (no matter the size) as it gives me a sense of continued development and commitment.

  9. Having an App Store
  10. Not much to say here except that the new movement to having distributive app stores such as Google's App store really helps give a nice platform to release software on any scale and it had been a pleasant experience working in their sandbox.

There are a probably a few more items that helped however I couldn't think of them and there were probably a dozen things I had done wrong, however I'll save that perhaps for another blog post.

Moving Forward

As a software engineer, I can't seem to scratch my itch of wanting to write some massively huge awesome software project. However looking over what I've just read and my small experience it seems it's an itch I should try and keep at bay. Although I'd like to move past writing small software projects for myself, it seems as it is the most organic and natural course to do as a hobbyist programmer (programming outside of my normal development job). I've thought a lot about jumping into an open source project (at one point I was compiling Chrome) however I find it too daunting and lonely when working alone. I truly enjoy pair programming or working in a very functional group. For now I'm just waiting for another problem to creep up in my life that I'd like solved with some software solution so that I can start my next project.