Of course it needs to work for its intended purpose. But that alone does not make great software. That is merely table stakes.
I disagree and it's probably illustrative to explain why.
The worst engineers I've ever worked with have all been obsessed with the idea of software rather than what it accomplishes. Modular code, readability, efficiency: all are means to an end. Good engineers will do these things in proportion to their utility to the end goal.
In contrast, there's a legion of engineers who right this very instant are more concerned with onboarding processes, whether their code has the right subjective shape, what the linter rules are, and whether there is enough content on the company blog. Don't be one of them. Build useful things and don't "play software engineer." People who do work on building software will be too busy to care about ephemera and they'll achieve excellence because that is what is required of them.
Put another way: if working software is just "table stakes", raise the stakes. There is no better way to improve the objective quality of your software than to make it do more for the user or have it do it better. It is the reason for code to increase in quality.
Comments
I disagree and it's probably illustrative to explain why.
The worst engineers I've ever worked with have all been obsessed with the idea of software rather than what it accomplishes. Modular code, readability, efficiency: all are means to an end. Good engineers will do these things in proportion to their utility to the end goal.
In contrast, there's a legion of engineers who right this very instant are more concerned with onboarding processes, whether their code has the right subjective shape, what the linter rules are, and whether there is enough content on the company blog. Don't be one of them. Build useful things and don't "play software engineer." People who do work on building software will be too busy to care about ephemera and they'll achieve excellence because that is what is required of them.
Put another way: if working software is just "table stakes", raise the stakes. There is no better way to improve the objective quality of your software than to make it do more for the user or have it do it better. It is the reason for code to increase in quality.