This post originated from an RSS feed registered with Python Buzz
by Ian Bicking.
Original Post: Building an Intuition
Feed Title: Ian Bicking
Feed URL: http://www.ianbicking.org/feeds/atom.xml
Feed Description: Thoughts on Python and Programming.
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.