Ian Bicking: the old part of his blog

Building an Intuition


Looking for More On Compound Documents?

Chris McDonough asks What does it take to be a great software developer?

Many of the skills of a great software developer are rooted in a strong intuition -- intuition both about methodology and technique. Even though it's mysterious, I think intuition is very much something you build, you certainly aren't born with it. (Of course, some people may build it more quickly.) Intuition is the accumulated knowledge and wisdom when you've forgotten the source, or the accumulated result of lots of little lessons and learning experiences. And, we should all know, lessons are best learned through making mistakes.

Miguel de Icaza talks about something that I think it related:

What I like about this story [about solving a challenging problem in the development of Gnumeric], is that I could have given up at any point since there was a large problem ahead of me: a problem I had no answers to. And I see this with many free software developers, students and even in normal social situations: people stop doing things because they see a big problem ahead of them that they can not possibly conceive working around. My advise to every young programmer is to start writing code and delay addressing imaginary problems until they become real.

There's always a hard problem for which you won't have answers. When you become a better developer you will still always encounter these problems (at least if you are challenging yourself -- if not, then you need to find more challenging work, or make some work for yourself). I don't think any developer, no matter how great, will feel that they have Arrived, that their knowledge and skill is sufficient, because we can always dream of more than we can create. (Which is good, of course.)

Besides tackling challenging problems -- and making mistakes -- I think it's important to be opinionated about what you're doing. This applies to any craft, not just software. It's better to be rash and mistaken than to be withhold opinion, or to simply defer to the opinion of others. (Of course, none of this works if you are stubborn and won't change your opinion, because than you'll be stuck with premature and incorrect opinions.) But after making an opinion, you must of course be reflective and thoughtful, and have a bit of humility, so you can recognize where you were right and where you were wrong. And somewhere in this process you should be developing an intuition, but you probably won't realize its arrival, nor will ever be clear exactly where it came from.

Created 21 May '04
Modified 25 Jan '05