为什么软件没有变得更好?
Why is software not getting better?
一位资深工程师反思软件质量下滑:在“空中更新”普及前,发布需烧录 CD、依赖圈复杂度与 MCDC 单元测试,如今“快速行动、打破常规”让发布带 bug 的软件成为常态。他指出 AI 编程由管理层自上而下推动,开发者明知 bug 与技术债增加仍照做,并质疑用大量 token 换取可接受代码是否值得。
People have complained for years about buggy software. To be honest I think the internet and the ability to update software quickly is partly to blame.
When I first started my career in software engineering, part of my job was to create releases. This involved putting together installers for new versions and burning them onto CDs ready to be sent out to customers.
There was no download mechanism to get updates for the software. The software had to be bug free first time round. The company also produced software for other companies mostly in embedded devices which were hard to update.
To get to this level of quality, we were required to use things like cyclomatic complexity and other static analysis tools as well as MCDC unit tests. Which apart from regulated industries like aviation and military, no one bothers doing any more.
If you shipped software with a critical bug in it, then you ended up with a lot of unhappy customers that had to wait weeks to get the fixed version.
Move Fast and Break Things #
Once “over the air” updates became a thing, we started to see the “move fast and break things” movement take hold. It suddenly became acceptable to release buggy software and then slowly patch it with updates over the next few weeks or months.
This is why tech generally gets a bad name, the public associate it with something that doesn't work.
The majority of software that is produced doesn't need to be bug free. No one is going to die if your companies SaaS app doesn't behave as expected.
Does that mean we shouldn't strive to write better software?
Developers over the last 10 years or so have got used to writing buggy software because companies have been more interested in speed than quality.
Developer Advocacy #
It was usually up to the developers to push back and insist on a certain level of unit test coverage and code quality. I have started at companies before and been the first person to introduce unit tests into an already established project.
That push back from developers has apparently disappeared.
The mandate to use AI has come from above and many developers are using it willingly, even though they know that more bugs are being introduced to the code and tech debt is increasing.
I recently watched an interview with Robert C. Martin aka “Uncle Bob” around his use of agents to build software. Unlike most people who are effectively just vibe coding software, he is at least trying to put together a system that uses concepts such as cyclomatic complexity and mutation testing to wrangle the AI code into something acceptable.
To be honest, if it takes this much work and token spend to produce acceptable code from AI, is it really worth all the effort?
Given we know that AI gets things wrong, shouldn't we be doing more to make sure the code is correct and maintainable? It seems like everyone has given up on good engineering practices and is happy to delegate all their thinking to the slop machine.
Loss of Power #
I am not trying to put all the blame on developers here. In the past, when it was a developer market, we could demand high salaries and dictate how we wanted to build software.
With all the post COVID-19 layoffs and now AI, we don't have the same bargaining power that we used to. Most developers are happy to slop out code if it means they can keep a roof over their heads.
This might just be me being in an “old man yelling at clouds” mood, but I feel sad for what has become of our industry in such a short amount of time.
It will be interesting to see what happens when the AI bubble pops or token cost becomes 10 times more expensive. Will there suddenly be a reversal when we can't use AI to fix the spaghetti code it created any more?
❤️ Picks of the Week #
🛠️ Tools #
Alternatives to MinIO for single-node local S3 - After the company behind MinIO abandoned the project I am glad there are a decent number of suitable alternatives.
Hister: A private search engine for the pages you visit and the files you keep - This looks like a cool project. I wonder if it could be hooked up to LinkWarden where I currently store all my bookmarks.
💻 Programming #
Performance Improvements in .NET 11 - Glad to see that .NET is continuing to improve.
Learning Programming in an Age of LLMs - If you want to learn how to code don't think there are any shortcuts. You still need to write code and mostly likely read a book.
Small programming tricks - There are some good tips in this list. Worth a read.
🤖 AI #
Chatbots and their "Safeguards," Alternative Navigation Apps - I loved the sarcasm in the AI section of this issue.
Dario, Please - AI companies seeking regulation is not what it seems. They are definitely not concerned about humanity. They just want a scapegoat for why they haven't achieved anything useful and to prevent open weight models from competing.
Microsoft exec called AI scraping 'the largest theft of labor in human history' - This exactly. How are so many people OK with this? Individuals have gone to prison for a lot less.
US Military had close call after using AI for hallucinated intelligence report - It won't be AI directly that causes the end of humanity but someone trusting its output or us increasing global warming with all the data centres.
I think you should almost never use AI to write - I agree but take out the “almost”. Never use AI for writing. I would rather read your grammatically incorrect sentence with spelling mistakes than spend time reading something you didn't write.
AI-generated posters don’t have to be horrible - I see these AI generated posters everywhere now. To be honest even the improved ones still have the same generic layout. AI promotes laziness which is why you see the same thing everywhere.
The LLMentalist Effect (2023) - LLMs are statistical illusions, there is no intelligence there.
🏢 Tech Industry #
AWS says it can't restore some data from mideast facilities struck by Iran - Just a reminder to back up your data in multiple places.
PS5 Linux lead quits: "a bunch of noobs using LLMs" that "they don't understand" - “Slop kiddies” reported the last PS5 hypervisor bug to Sony or a bounty so now we won't get PS5 Linux. Slow clap.
🧠 Miscellaneous #
Minimal Phone 2 - This is a cool concept. Looks a bit like a Blackberry but runs Android. Everyone has a different idea of what to include in a minimal phone, so I think running Android is the right thing to do.
👨💻 Latest from me #
I have a new video out! I wrote a few weeks ago about how “GitHub is dead, what's next?”, this video goes over in-depth on how to install ForgeJo so you can move away from GitHub.
🎬 Self-host your own GitHub alternative - This is live on PeerTube and will be officially live on YouTube on Tuesday.
This month is Inktober, so I decided to draw the thumbnail for my video this month. You can find the time-lapse on how I did it on my Patreon as well the blooper reel from this week's video.
💬 Quote of the Week #
“Do one thing and do it well.” Read, study, and practice to become an expert on your subject.
From the book Feck Perfuction by James Victore.
来源:Hacker News · alexhyett.com