I'll make it good, you make it better
Tags: softwareengineering
Published: 2023-07-11 12:12:00

If you are a software developer, or if you know a software developer, or if you have bumped into them on the street, then you are aware that there are two types of software developers in the world. These are:

1. Starters

2. Maintainers

These two types are quite different from each other, in terms of their psychological profiles, motivations, and challenges. They are also vastly different from normal human beings, in terms of their ability to understand and use words like "polymorphism", "recursion", and "wombat". Let's take a closer look at them.

### Starters

Starters are the developers who love to create new things from scratch. They enjoy finding a challenge and dreaming up a new-fangled and complicated way to solve it. Experimenting with recent technologies, frameworks, and architectures, even if they have no idea what they are doing or why the technology even exists is their forte. They are not afraid of failure, because they know they can always delete everything and start over.

Using a canvas made of ones and zeros, they are artists whose pictures usually look like this:

Starters are often visionary, creative, and ambitious. They have a sharp vision of what to build and love to see their ideas come to life. Communicating their vision to others is another strength, using phrases like "trust me", "it will be awesome", and "what could possibly go wrong?". They can inspire and motivate their teammates if their teammates don't ask too many questions or point out too many flaws.

However, starters also have some drawbacks. Easily bored, they lose interest in their projects once they reach a certain level of complexity or maturity. Their magpie mind is easily attracted by shiny new things but quickly loses interest. They are not particularly good at finishing what they start, and they often leave behind a trail of unfinished or buggy code that nobody else can understand or fix. Often impatient, impulsive, and overconfident, they may ignore best practices, documentation, testing, or security in favor of speed and novelty. They may also underestimate the difficulty or scope of their projects and end up with unrealistic deadlines or expectations that cause them to pull all-nighters, drink excessive amounts of coffee, and hallucinate wombats.

For the record, I am a starter.

### Maintainers

Maintainers are the developers who love to work on existing things and make them better. They love the challenge of improving performance, reliability, usability, or security of a system. They enjoy finding and fixing bugs, refactoring code, optimizing algorithms, or adding new features that nobody asked for but that they think are cool.

Maintainers are like mechanics who fix cars that have been driven by starters. They must deal with all kinds of problems that starters have caused or ignored, such as leaks, rattles, smoke, flames, explosions, etc. They must figure out how the system works, why it doesn't work, and how to make it work better without breaking anything else.

Maintainers are often meticulous, analytical, and pragmatic. They have a keen eye for detail, and they are good at spotting errors or inconsistencies in code. Also, they are good at following standards, conventions, and best practices that starters have never heard of or cared about. They value quality over quantity, and they take pride in their work.

However, maintainers also have some drawbacks. They tend to be resistant to change, and they prefer stability and predictability over innovation and experimentation. Like a tree that is anchored to the ground and resists movement, they are rooted in their routines, habits, and traditions. They are not incredibly good at starting new projects, and they may lack creativity or vision. Often, they are too cautious, conservative, or pessimistic. They may avoid taking risks or trying new things for fear of breaking something or causing problems. They may also overestimate the difficulty or scope of their projects and end up with excessive deadlines or expectations that cause them to work long hours, eat junk food, and develop ulcers.

### Conclusion

Starters and maintainers are two types of software developers with different psychological profiles, motivations, and challenges. Both types have strengths and weaknesses, and the software industry needs both. The key is to find a balance between them, and to respect and appreciate each other's contributions.

If you are a starter like me, we can work on finishing what we start, follow best practices, document, test, and secure our code, and listen to feedback from others. If you are a maintainer, you should try to embrace change, experiment with new technologies, refactor your code, add new features, and share your ideas with others.

When starters and maintainers work in harmony, regardless of industry, beautiful music is made, and products are shipped that are the most beneficial to the end consumer. Embrace these types, and utilize their respective fully to maximize software quality, which everyone benefits from.