RIP mes-courses.fr

Rest In Peace mes-courses.fr. Here is what it looked like :

I wanted to create a really fast on-line grocery front-end, where people could shop for the week in only 5 minutes. It supported shopping recipes instead of individual items but I also envisioned to allow automatic menus recommendations, and automatic item preference selection. I started 4 years ago, and this is my last doing on the subject :). If you’re thinking about starting your own side project, this post is for you.

Here are the lessons I learned

  • As a professional programmer, I largely underestimated the non programming time required for a serious side project. It represents more than half the time you’ll spend on your project (marketing, discussing with people, mock ups and prototypes)
  • When I started, I kind of estimated the time it would take me to build a first prototype. Again I ridiculously underestimated this :
    • because of the previous point
    • because on a side project, you’ll be on your own to handle any infra issue
    • because you don’t have 8 hours per day to spend to your project (As a professional developer, dad of 2, I only managed to get 10 to 15 hours per week)
  • A small project does not require as much infrastructure as a big one. I lost some time doing things as I do when working on projects with more than 100K lines of code. So next time :
    • I’ll stick to end to end cucumber tests for as long as possible
    • I’ll use an economical framework like described in Donald G. Reinertsen’s Flow book to prioritize improvements vs features
  • Eventually, what killed me was that I could not go around the “experiment –> adapt” loop fast enough. The project was just too big for my time
    • I’ll try to select a subject a project that suits my constraints of time and money
    • This will be one of the first hypotheses that I’m willing to verify
    • Web marketing and HTML design are more important than coding skills to run experiments : I’m learning both
  • Scrapping is a time hog. I won’t start any side project involving scrapping anymore.
  • Using on-line services always saved me a lot of time. They are a lot more reliable than anything I could setup. Mainly, this was :
    • Mailing services
    • Cloud deployment
  • Go the standard way. Again, anytime I did something a bit weird, it turned out to cost me some time
    • Use standard open source software, stick to the latest version
    • Use standard and wide spread technology
  • Automated testing and deployment saved me some time from the start. Especially with the small amount of time that I could spend on my project, it was really easy to forget details and to make mistakes.
    • Here is the Heroku deployment script I used to test and deploy in a single shell call
    • And here is a Heroku workaround to run some cron tasks weekly, this allowed me to run some scrapping tests every week on Heroku
  • It took all my time ! Next time I start a side project, I’ll be prepared to
    • Spend all my free time on it (my time was divided between day-job, family, side project)
    • Spend all my learning time (books, on-line trainings …) for it
    • Choose something that I am passionate about !
    • Choose a different kind of project to fit my constraints
      • Joining an existing open source project would let me focus on technical work at my own pace
      • Volunteer for a not for profit project might be less time intensive while allowing some fulfilment
  • I did my project alone, and it was hard to keep my motivation high on the long run. Next time :
    • I’ll join someone else
    • I’ll time box my project before a pivot or starting something completely different
  • I did not manage to get anything done before I settled a regular daily rhythm. I used to work from 5:30am to 7:30am, I first tried in the evening, but after a day’s work, I was too tired to be really productive.
  • When I could afford it, paying for things or services really saved me some time. I’m thinking of
    • A fast computer
    • Some paying on-line services

It is sure that doing a side project seriously is a heavy time investment, but there’s also a lot of benefits !

Here is what I gained

  • Real experience with new technologies. For me, this included
    • Ruby on Rails
    • Coffeescript
    • HTML scrapping
    • Dev-ops practices with Heroku
    • Web design with HTML and CSS
  • I also learned a lot of non technical skills in which I was completely inexperienced
    • Web marketing
    • Blogging
    • Mailing
  • Trying to bootstrap a for profit side project is like running a micro company, it’s a good opportunity to understand how a company is ran. This can help you to become a better professional during your day-job.
  • Having control on everything is a good situation to use Lean techniques.
  • Failing allowed me to actually understand Lean Start up ! The ideas are easy to understand in theory, the practice is a very different thing. It should help me for my next project.
  • Resolving real problems on my own was a very good source for valuable blog articles.
  • I collaborated with very clever people on open source libraries
    • By fixing some bugs in some libraries I was using
    • By releasing some parts of my code as open source libraries

Next time, I hope I’ll get more euros as well !

You’ve got nothing to loose from trying ! Just do it. Give yourself 1 year to get some small success, and then continue or repeat with something else !

Comments