(Really) learning to program
February 25th, 2008
Both the professional artists and craftsmen practice a lot. At least all of the professionals whose craft requires creativity or precision of movement. This is so obvious an observation that the willingness for you to slap me around with a wet, particular representative of species piscus is almost overwhelming.
So, you’d think that professional software engineers and programmers practice a lot in order to be capable of that wizardry they are known to be capable of. Programming if anything (in addition to art itself) requires creativity—it is not called an odd science for nothing. Actually it is rather common knowledge that programming is as much art as science, as well as craftsmanship. And it also requires precision of movement. By that I mean precision of movement in the abstract sense, not the ability to hit that Ctrl key instead of Alt. But the point is, professional programmers must practice a lot.
But you’d be wrong. Or it depends on the definition of professional. And some other stuff as well I won’t bother to explain. The truth is, that at least in Finland there’s a distinctive difference between culture among programmers, especially if you compare that to that of programmers in other western countries like USA and UK. At least that’s the impression I’ve got having read thousands of articles and blogs during the last ten years. I’d even say that the programmers in Finland don’t have a programmer culture at all. There are very few programmer groups here, and even among those who earn their living by developing software are likely to avoid doing anything programming-related at home or with friends.
It’s an odd situation. I believe that you can’t become a professional if the only time you practice the art of software development is at work. The key to learning is being able to try new things without worrying about failing. If you only program at work, you cannot try new things—at least you shouldn’t. Every time you decide to do something differently, you risk wasting a lot of money and time, even the project itself.
So, you need to practice your craft as any other professional, and be granted the opportunity to try out things while at the same time being able to ignore the risk of failure. Your college and/or university studies are not sufficient for this, as you are mostly programming assignments which must succeed, when we are back at the work-like situation. And I’m not alone with my thoughts either; practice is essential. But for some reason, many of us choose to ignore it, or rather, fail to realize the fact that we are learning by doing (which is very bad, because then we are charging our clients for mere practicing of our skills) and drastically hindered in that as well (because we can’t do anything that is risky).
So, if you want to be a top-notch software engineer, fire up your favorite editor and start hacking at home. A simple web app with Lisp or Haskell. A home-built CI integration tool. Try TDD if you haven’t (you should!). Learn a completely new language. Anything you are not likely do at work, or would but are afraid to.
And perhaps the most important, learn what other people have done. Read books and blogs, lots of them. You could as well start by reading Steve’s blog first.
![[]](http://www.pragprog.com/images/covers/190x228/tpp.jpg)

February 28th, 2008 at 08:17
I think this is true. I know many developers who do the job from eight to four and continue the work next morning. I have got used to the habit of reading blogs/commenting them, writing code and reading books about development every day. I think this is the only way to keep your skills up to date. It’s also a win-win situation: you gain more experience and learn new stuff that can be applied in your day job making you to perform better. At the same time it gives your better self-esteem when succeeding on your tasks and gives you more motivation to take your skills even further.
The biggest constraint is the time required. I have other hobbies also and those require some time too. However I’m able to squeeze the coding after those activities, on daily basis. Also, currently I don’t have a family so that doesn’t take my time, but maybe someday that may change. But generally I agree, you need to write code after the office hours too in order to improve yourself as developer.
February 29th, 2008 at 11:34
Timo, You’re so right with the time it requires. The investment required for being a professional programmer is hard. I think the effort required should be compared to that of doctors, politicians and others who just cannot cut it by eight-to-four working schedule. The problem is that people don’t understand it. Tell about it to my non-programmer friends. Or my wife. Or my mother. You understand me for sure. Doctors, lawyers and others at least get the sympathy because people somehow understand it is difficult and requires lots of time. I also blame myself for not educating myself enough before getting married and having a family—then I had lots of time, but I was like this fellow Bob Yegge writes about. I guess I’m still fortunate that I understood my position few years ago, that I have so much subjects to improve myself in