Hacker News new | ask | show | jobs
by molbioguy 1466 days ago
If successful software companies are dependent on retaining great programmers, they're probably doomed unless they can keep creating new software. Great programmers want to create. They won't be satisfied with just maintaining a successful product. Few companies have the capacity to keep creating really new products and they certainly aren't going to be willing to abandon the old product.
4 comments

> Great programmers want to create. They won't be satisfied with just maintaining a successful product.

What about Linux kernel or SQLite maintainers? Aren't those great programmers? Also if the software "they" created is so great, why wouldn't they want to maintain and extend it?

As far as I know, programmers love maintaining great software, but maintenance doesn't mean "bloat it with unnecessary features" or similar. Optimizing performance, make it more reliable, improve the tooling, cutting out the fat and similar are things that are challenging and engaging.

I think programmers want freedom, agency and ownership of something great. Yes, part of that has to be tinkering and writing new prototypes of things that might or might not go somewhere, but it can't be all of it for everyone right?

Honestly, there may be great programmers amongst the kernel and SQLite maintainers, but they may stay around for other reasons. Some great programmers like working on a particular piece of tooling.

But many companies don't really allow "maintenance" of software as you describe it - the heady early days where anything goes are pretty free-form, but once you get into the normal business cycle it's just adding features and keeping it from exploding. The problem really becomes apparent when the company has a culture of promoting/rewarding the programmers who do create and ignoring or ostracizing the ones that maintain.

> Optimizing performance, make it more reliable, improve the tooling, cutting out the fat and similar are things that are challenging and engaging.

That's not maintenance. That's later stage creation process. Maintenance is stuff like "make an adapter for foo" or "deal with the format change" or "the new version of windows exposess this bug, fix it".

> Maintenance is stuff like "make an adapter for foo" or "deal with the format change" or "the new version of windows exposess this bug, fix it".

This can nevertheless be quite challenging and exciting: such new requirements often lead to a revision of the assumptions underlying the architecture of the software and thus - in the long term - lead to lots of small improvements in the software architecture that add uo.

The problem rather is that such maintenance tasks are often not very esteemed (both to managers and other programmers).

I agree a lot with your comment. I do think adding new features is exciting, but if a project is technically interesting (like a kernel is), then there can be great satisfaction in maintaining, as that maintenance can be technically interesting itself.

This is not the case if the software is boring from a purely technical standpoint, e.g. some CRUD sales app.

I lean towards agreeing with you, but both Linux and SQLite do regularly add new features, however incrementally.
Possibly the 2 most popular softwares in the world I’d claim
> Great programmers want to create. They won't be satisfied with just maintaining a successful product.

I personally don't think one can generalize like that. I've worked at companies with great programmers who would've like to maintain and improve things, but end up frustrated by an environment where the incentive is to work on splashy projects because that's what "performing" means there.

I've also seen what you mention of course; the 0 to 1 part of a project is done and people decide to move on. I think it really depends on the person and the project though.

There's different kinds of great programmers. There's the tourist and the townie. The tourist will only ever get you so far, and you're usually better off without them post MVP.
That might be true in some cases but it is not true in general. Most great software has been worked on by the same developers for many years.