On productivity and learning


This (possibly cringeworthy) article is very old and part of Project Necromancy. Many of the opinions I held back then have changed. I'm keeping this only for "historical" interest, not necessarily because I agree with what I thought back then.

Also consider that many of the included links (even the ones to the Internet Archive) are dead.

My girlfriend is on vacation, so these days I have a lot of time to devote to my personal projects.

So I decided to make a web application, and I decided to use Common Lisp for this task. That’s because I really want to learn Common Lisp and apply it in web programming. Both things are new to me. The only stuff I made on the web were a couple of little PHP scripts to automate some stuff on some website I made some time ago. Then, recently, I attended a course about Ruby on Rails and discovered what web frameworks are really about. Thousands of possibilities opened before my eyes! So I decided to test some ideas using technologies I’m not very proficient in.

But, in more or less two days, I’ve only written like 50 lines of code, mainly the definition of two classes that should map to database tables. For a moment I felt bad because I accomplished almost nothing in so much time. Then I reminded myself that this is due to the fact that I don’t know the technologies I’m using yet.

So my question is: did I lost my time?

My answer is: NO.

Even if I wrote so little code, I achieved some more intangible goals, that is:

  • I used Common Lisp to write actual code, and not just little examples found on websites
  • Since I wasn’t able to install the library I wanted to use to connect to a database (Elephant), I learned about some other libraries available to CL developers and finally decided the one to use (Postmodern)
  • During the search for this library, I discovered PostgreSQL and that relational databases are not the only DBMS in the world
  • I learned to use Emacs and Slime a little better

So, while the code I wrote is just a few lines, I nevertheless achieved something in these two days that I would never have achieved if I used, say, Python to develop a CLI application: I learned something new.

I think it’s established that one of the most important assets for a programmer is knowledge (and getting things done, of course…). And today I know a bit more then yesterday. So I can consider myself a better programmer (maybe when I’ll have finished I will…)

Investing time on learning those things made me feel like when I first started programming ten years ago: empowered, amazed and humble.

So, if you have some spare time, DO learn something new. Be amazed! Be amazing! Be a better programmer!