Honestly, I think the best developers are not the ones that write beautiful code and put quality above everything else. The best ones are the ones that can push out a solution given too little time and given a (maybe self inflicted) bad code base. Because that's real life, and not the pony farm. Money trumps everything else in capitalism. Getting money means paying your bills today. And even more so than skill, quality and code getting money requires kowtowing and overpromising to someone who currently has money.
Second comes qualifying for the money (yes, in real world you get money without having what you are selling, but that's a short-term success). That means getting to ask for money again tomorrow. That is where skill and code come into play. You promised something and now when you are lucky you can deliver 80% of that. Push hard to get there. Not everybody who tries will achieve that much.
And only then comes quality, which means qualifying for money next year becomes cheaper.
If you realize LIFE is that way, suddenly high quality isn't all that important anymore, is it? Quality is a luxury and you must have achieved A LOT to be in a position to just think about quality. And the ohter people (management, sales) are not total idiots. If you dream the high quality dream they are the people who pay your bills.
I am an engineer like you, btw. I was just in the situation already, where I had to pay my bills myself and therefore know what amount of humiliation and sweat is required to get money just for ONE person, me.
I mostly agree with your top line. Code "beauty" and "quality" are not objective measures, and there are plenty of devs out there who are obsessed with their own interpretation of those ideals to the point that it inhibits their ability to ship.
However there is an existential danger for management to embrace this philosophy. The problem is the incentives are already naturally aligned to ship today, and problems discovered tomorrow are likely to fall on the shoulders of someone other than the original author. If there is no institutional value towards maintainability, then the code base will get worse and worse until it grows beyond the cognitive ability of anyone to ship anything without negative ROI. By the time that happens the cost to fix may be more than the company can afford.
The funny thing though is that tomorrow will resolve itself by itself. If the next guy finds the code too unworkable it will get replaced or the company dies out. Either event is not really a problem. Somewhere money is found to pay the replacement, people find new jobs, new companies take up space opened by other companies dying.
Everything else comes from the need to pay the bills. What does your landlord say if you don't pay your rent? What do you say if your boss doesn't pay you? It's not a management philosophy it's people trying to pay you and themselves. And even that may fail one day. You're probably doing the same, when you are like most people going to work every day despite having other quality ways to spend your time, e.g., reading a great book.
Sure, in the metaphysical sense does anything really matter?
But as a business owner, you don't want your business to die and be replaced by someone else's business due to technical debt. Just because it's hard to quantify the cost of technical debt doesn't mean it isn't real and we should just throw up our hands in defeat.
And lest you think I'm some sort of artisanal code hipster, I spent years building freelance custom web apps in the $1k-$20k budget range, so I know how to fucking ship. Also, I've been the tech lead on a Rails monolith powering a 7-figure revenue startup for 10 years, taking it from Rails 1.2 through Rails 4.2 one version at a time.
Knowing how code rot will happen and how business logic will change is impossible to be sure about, but having some instincts can save a ton of money down the line. I've received thank you notes for architectural decisions and commit messages I wrote years ago and had long since forgotten. Not all businesses will be able to recognize that such value even exists, and the ones that don't are likely to be a shit show that will never be able to attract an upper echelon of developers.
The right attitude and experience about code quality can be a huge competitive advantage.
> Money trumps everything else in capitalism. Getting money means paying your bills today. And even more so than skill, quality and code getting money requires kowtowing and overpromising to someone who currently has money.
That has little to do with what makes development and a lot more to do with capitalism, business, and markets. What this really means is that current business environments don't necessarily value development, but that doesn't change the definition of development. At this point, you're not discussing a good developer, but a person who can hybridize development and business sense. It's a different skillset, perhaps one that's somewhat contradictory to high quality development, even.
There are situations in which there is no money at all, yet you absolutely need good development skills and they are distinguishable (open source). Any given person can be devoted to selling, whether they're coding or weaving baskets, but that doesn't suddenly mean that a core factor of weaving baskets is being able to sell them. It's not. That's a different skill set entirely. It may often not be found side by side.
It's a shame that we are so obsessed with money and selling right now that pure skills seem to have little value to some people, despite the fact that many crucial things nonetheless run off of these core skills...
This argument is equivalent to saying that only applied science has value.
All you say is true. And yet, if you don't get paid for doing open source you're probably spending more time of the week worrying about money than good code.
What do you think about the argument that once you have handled the money topic well enough, then you can worry about quality. I.e. first you make a basket business that earns enough money so you don't ever have to work again. Then you try to improve the process and result of making baskets as a hobby.
Sorry to disappoint. But despite the rare exception here and there most open source development is either paid or quickly forgotten. If I put into google "Linus Torvalds income" the first sentence reads:
"Finnish-American software engineer and hacker Linus Torvalds has as estimated net worth of $150 million and an estimated annual salary of $10 million"
lol, it's true that most development in open source is paid. It's really easy to experience. Just work anywhere where people develop open source or make heavy use of it. But it's really hard to proof to someone who hasn't experienced it since nearly every example and statistic can be doubted. So doubt as much as you want. But if you think there's something worth learning out there, try to experience it and you'll see it's >90% paid work.
It is clear that you have no clue. Probably you think that the existence of "foundations" means that money arrives at the people doing the actual work.
I on the other hand work on a very large open source project.
Second comes qualifying for the money (yes, in real world you get money without having what you are selling, but that's a short-term success). That means getting to ask for money again tomorrow. That is where skill and code come into play. You promised something and now when you are lucky you can deliver 80% of that. Push hard to get there. Not everybody who tries will achieve that much.
And only then comes quality, which means qualifying for money next year becomes cheaper.
If you realize LIFE is that way, suddenly high quality isn't all that important anymore, is it? Quality is a luxury and you must have achieved A LOT to be in a position to just think about quality. And the ohter people (management, sales) are not total idiots. If you dream the high quality dream they are the people who pay your bills.
I am an engineer like you, btw. I was just in the situation already, where I had to pay my bills myself and therefore know what amount of humiliation and sweat is required to get money just for ONE person, me.