If one likens coding to carpentry, then enterprise software development at a small company is not building a beautiful carved coffee table, it's more akin to the contents of a farm workshop. I'm talking about shelves and tables and "tools" quickly made from cut-up 2 by 4s, screws, and nails. It works for the scale of a small farm. If something needs improvement, you tack it on or cut away somewhat haphazardly, and thing gets a little uglier and more cumbersome. The marker of skill is how well you can do this in a fixed, short amount of time.
If that farm manages to grow to become a "big farm", then some of those wood constructions are not going to cut it anymore (though some parts still can), and good quality expensive tools/tables will need to be bought. This might require some persuasion when talking to higher ups, because they've been used to cheap stuff up until now. And you may never get thanked for averting a disaster.
If you accept this as the nature of business, then you can move forward. Aim to minimize shit, not maximise perfection. Leave if your management can never see reason.
Or maybe software craftmanship was always dead (and still lives on). Good enough is sometimes perfect, and a good example of that was a HN post today about how the makers of CP/M looked after their customers, and made a beautiful compiler for a new language to build their version 2, but in the end they were beaten by a hacky clone of their software which was then bought by Microsoft, and then you know the rest.
https://news.ycombinator.com/item?id=46426614
But craftmanship lives on as market differentiation, which is how Apple became dominant. It also lives on in critical software where attention to detail is vital or extremely high-value (eg. Linux kernel, cryptography libraries, aerospace/automotive, medtech), basically anything where downtime or incorrect behaviour costs money or lives.
Like anywhere else, incentives determine everything. What really surprises me is that revenues continue to climb. I wrote about this 5 years ago: https://omarabid.com/the-modern-web (time flies!). I guess we haven't hit the breaking point yet?
My concern is that regulation and state-corporate dynamics will fill the gap. Take online hotel booking, for example. The experience is abysmal, and yesterday highlighted it perfectly: Booking's mobile app was completely down (or failed to fetch data), though their web app worked. I had to pull out my laptop just to access my booking.
But there's no real alternative. Booking Holdings bought up nearly everything in the booking space, and what they didn't acquire, Trip.com did (sources: https://en.wikipedia.org/wiki/Trip.com_Group / https://en.wikipedia.org/wiki/Booking_Holdings). The hotel I stayed at has its own reservation system at the same price; but spoiler alert: it doesn't work. It couldn't even get me to the payment processing page.
So everything gets worse, but where else can you go?
No, it's just waiting to be rediscovered--or, as is more common--reinvented.
I must say I do not have high hopes. 20 years in the business and it feels like a constant downward slope.
I miss having fully baked requirements and UI to work with working in waterfall. We still did incremental releases so it still felt like reasonably agile.
I miss requirements all the time, by never talking to the client
I have worked mostly in larger enterprises where there are no "clients" but rather customers. I enjoy talking to customers and seeing how they use the software and hearing about their challenges. But that is much much different than talking to clients.
The agile (pre corruption) and TDD stuff were improvements and did happen in that time frame. More recently, Rust could also be seen as a software quality initiative.
I dunno, some ideas were good, but the agile scrum period was worst. Craftmanship went down significantly, development was all about politics and power play between developers, you felt micromanaged and frequently forced to produce worst code, customers were unhappy and results were crappy expensive unmaintainable software.
There was agile even before Scrum. Extreme Programming was perhaps the beginning, that was early 2000s.
There was something real there before it was relentlessly cargo-culted and turned into a management fad.
I feel like the stakes are never low becasue when you ship crap your getting paged. You'll work weekends or overnights to fix your shoddy code and choices. Yeah the stakes are low like no one really cares if the b2b SaaS is down. But I care because I value my own time. I feel like no one thinks that way.
Also on the topic of the rant, I think to many people just don't give a shit. Idk how they're like that? To many people develop software that aren't computer people.
There's a lot of craftsmanship left out there, but people are distracted by AI and pay more attention to the mediocre apps on their phone because of the frustration they cause.
The need to write good software and care about the details isn't going anywhere. If anything, all the slop is creating a stronger demand.
All analogies fail to describe software precisely because we have shoveled all our problems onto software that we need to trust for everything. It is not furniture. Programmers are not factory workers.
> without regard for the maintenance burden 1, 2, 5, 10 years down the road.
To me software craftsmanship isn't just about the code, it's about engineering use of time.
In general shouldn't knowingly make choices that would result in pain in the future, but if you're increasing the chance of the project not making it to the future, then is that really the better option? Finding out enough information to make the judgement call between long term/far future pain and short term benefits is all part of the craftsmanship.
> I don't blame agile. But I do kind of blame Agile™
(Loving the phrasing here! I think I'm right on board, especially if we're talking Scrum/Scum-ish)
framing the fight for quality as a fight for craftsmanship is a sure fire way to lose both
I find this complaint totally asinine. You can hand-craft software if you like, but cheap is what customers want and that's what they're going to get. Do you spend 10x as much for hand crafted solid wood furniture, or do you buy MDF flat pack? Most people are happy buying cheap stuff from China, and if it doesn't last as long they're happy to replace it.
I just took delivery a few months ago of some handmade solid cherry bookshelves. I would like to never buy cheap MDF furniture again.
Great, tell that to someone making $25/hour.
> I just took delivery a few months ago of some handmade solid cherry bookshelves.
Was the seller of that furniture the number one furniture retailer in the world?
The majority of furniture purchased is flat pack. Which means the majority of furniture produced and sold is flat pack MDF. Saying that you bought something not flat pack means nothing really.
Yes, you very well could have bought a piece of furniture where the maker took the care to sand the wood with his tongue. But if you're looking to design furniture to be produced and sold, you should expect to be designing flat pack MDF.
If you are looking to become as huge and as profitable as possible with furniture, then sure, MDF may be the one true path. But J. Random Small Furniture Builder is unlikely to become that huge regardless of how much MDF they use. Exploring ways to distinguish oneself may be worthwhile.
Serving customers who want non-MDF options can be a perfectly sustainable and profitable — even if smaller — business. There are plenty of small furniture shops doing just that.
[deleted]
with LLMs in a few years software would be a low level thingy that people used to spend hours writing and debugging. like assembly back in the day. software is becoming more and more cheaper to put in place. craftsmanship is in the product and value not in the software itself. we are in an era: adapt or get out ...
except LLMs are completely useless for solving complex problems and proper engineering fundamentals for large projects and that fact has not changed one bit since 2022. They're better and better at CRUD app boilerplate that doesn't go into any detail at all whatsoever because they are using the training data of 1000s of repositories for that, but there simply is not enough training data remotely for anything novel and complicated
> Somewhere along the way, in the midst of the agilification of software, or the software engineer salary gold rush, we forgot about craftsmanship.
the was never “craftsmanship” to begin with