Hello, I’m Michael Sliwinski, founder of Nozbe - to-do app for business owners and their teams. I write essays, books, work on projects and I podcast for you using #iPadOnly in #NoOffice as I believe that work is not a place you go to, it’s a thing you do. More…

How I learned JavaScript by studying source code of Basecamp… and how I keep learning programming by studying code written by others…


Recently DHH of Basecamp wrote on their blog about the importance of being able to view the source code and learn from it. I totally agree with that… and in the spirit of 12 years of Nozbe and the last episode of The Podcast I’d like to share here a story how I actually learned JavaScript by studying their source code years ago. Here goes:

How I learned JavaScript by studying source code of Basecamp… and how I keep learning programming by studying code written by others…

I built the first version of Nozbe in 2005… with no JavaScript

I built Nozbe because I needed to get organized. So after reading Getting Things Done by David Allen (Amazon, Audible) I built a quick tool to get organized over a weekend. It was a very simple web application, but the problem was, when I marked a task as done, I’d have to “save” the page and reload it. Yes, that’s how basic it was… but luckily I was the only user…

Enter Backpack, a tool by 37signals (now Basecamp)

A few months later I came across Backpack, a tool that the crew behind Basecamp built. I signed up for it and I fell in love with its simplicity and most of all, I was amazed that the pages there didn’t reload. I marked a task as “done” and it instantly became “done”. I loved it. They were using this new technology which in 2005 was called “AJAX”.

While I loved the Backpack I still preferred my own tool because it was structured a little differently and more focused on “getting things done”… so I started viewing the source code of Backpack and learning from it. This is how I learned the basics of AJAX, JavaScript (with Prototype.js) and much more.

Thanks to “viewing source code” I could learn based on real-life examples!

I kept studying Backpack’s code and kept improving my app based on what I’ve learned.

Then I re-wrote my app completely and finally on February 1, 2007 I launched Nozbe to the world - with modern JavaScript and all - and the rest is history.

3 years later I visited 37signals/Backpack’s offices to pay homage to their founders and thank Jason Fried, David Heinemeier Hansson and Sam Stephenson for helping me learn to code and inspire me to launch my own business.

P.S. I’m still learning to code every now and then by studying other people’s code.

Recently I was working on a few updates to our web site’s pricing page and I was working with our main designer Radek on it. For the context: our marketing page is built with Hugo, which is written in programming language called Go. I’ve never ever written a line of Go in my life and I wasn’t paying much attention when we migrated our main Nozbe site to Hugo.

To learn I just studied the source code of our web page for a few hours and browsed through the latest commits made by Radek and our CTO to the site. This way when the time came to get my hands dirty, I had a fairly good idea how things worked and how to get stuff done in Hugo and Go. And my designer was impressed. Turns out studying other people’s code is a very good way to learn programming. And even though I’m a CEO now and I don’t get to code as much, my skills and old tricks are still kicking!

So yes, David was right all along - it’s great to share the source code and have others learn from it!

Monday, February 4, 2019 /source/