The naïve programmer is not “the bad programmer” or so. He is just not so sophisticated. Naïve programmers are everywhere. Almost all programmers wish they could be better. Whether you’re
Programming is a craft/art/skill. That’s our starting point. Art can be measured against human valuation. In the practical arts/crafts, you can be measured against the world (if your bridge collapses, for instance).
Is your craft something you do all the time, like landing a plane? Or are you,
as programmer, more in the creative arts: you face the blank canvas all the
time (an empty
In this talk, we won’t rate along the single axis “worse - better”. There are more axes. “Technique - inept”, “creative - dull”, “judgment - uncritical” and sophistication - naïve. It is the last one that we deal with.
What does it mean to be a sophisticated programmer? To be a real master of your craft? They are versatile and powerful. They draw connections. They work with concepts and ideas (sometimes coming from other fields) to think about and to explain the problems they have to solve.
The naïve programmer will write, perhaps, badly structured programs.
But… the programs exist. They do get build. What should we make of this?
He showed an example of some small-town USA photographer (Mike Disfarmer). He worked on his own with old tools. He had no contacts with other photographers. Just someone making photo portraits. Years after his death his photos were discovered: beautifully composed, beautifully lighted (though a single skylight…).
Software development is a profession. So we pay attention to tools and practices. Rightfully so. But not everyone is a professional developer.
Not everyone has to be a professional programmer. It is OK if someone learns django for the first time and builds something useful. Even if there are no unit tests. Likewise a researcher that writes a horrid little program that automates something for him. Are we allowed to judge that?
He talked a bit about mucisians. Most of them sophisticated and very good musicians. But some of them also used naïvity. Swapping instruments, for instance. Then you make more mistakes and you play more simply. Perhaps you discover new things that way. Perhaps you finally manage to get out of a rut you’re in.
Some closing thoughts:
Would you rather be a naïve programmer with a vision or a sophisticated programmer without?
If you want to be a professional developer, you should try to become more sophisticated. That is part of the craft.
If you’re naïve and you produce working code: there’s nothing wrong with being proud of it.
As a sophisticated programmer: look at what the naïve programmer produces. Is there anything good in it? (He earlier showed bad work of a naïve French painter; his work was loved by Picasso.)
Suggestion: watch the keynote on youtube, this is the kind of talk you should see instead of read :-)
Here’s the video: https://www.youtube.com/watch?v=Wo21oPhfhFg
Here are his slides: https://speakerdeck.com/evildmp/the-naive-programmer
Photo explanation: station signs on the way from Utrecht (NL) to Heidelberg (DE).
My name is Reinout van Rees and I work a lot with Python (programming language) and Django (website framework). I live in The Netherlands and I'm happily married to Annie van Rees-Kooiman.
Most of my website content is in my weblog. You can keep up to date by subscribing to the automatic feeds (for instance with Google reader):