I don't think I am a particularly clever developer. If you put me in a room full of developers, lined up by how clever they are, I would probably be somewhere near the middle. But I don't try to be clever. My objective is to be good.

I used to be involved in some moderately large bespoke development teams, teams numbered in double and even treble digits.

One of the key objectives for success was clarity, that everything needed to be understandable by anyone on the team. That didn't mean they had to know it all, but that they could look at any part of the project and understand it. Any developer being unnecessarily clever would disrupt that understanding and hinder progress of the project.

Now involved in open source projects, contributors have widely differing backgrounds, experience,  ability and motivation. With most being volunteers and involved for the intellectual challenge, exercising one's cleverness can be key to a developer's motivation.

A clever developer

  • Thinks in code.

  • Prefers the latest language syntax and techniques.

  • Writes intricate code with minimal lines.

  • Uses the latest development tools and strategies.

A good developer

  • Thinks in user requirements.

  • Keeps to the simplest language structures that get the job done.

  • Write readable, documented code that others can follow.

  • Explains their work and reasoning.

  • Uses a minimal set of familiar and widely used tools.

In a broader context, excessive cleverness in an open source project creates a barrier to entry. When too much of the code or architecture relies on intricate mechanisms, even skilled developers can struggle to grasp the underlying logic and are hence discouraged from becoming involved.

Or to put it into a single phrase:

Some developers are too busy being clever to actually be good.

If your open source project is struggling to attract new talent, perhaps its time to reevaluate your approach. Get away from cleverness to refocus on being good. A project that is easy to understand and extend will expand the pool of potential contributors and hence facilitate long-term growth.

Topics and Tags
Discussion

If you would like to discuss any of these thoughts, please start or continue a thread on the Concrete CMS Forums.

The KISS principle

Keep It Simple, Stupid!