4 ms·
So, I think I agree with you, in general, that people can be better suited to green-field or maintenance, both from a skillset and personality perspective. But
by Tenhundfeld 9y ago
So, I think I agree with you, in general, that people can be better suited to green-field or maintenance, both from a skillset and personality perspective. But I also think good, active maintenance can have a lot of creativity and require, as you say, envisioning what doesn't exist.
If we're just talking about bug fixes and level-2 support or something, sure, that's mostly about attention to detail, etc. However, maintenance is much more than that, in my experience.
Maintenance involves keeping a system up to date and functioning in the face of changing business requirements. So, you have a new customer come onto the system or a department wants to change a business process, and now you need to change the system. What was once a single implementation of some feature now makes more sense as an abstraction with extensibility points. Or maybe just the system has more data than anticipated, and a good developer might realize that instead of putting a bandaid on the Postgres search, it's better to integrate a dedicated search solution like Elastic.
The point is that software is never done, as long as it's being used. Drawing a line between development and maintenance is often just an arbitrary distinction.
- nostrademons 9y agoI guess I should've said "a different kind of creativity" rather than "less creativity". When you're doing maintenance work - even the sorts of large scale rewrites that totally change the architecture - your requirements are known. You can write down the goal, ideally write automated tests for it, and then you're done when the system passes the tests. Figuring out the solution may require a lot of creativity and intuitive leaps, but at least both the starting and ending points are expressed in rational terms. For green-field software products (contracting is different, and much more akin to product maintenance), your requirements are unknown. Your ultimate acceptance criteria is "does the user like it?", which is an emotional one, not a logical one. This requires that you connect the rational part of your brain, which speaks the language of the machine, with the emotional part, which speaks the language of the user. Being able to exercise both parts in tandem is a very rare skillset, which is why market rates for truly innovative programmers range into the millions. (This ability to fuse emotional & rational thinking together is also a skillset required of CEOs, executives, politicians, and pop entertainers, all of which are also professions with compensation reaching into the millions.)
- Tenhundfeld 9y agoYeah, that's fair. I'd agree green-field product development is different from maintenance. It requires great UX thinking, really understanding the users, product-market fit, maybe some behavioral economics, etc. I was thinking more about enterprise or line-of-business green-field development. That still benefits from all of the things we're talking about, but it's a different set of problems to focus on.