The essence of this post is about craftsmanship, value, and caring about what you're doing. It's really hard to put this into words. There's certainly a gradient and trade-offs to be made. In most businesses, the priority is to make money. This is not bad. Business owners deserve to make money for their efforts.
It's always been the case that "bean counters" will optimize to increase profits. If you want a superior product, you have to pay for it. Particle board furniture sold at Walmart certainly wont last nearly the same way as hand-crafted pieces by Gomer Bolstrood. The contrast is dramatic. Mass produced disposable products vs one-of-a-kind products built with a high attention to detail.
The idea of paying more for quality doesn't seem to apply to software. Maybe I'm romanticizing the past, but I believe it did once. I believe that the software developers of yore cared more about their craft than most of the ones employed today. I think they had to. If a product didn't sell, it was pulled from the shelves. It would be dropped by distributors.
Somewhere along the way it's become more important to prioritize minimal time to market, and minimal viable products. People who care about software quality still exist, but they are slowly being squeezed out by others who don't. Profit, growth, and market share have become more important than providing real value to users.
I think most big tech companies started with a tech centered culture and gradually moved towards a finance/PM centered culture, which makes sense, especially after they went IPO.
From what I recall, David Cutler was quoted in "Showstoppers" about DEC having an engineering culture when he joined but he got discontented after a few years (when his team shipped VMS) because it was too bloated.
Microsoft could be a bit different though. I remember reading from a book that Bill Gates wanted to have PMs control projects, which caused a lot of conflict. I do not remember the timeline, but it must be before Win NT.
So the best bet is to go in early, stay for 5-10 years until the environment starts to rot and you can exercise all of your options, profit, and then jump to the next. The more senior you are, the more control you have, the happier you are. David Cutler is a great example. He did stay in Microsoft but he managed to be a hand-on.
I still am trying to decide what's a better balance.
If you're too tech/engineering oriented you have a higher chance of not becoming/continuing as a viable business (DEC was a perfect example of this).
Swing too far the other way and the tech suffers and in theory you open yourself up to better alternatives or it becomes too burdensome to innovate as tech debt builds and the PMs refuse to deal with it until it becomes so acute that it drives away your better talent. Worse is that by this time the original PMs have moved on under the impression they did amazing and somebody else is cleaning up the mess.
In theory with scrum/agile, it's the engineers who pick up the backlog and work on what they feel is important to move forward (be it features, security, tech debt, etc), but in practice the PMs usually have the control.
It was different where you were but the billG and early Ballmer years devs had a lot of power. Like to the point where PMs had training on "soft power" or more bluntly how to get a dev who doesn't want to do your feature to implement how you designed. A good dev certainly wasn't going to get into any trouble refusing a "brain dead" feature in those years.
> Mass produced disposable products vs one-of-a-kind products built with a high attention to detail.
You lost me here. Probably because mass produced usually means much more thought went into the product rather than a reduced run product. I personally have a lot of respect for mass produced stuff, especially the one well designed.
Similarly in software. When a software product is well crafted/engineered, it has less defects, it is easier to understand and modify, saving a lot of time and effort. I do not see that anymore. I see a lot of smart young engineers but they are managed in a way in which the craft doesn't matter and what matters is how many story points you do.
outside of instiutions of granduer and programming greats like bell labs, eriksson, and so forth, no, programming has been TERRIBLE and has gotten a lot better.
Version control, documentation, language capabilities are all better than they were 10 or 20 years ago
Fewer people are writing horrible applications in VBx and Access, more people are writing things with good fundementals.
So - in many ways it's easier than ever to write "good" software.
agreed. we interact with so many different types of software and I presume like me, we designate a confidence score of how things will work out because there's so many unknown quantities out there. Those little thoughts you have while an app/page is doing what it's doing, wondering whether it even works as it says in the first place.
I place value on grammar but appreciate in the web today that surely around half of English words in it are ESL (while ignoring AI). And that's fine, it's a human thing- not everyone was taught English or has known it a long time, or has dyslexia etc etc.
I guess in the end, allow end users to have full confidence in you in all ways possible.
It's always been the case that "bean counters" will optimize to increase profits. If you want a superior product, you have to pay for it. Particle board furniture sold at Walmart certainly wont last nearly the same way as hand-crafted pieces by Gomer Bolstrood. The contrast is dramatic. Mass produced disposable products vs one-of-a-kind products built with a high attention to detail.
The idea of paying more for quality doesn't seem to apply to software. Maybe I'm romanticizing the past, but I believe it did once. I believe that the software developers of yore cared more about their craft than most of the ones employed today. I think they had to. If a product didn't sell, it was pulled from the shelves. It would be dropped by distributors.
Somewhere along the way it's become more important to prioritize minimal time to market, and minimal viable products. People who care about software quality still exist, but they are slowly being squeezed out by others who don't. Profit, growth, and market share have become more important than providing real value to users.