Software Development Ramblings

Developer Tiers

Through my time as a software engineering I’ve come to understand the craft of coding in a new light. As with the light bulbs over peoples heads in cartoons, it starts with an idea.

Which is to say it starts with one persons vision. They then share that vision with other people that will help them build their vision, and if that vision is solid everyone will be developing the same idea.

Unsurprisingly different developers think of an idea differently, and I think it leads to tiers of developers that, all other things equal, separates the good and the less good.

The tiers come from looking at an Idea from different view points. First is the view point of how to implement an idea. This is the type of stuff that shows up on job descriptions and is all about basic technical skills and ability to make something.

Tier two adds the ‘How to maintain’ the code base point of view. In the rush to add features documentation and unit tests often get bumped but if the Engineer has the maintainers viewpoint they are still able to write code that doesn’t incur technical debt. It’s self documenting, decoupled, re-usable and easily followed.

After that is the “How will the users actually use, or want to use, this software product”. Sometimes the user is another service, sometimes it’s a consumer, sometimes it’s another developer. At the end of the day it’s really important for developers to know who is using their product and be thinking about them. For any given piece of functionality there are N different ways to implement it, all with tradeoffs in speed, security, reliability, usability etc.

Keeping the User, Maintainer and Implementer viewpointS in mind while designing ensures that the implementation chosen builds the most present and future value possible.