I’m a programmer and perhaps even a nerd, and as such I tend to focus on learning new tools, languages, patterns and other more technical details all the time. But at the core of my job is having good general problem-solving skills and these rarely get as much focus as cool demo webcasts of products to come etc. It’s just like school where you tried to learn facts, but never really learned how to learn.

I guess I’ve been thinking about this for a long time, but reading the excellent book Pragmatic Thinking & Learning: Refactor Your Wetware by Andy Hunt made me understand it at a much deeper level. Thinking and understanding aren’t the same as you’ll see.

imageThe conclusion I reached was something that I’ve been iterating in my mind over and over during the last year: you need to learn how to communicate with yourself. Communicating with others is more visible and a highly sought after skill because it shows that you’re not a introvert geek, but being able to communicate with yourself is something that I think we all should strive for as well.

What really snapped my head into place was a bug I had been trying to solve for a few days. Yes a few days, that’s how long I was stuck on this little sucker. Just before going home on the second day, I started thinking about self communication and opened up a text editor and described the problem to myself as detailed as I could. Then I read through it and huzzah, the bug was solved within minutes. It was super simple, but I had spent the two days being stuck in a mental rut that I couldn’t escape as long as I only tried to code myself out of the problem.

The secret is the action of putting what you think about into concrete, actual words. This process switches your brain into another mode, makes you think about it a little differently and activates reflection on this subject in your mind which can go on unnoticed for weeks in your subconscious. You may believe that just thinking about the problem is enough, since you feel that you already know all you need to know. But that is a mistake. Expressing the problems differently is key to developing a holistic understanding, to start seeing patterns, to connect to the knowledge you have about the subject through different mental paths. The way I see it there are many clues in society that point to the benefit of this, such as the catholic confessions, prayer, psychotherapy, rubber ducking, letter writing, keeping a diary and so on.

image So the next step for you, dear nerd, is to fire up a text editor or open a notebook and describe any problem you haven’t been able to solve for a while to yourself. It may be related to coding, work or even your personal life. Then you can throw it away, you’ve probably already benefitted from it. Do this over and over, perhaps through a simple exercise called morning pages, and you’ll start understanding the mechanics that are you and your mind and what you need to do to continually improve yourself.

It has done wonders for me anyway.

The Swedish ALT.NET will be hosting yet another “unconference” (a conference driven by its participants) Saturday the 7th of February in Stockholm, i.e. a few days from now. Last time was an absolute blast, so if you’re into the .NET platform then I strongly suggest you chum along. ALT.NET is all about constantly improving your software development skills and keeping an open mind about what the best solution to different development problems might be, and not blindly accepting a “one size fits all” solution from any specific vendor. Just head over to the Swedish ALT.NET site to register (for free of course).

In addition to the open spaces discussions that we hosted last time, we’ll also be listening to some interesting lighting talks (very short presentations) at the beginning of the event. I’ll be giving one about object databases, and others will be talking about iPhone development, code rot, mocking, OpenTK, BDD with MSpec and Continuous Integration.

My blog according to Wordle

December 5, 2008

wordle

Cool stuff, I like Wordle.

The fear in the .NET community of alternative tools, especially open source ones, is doing a lot of harm to us. There’s a paraphrase I learned from the ALT.NET movement that goes “No one ever got fired for choosing Microsoft” (I think the original quote was about IBM). And it certainly feels like it’s tragically true, the fact that we only trust Microsoft to provide us with everything and that nothing trustworthy can come out of the plethora of excellent ideas and tools that exist outside of Redmond.

Whenever I hear about this, I think of a person I talked to once. This person was going on and on about this open source version control system and how much it sucked, how they had never been able to get any support and how it showed just how rotten open source products are in general.

Curious to know, I asked the person what system it was. The answer I got was “SourceSafe”.

Of course I had to tell this person (not a developer mind you, but working in a .NET developer team) that it’s not open source software, but rather some crap that Microsoft has produced.

It’s an amusing story, and is serves as a good example of how many people working with .NET seem to feel about Microsoft vs open source.

Last night I came back from Øredev, a developer conference which took place in Malmö, Sweden. And what a conference it was, so super crammed with nice and motivated people and interesting talks.

The first thing that struck me, months ahead, was the impressive line-up. No wonder I decided to go there instead of the more exotically located PDC2008. Big names such as Robert C. Martin, Eric Evans, Ayende Rahien, DHH, Kevlin Henney and Scott Bellware in combination with track topics that are really close to my heart, e.g. .NET, Agile Ways, Test, DDD, Cool Languages and ALT.NET made for a really interesting mixture.

In retrospect, the conference was an absolute blast. And I’m not the only one thinking so, in fact it seems to hold up really well in international comparison according to people who have been to more conferences than I have. Just read what Microsoft’s Glenn Block and Ayende Rahien wrote during their stay there.

I was more interested in the ALT.NET track (a full day) than the ordinary .NET track, because of the topics. Instead of some sort of corporate demoware sessions, which tend to bore me, I chose the alternative. After an excellent introduction by my collegue Joakim Sundén, interesting presentations were held by Scott Bellware, Ayende Rahien and Glenn Block followed by a panel debate featuring all of the above.

The best presentation was probably “Using Active Record to write less code” by Ayende Rahien, which was cocky and super motivating. Even though I have some experience using ActiveRecord, and pretty much knew about the features he brought up, I had the same “wow” reaction as everyone else did. If you can deliver an ad-hoc presentation which preaches to a converted and makes him want to re-convert, then you’re on to something.

I could go on and on about the conference, but suffice it to say that I’ll most definitely be going back year after year if they keep it up. Bravo!

The first swedish ALT.NET unconference is taking place in Stockholm this Saturday (13th of September). It’ll be a fun day filled with open space meetings on different topics aiming to increase awareness of more than just the Microsoft way of doing things on the .NET platform. We draw inspiration from the open source community, other developing platforms and even Microsoft themselves in the quest for determining the best option for solving different problems.

To find out more, go to the swedish ALT.NET site, where you also can register for free.

Lately I’ve been experimenting with the Pomodoro Technique to become more efficient at work. It’s basically a personal time management method according to which you work focused, without interruptions, for 25 minutes and then rest for 5. Repeat until it’s time to go home/drink beers/see a movie/all of the above.

Pomodoro means tomato in Italian

Pomodoro means tomato in Italian

Sounds too simple? It is, the technique has a lot more to it and you should reward your curiosity by reading the original paper on it by creator Francesco Cirillo [pdf]. However, for n00bs I really recommend reading the blog post “Pomodoro Technique in 5 minutes” by Staffan Nöteberg first. It’s a good way to get started within minutes and later on when you’re hungry for more tomatoes, read the 44 page PDF by Cirillo.

Before encountering the Pomodoro Technique I was playing around with the 48 Minute method, which means that you should work for 48 minutes, rest 12 and repeat. It did do something for me, but the 48 minute period is too long, it’s much easier to get interrupted during that interval.

Pomodoro has been treating me good so far and it has made me analyze my life a bit. It’s kind of stupid thinking that all these hip methods and techniques like Pomodoro, TDD and Continuous Integration will make you a better developer automatically. I tend to overlook the most important stuff, and many with me. Contemplate Maslow’s Hierarchy of Needs and get your

  • Eight hours of sleep.
  • Regular exercise.
  • Five meals a day.
  • Fresh air
  • etc
Maslow's Hierarchy of Needs

Maslow's Hierarchy of Needs. Created by J. Finkelstein and released under the GFDL license.

Yes, these are the basics and everyone knows about them, yet most of us overlook these simple needs. Without fulfilling them you really shouldn’t expect to be a brilliant developer. They will help you staying sharp and being able to tackle all the problems that people and code throw at you. It’ll make you healthier and happier in general too.

Apart from that, what are you waiting for? Read the Pomodoro Technique in 5 minutes and see if it makes you more effective and efficient at work. Now quit yer procrastinating and get outta here!


This post is released under the GFDL license, since I used a GFDL picture from Wikipedia in it. Kinda viral, huh? Not sure if I like it or not, but at least I got to use the picture.

Okay, that may be an overly dramatic blog post title. Then again, everything you do change your life in some respect, doesn’t it? Whatever…

I’ve found myself reading a lot lately. I finished the really inspiring book The Pragmatic Programmer: From Journeyman to Master by Andrew Hunt and David Thomas a few weeks ago and it has changed some of my development and computer behaviours. They recommend learning a shell (command-line tool) in your respective operating system and also learning a good text editor such as Emacs or Vi, recommendations that I took to heart. The reasons: a promise of more efficiency and flexibility.

I vowed to stop using graphic tools such as Windows Explorer and Finder until I knew the shells in Windows and OS X well enough to never having to use Explorer and Finder again. I never really liked Finder anyway…

So now I’m doing as much as I can in Windows PowerShell and the OS X Terminal as possible to see if it really improves my efficiency and gives me more flexibility. I’ve already started creating deploy scripts to avoid the repetitive task associated with building, copying and zipping different versions of the files needed, and that’s a relief.

The command line is still really frustrating at times, and you have to remember a lot of names and arguments, but I hope it’s for a good thing in the long run.

My Emacs experience so far has been pretty good. Once you get going with it it makes a lot of sense, but it’s a little bit frustrating having to stop to think about what keyboard shortcut you’re supposed to use next. I guess it’ll become second nature after a while and I really like it thus far. Heck, I’ve even written this blog post in Emacs.

Even though this is not meant as a book review, I’d like to say that it was really inspiring even though the chasm between the abstract parts and the concrete tips (like the two above) is a bit too wide at times. And I’d also like to point out that the book is about the entire programming profession, not just command-line tools and text editors.

I’m currently reading Code Complete by Steve McConnell. Maybe that’ll change my life too.

Yes, this is just an echo post… but I found it so exciting that I just had to write about it. 

I’m a member of the Agile Sweden mailing list, and today an interesting electronic letter arrived. There’s going to be an agile conference in Stockholm in the beginning of June, called Agila Sverige. It’s inspired by the norwegian initiative Smidig 2007, which focused on lightning talks (a presentation being at most 10 minutes long) and open space discussions. It’s also super cheap, hopefully I can go.

I recommend you to watch one of the lightning talks from Smidig last year, given by the swedish Niclas Nilsson of factor10 on the meaning of words when you’re dealing with TDD/BDD. You can find more videos at the Smidig site, and they’re all released under the Creative Commons Attribution-Share Alike license.

A CHM viewer for OS X

March 16, 2008

I’m toying around with Spring.NET, and since I’m using MonoDevelop on my Mac I don’t have ReSharper to automatically set my using directives. That means I have to consult some documentation to find out what namespace a certain class belongs to in the Spring.NET framework before I can use it. I don’t remember life before ReSharper being this hard.

So I decided to open up the SDK documentation, which is conveniently placed in a .chm file. Conveniently if you’re running on Windows that is. I needed some application to view the .chm file on OS X and I found two open source alternatives:

  1. Chmox (version 0.3). It displayed the contents annoyingly close to the window borders, and more importantly had no search function. Since I don’t want to scroll through half of the documentation to find where a certain class belongs, I had to go the next option:
  2. xCHM (version 1.13). It has some GUI issues that aren’t too bad, and it has a search feature. Winner by no contest, and Bob’s your uncle. Too bad Mac builds are discontinued, that’s the reason I chose another version than the latest.

Problem solved, I’m back to exploring Aspect Oriented Programming in Spring.NET again.