Yes coorporate “ship as fast as possible” is draining, but that doesn’t mean LLC coding isn’t also to blame.
The difference between corporate salaried programming and freelance programming is who is on the hook in a direct sense for the bug the LLM introduced, or for maintaining the massive pile of code or the cognitive burden of ownership.
My experience of freelancing is that most of the people I am competing against for the work care less about the code (and things like quality, security, appropriateness, user burden), are faster, are happy to nickle-and-dime the bill, will charge more to fix their own bugs, churn out meaningless requirements specs that they cannot stick to, and rely on lack of client knowledge to get through.
So there has always been a problem of competing against the slapdash; they always win the quote. I care about longer-term maintainability, cost control and quality, and I lose out because of it. (I'm often asked to maintain or finish the work of people who beat me to the quote and then failed; nowadays I say no.)
The problem is, those people now use LLMs. For the immediate future, LLMs may actually be improving their output, certainly at the prototype stage, and they will now be including one-shot, vibe-coded demos with their quotes.
So what is a freelancer who still has a sense of ethics to do?
The long bet is that those people who do not care for quality will still be disappointing their clients, but how do you avoid using LLMs while still getting, at least, back to where you were in competing with them?
I’m sure LLMs have only made it worse, possibly pushing it over an edge where hand coding as a freelancer is not viable. I do not know.
Personally, I tell myself that we’re in the lowest of the low at the moment. Either AI will get substantially better, or it will get substantially worse. The amount of debt the industry is loaded up with is not sustainable. Something is going to have to crack. I expect in another 2 years for things to “settle down” on some side of the fence, although which side I do not know.
My quipy advice though is to build something for yourself. Be the boss that doesn’t require AI. We need more builders behind products, more indie products built because they’re cool and the founder is passionate about the problem; not more business types and cash grabs.
That’s all easier said than done though I know.
This! Groups with strong software skills (like HN) miss how LLMs unblock people who previously were unable to build what they wanted because they lacked the software skills.
I know an ME at work who have begged software folks for a year to build specific software he wants and was getting a mix of "we are too busy", "it does not work this way" and quick prototypes that were not quite what he wanted. Then he spent his free cycles with Claude building what he wanted. It took some time and some iterations and it may be ugly under the hood, but he wowed many folks with different types of demos of our system. The view he presented resonated with many users. And he feels empowered how that he can build tools he wants to try himself and do some projects that before he had to beg for, himself.
The software is being disrupted and disruptions are painful. But maintaining the status quo of several big tech names controlling everything we do on most electronic devices and optimizing for the doomscrolling time is not a worthy goal either. My 2c.
That isn't me. I have the software skills. The problem is not lack of ability building complex stuff from scratch, I do it over and over again, and I have had my own products in the past.
The problem is that LLMs do not actually improve the psychology of sustainable lone freelancing, which is more burdened with the problem of actually owning the entire problem and its consequences than someone vibe-coding their fun ideas in the lunchtime safety of their salaried job or even a single developer within a corporate team setting (because they can quit and walk away when they hate it). If you're still getting paid as you fix it when it breaks after deployment, you're in a different world; it doesn't matter to me how empowering LLMs are in that context!
When you are up against people who are bluffing/bodging, or small agencies who think coding is just a little step up from web design, or over-extended hobby coders working in the evenings, LLMs have a very different set of impacts on your life. I can't just run an experiment with some LLM code and roll it out, because I have to face the customer directly and because nobody is going to pay me to fix it; I am not on a salary that allows that kind of experimentation.
So I am left trying to work out how to use LLMs to catch up with the above people who are, without losing control.
The issue now is that LLMs increase the blast radius. Before it was one person lighting a firecracker. Now it's one person setting fire to the fireworks factory. For example, the LLM exposes the ME's tools and internal company data to the Internet.
I do not agree to that. Being able to make computers do your bidding is a very powerful skill, but is not universal. Software is a small part of the real world. If LLMs help non-software types tinker and try their own ideas more effectively, vive les LLM! If some folks who write CRUD apps or ad distribution algorithms feel threatened by LLMs, ... well, that is a trade worth taking. My 2c.
For example in years gone by, the ME may have requested data and would have been provided a weekly SQL dump of relevant data in CSV format. No harm if that data is becomes corrupted as it will be replaced in a couple days time.
But now, the ME can prompt the LLM. The LLM may search the company wiki, emails, Sharepoint servers, discover some AWS credentials, and directly access whatever environments those credentials allow, perhaps the production systems. The ME didn't know to tell the LLM to not do this. The ME asked for "n", and the LLM went off and did a bunch of stuff to accomplish "n". Huge harm if production data becomes corrupted, tables modified, etc.
"User asks for the wrong thing, LLMs corrupts production data" -- fair, do not do this, ME, SE or anyone else.
But I am not talking about safety or enterprise critical systems. In those systems a random SE also does not have the skills to comply with implied guardrails and should not have the authority to do damage. Those systems have explicit, enforced guardrails that apply to every request.
I am talking about prototyping and personal projects. We let softwies use a kitchen knife to cut beans and bread without a licensed ME supervision despite the fact that knives can (and do) cause a lot of damage. In the same vein we should let everyone use LLMs as just another tool and set their own safety vs functionality constraints.
If people feel that LLMs are so dangerous that they require specific licensing like firearms, explosives, etc. they should advocate for such licensing. But it will be a hard sell. My 2c.
I sympathise with you. I do feel that consultancy and freelance had always had this issue where bad practices in client systems introduced by careless people ended in your shores when clients phone you asking for help. This used to happen with poorly maintained codebases or broken implemented projects done by competitors. Most potential customers are likely to be past or future victims of careless rivals of yours. Is it sustainable for you to ignore past customers that were victims of careless rivals?
I am not judging here just curious about your thoughts on this.
For example, I collaborated together with an agency that was working on a popular regional banking app. I was on another project with them and at one point decided to check out what they were doing.
It was a clusterfuck, to say the least. Four developers, four different architectures in the same codebase. One doesn't really understand the others, so he just sticks to his part.
The seams between the ownership parts are full of hacks. Concurrency issues are dealt with via hacks, just make things global and poll to check them. Navigation issues were solved by basically just reseting the app back to homescreen. Testing wasn't really a thing, and the tests that were there were mostly broken ages ago, and nobody cared enough to fix them.
Product didn't care much, designers would prototype a feature, then devs would implement it and wait until the backend is done, then fix things because they never really aligned on the specs. Sometimes, there would be no design review or QA and they would just ship, while sometimes the product person would jump in and test something because it's "an important feature".
Then I got asked to collab with them on another project. Huge customer, huge project, existing codebase. The codebase was so bad I just wrote it from scratch. It was Java written like it's C++. Backend was python code, not updated in years, quadratic scaling everywhere. At one point, the inital GET request was taking over 3 minutes. I took a look and ofc, they didn't even use indexes in the DB.
For these environments, AI coding will just scale up the shit they have, but also allow the small amount of people who might care to deal with this mess and fix it up much much faster than they could before.
I think in these contexts AI has an overall positive effect, because it's a bit like having a competent developer that can solve technical debt, albeit in a narrow form.
So I think that software will be better in a certain way due to AI, because even a terrible developer can ask AI to identify the bottlenecks and solve them.
The downside of blindly using AI in software development is that the software becomes poorly defined. AI-generated logic can be arbitrary, and as the codebase grows, more rules and assumptions become unclear.
The root cause of the issue is not the bottlenecks or the ability to identify them. It’s about caring about doing a good job. Because once you start caring, you will need to exercise judgment. Better or worse only matters when you have goals.
This is one reason we have so much slop with AI. The cost of the journey has lessened, but you still need to have a destination and be willing to appreciate the journey to get there. Without, it’s just endless drifting.
If you're looking for a decent job with even an ounce of creativity then an agency/consultancy shop is rarely the place you want to be and I can't see it getting any better.
We went heavy on AI at my place of work, like many did, but not really to the level of being AI-pilled and orchestrating dozens of agents and shit like that. It's still a force multiplier if you just use AI to walk through something one task at a time and use the spare time in between to collaborate on bigger picture stuff and think a bit beyond the code alone.
And in our twice-yearly self-improvement reports, we have to write how we can use AI further. To reach grade 4/4, you need to "trust" the AI.
Before you used to sometimes having more tech savy customers put out a VB or Delphi click demo over an weekend kind of effort, and then complain why is the delivery so expensive.
Now they do the same with AI agents.
And then people still think their developer jobs are safe.
From my experience, most developers are actually very anxious and scared about their future.
(i.e. the ability to copy existing things does not obsolete the need to be able to make new things)
Likewise since digital photography became common, most photography shops closed, those that are around usually barely survive with services like photos for government official documents.
Events photography is also a niche nowadays, as the organisers then sample the photos done by guests on their mobile phones. Very few professional photographers still get such gigs.
However in many forums and blogposts still looks like that the "only happens to others" mentality is quite prevalent.
I'm not sure how much that translates in other countries where protections for workers are stronger and companies have different operating models. Not to say it's without trade-offs, you might feel safer over in Europe but you're never gonna see US-style compensation, and the concept of becoming a millionaire (and a new startup founder with ex-FAANG credentials) because you joined a startup at the right time is practically non-existent.
I’m glad I’m not just a software programmer.
Same thing happened 25 years ago when most engineers were doing component level work on expensive bespoke hardware, which was all replaced over 10 or so years with COTS.
Technology is a convenient escape goat and a lot of glue-code gigs were made possible by the market distortions I mentioned. But I do think a big correction is taking place and we may have passed the high water mark of employment in software development. Especially cushy jobs being overpaid to configure frameworks, as this sort of work is proving quite tractable for LLMs.
I do think there will be more opportunities in high skill software engineering created by the new tooling on both sides - demand for building and maintaining automated systems as well as dealing with the consequences security, reliability, etc, wise. At this level the industry has been short staffed for several years and that trend should intensify I believe. There is lots of money to be made in being very knowledgeable on fundamentals and detail oriented. That has been true for a while and it seems to me that it will be only more so for the foreseeable future.
This is all going to end very badly--or very well, if you understand this basic rule of markets, which many managerial types don't.
'Move fast and break things' is the ultimate Silicon Valley motto.
On one hand you have AI enthusiasts who are shipping more than they ever have, they are super excited about being able to use the models and build everything they've ever wanted to. Utopia, amazing.
The other side is this complete, absolute disconnect from the job function, absolute dissatisfaction, empty feeling where the whole world is burning.
The burnouts are employees who are being asked to produce 10x the output, do their own project management, design, QA, devops, customer development, work long hours to make up for the gap in how much executives think AI boosts productivity and how much it actually does, and for 0.05% equity at best.
In my day job I have 30 different instances of the coding agent all running simultaneously and it is still not enough to do all that is asked, while simultaneously doing all of the human interaction and do things previously delegated to the project managers they fired. Everything gets shipped half finished before being put on the next hot thing.
At work, everything is chaotic, the people who make the key decisions do not understand their consequences, and the AI allows this chaos to happen much faster. On top of that, meaningless restrictions, for example only the managers are allowed to use the AI to search for information on SharePoint, the developers are only allowed to use it inside of their IDEs.
Ironically, it would be possible to use the AI to do things much better in my company. For example, there is a key component that is full of bugs, it would be much better to throw it away and vibecode a replacement in one week. But that's not going to happen, because someone very important in the company management has approved the purchase of that component. So instead, the remaining parts of the system must be tweaked to accommodate for its bugs... these days with the help of AI. It does not help that AI writes code, if humans make spaghetti architecture.
Entrepreneurs currently are in heaven, and tinkerers are in hell.
I just one shot a plugin for my wife's sketchup(the ability to easily export 2D from sketchup) in Ruby. I don't even know what Ruby looks like.
Simultaneously, I am fine tuning my mail setup(FreeBSD/postfix/dovecot/OpenDKIM/etc) using ChatGPT and Claude.
I set it up long before these AI things was a thing... But I am loving that I can take my rickety server held together by duct tape(though I had done things "right") STRONG, simply because it frees me from tedious, tedious shell scripting. I can focus my energy on that fun shit, not trying to remember the shell dialect I am currently employing...
AI lets me flesh out both hardware and software side projects quickly that I never had time for. Most of them are experiments that won't be shared.
It's nice to have Codex/Claude whip up an SPI DMA driver while I'm doing something more fun, for example.
I consider myself a professional. I lean towards understanding problems, making sure that they're fixed once and for all, and being able to foresee issues that the users will encounter and that product cannot see. And while I enjoy coding, code is secondary to all this. Yet I'm in Hell.
We're losing our ability (and time) to understand problems, we prefer churning out patches fast than actually fixing them, we delegate meaningful choices to an AI that has no ability to predict issues, we remove the opportunity to review and we end up leaving testing to the end user. As far as I can judge, we have stopped building products and are now shipping glorified demos.
Also, I can't speak for other products, but on the type of features I work on, AI is blatantly incompetent, but our C-suite just refuses to believe it, assuring us that it's just us having difficulties with the transition.
I do chat with the web interfaces of LLMs quite a bit as my workflow. I’m always baffled by how rarely it arrives at the correct solution.
I pose a question with code snippets, it gives me some incorrect answer. I pose a better question, and it gives me another wrong answer. Wash rinse repeat several times; not until the LLM gets the right answer, but until I pose the question specific enough that I can answer it myself.
I do find this loop of question refinement quite beneficial, but man it makes me terrified of vibe coded applications. 9/10 times the LLM doesn’t even get in the ballpark of the problem, let alone the solution.
The same comparison could be said the other way around: there are entrepreneurs, who care deeply about the product, inside and out; and scammers, who don’t care about the problem itself or the beauty of a a neat solution, but only the sales of the end product.
Entrepreneurs currently are in hell, and a scammers are in heaven.
I don’t think either is more apt or more offensive, they just appeal to whichever side of the fence your on.
I've always though that about tinkering as in "being in love to work with inner working of things and understanding the internals, mastering stuff". Nothing pejorative.
More in line with your definition would be artisan or craftsman; although fwiw craftsman can have a negative slant in modern (American) English as some people use it in lieu of blue-collar workers.
You would not want a surgeon who says that they’ve tinkered around with surgery. You would not want a pilot who says they’re tinkered around with piloting.
Synonyms are quite literally beginner; dilettante; novice; pretender; uninitiate.
For example from the original analogy, if you told an entrepreneur that because they didn’t use AI, they were not an entrepreneur, but instead “unskilled” or a “beginner”, that would be disparaging; pejorative.
I think we are seeing bloat accelerating and the boom will eventually go bust.
My hope is that from the ashes of the current boom/bust cycle we might actually get "software engineering" once the dust settles and society catches up with technology in terms of culture, regulations, education etc.
Software engineering as we knew it is not coming back, except maybe for very niche fields and your own crafting.
Many other engineering fields have experienced this change long ago, where the majority of the "craft" is done by algorithms. Think chip design, aerospace, automotive, structural engineering, material design.
Their engineering is now focused on higher level design (and even that, less in some cases), and verification.
Programmers are not a special species, immune from this trend. Heck, we are the ones who did it to the other fields, and so it is quite amusing that we're not crying when it is our turn.
You can't ship faster than you can comprehend, unless you stop caring about comprehension.
Up until the last year the best developers were generally those who valued comprehension and wanted to really understand the libraries, code and infrastructure of their projects because that comprehension was what led to quality software.
Those who didn't care tended to ship buggy crap and weren't great devs.
In my experience those who didn't really care about deeply understanding the systems they were working on are loving AI. But those who did care are now literally unable comprehend the state of the codebase and are being forced to work in a way that's extremely unnatural to them.
I say this because I've personally struggled with this over the last year as I've was one of those people who spent a lot of time building comprehensive mental models for the systems I worked on. Now I just assume the AI understands and just do what I need to do to get whatever functionality I'm working on over the line. I don't like it and I've lost all technical interest in coding at this point, but it is what it is ultimately. Coding is no longer about comprehension, it's just about asking Claude to do something.
That is the best thing I’ve read on this topic in a while.
Of course you can. "You can't ship a nuclear aircraft carrier because no one human comprehends it all." Again, obviously wrong. Humans have been shipping systems that no one person understands for a long time. If it all had to fit in one human's brain, it would quickly stunt the growth of civilization.
The fact that AI agents are really fast at generating code suddenly moves the bottleneck to the review step. The fact that AI agents are great at attacking computer systems moves the bottleneck to log analysis and triage. Neither of these are going to block forward progress for long. AI agents have to be reading the logs, because there are not enough human eyeballs to keep up. AI agents will be reviewing code soon enough, and they already are in high performing organizations.
Systems of humans have been shipping systems that no one persons can understand. Take the nuclear aircraft, there’s no part on it that you can’t find someone that is accountable for that part. That is why we can still build them and improve on the design.
... or never started caring about comprehension. In which case you are primary audience for the con trick of so-called AI.
If you don't have a clear mission to pursue with your tools, dissatisfaction is the next mandatory stop on your journey. You can change your tools as often as you want. If the mission is wrong it won't matter.
AI might be unique in that it can force a business into an inevitable failure state much faster than it would have experienced otherwise. From the perspective of long term economic activity, this might actually be a good thing. Most businesses will never be successful and this technology seems to be quite good at eliminating any ambiguity regarding that fact.
The real thing that is being tested here is the competence, discipline and focus of leadership. Executing well on AI in a team setting takes a lot of diplomacy and mentorship to get the nervous energy dealt with properly. Many failure modes with AI look like one lunatic employee going mad with a codex/claude subscription and slowly dragging everyone else into the cartoon fight dustball.
I had a meeting yesterday regarding deploying custom enterprise chatbot for a client wherein everyone was practically yelling over each other. We unanimously considered it an extremely productive call despite the chaos. I cannot imagine what is happening elsewhere. I like to believe the team I am working with is one of the better ones.
The real tragedy is the offer is false.
I get that there’s cognitive debt. Some just seem to never even pay interest or get a basic understanding of the domain model.
My suspicion is that these people were always lazy programmers, but now they can take the laziness to a point where, after weeks of working on a project, they don’t get the basic vocabulary right.
I just want to say: #notallvibecoders
It's like Bible study, everyone studies the same Bible, but everyone wants to have their own highlights and notes.
Some might say to use comments, but my Monday morning chain-of-thought doesn't belong in a comment.
I want a way to do literate coding. I want to interleave writings, and drawings, and editable code snippets that point to actual code in the code base -- and I want to see when those code snippets are stale, or have been edited by other developers (or agents).
I want a way to build up some artifact of my understanding that I control, that exists primarily to aid my understanding, and isn't constantly shifting as a thousand LLMs pass through the actual codebase changing everything.
The code used to be the canvas of the programmer. Now programmers have no canvas. They need a canvas. They can't understand things without a canvas to hold their thoughts.
They have lost money for the last two quarters, customer satisfaction is at an all time low, staff morale is gone, defects are piled up, costs are escalating on tokens and cloud, nothing is getting done but everyone thinks it is.
Let it burn.
We need a total reset. The entire market is overblown, overhyped and sells things nobody needs. Layers and layers of stupid to get nothing done. It’s an extraction economy. I’ve seen people replace simple stuff like a spreadsheet with a cloud hosted vibe coded turd. What the fuck is wrong with people?!? Have we collectively forgotten simple and elegant solutions?
It seems to me that a big bust is about to follow the 15 year boom that started out as "web 2.0" and saw the rise of web app framework, "front end" development, "x as a service", start ups "pivoting" to software tooling creating bloat to tackle problems created by bloat etc.
A lot of jobs will be removed from the tech industry, I think. But the work in software development will be more interesting 5/10 years from now than it is now. Paid more in line with the rest of the economy and thus not attracting so many uninterested actors, and more aligned with market demand instead of driven by a labor oligopsony, held more to account once regulation catches up with technology etc. I think we might actually get "software engineering" after this.
Suit up and brace yourself is all I can say. We should all be concerned in protecting our communities from the adjustment. Not in an doomerist way but you know prepare to weather a storm. I think it will be worse than 2008. But I also think that the next boom will be very very interesting and with a lot of great opportunities to advance humanity and technology.
The next turn of the spiral will always be higher and wider.
So there will always be value to be made and markets to serve.
There are many things which benefit from being digital, which aren't digitized enough. Usually this means third parties are making a lot of money by offering a platform until digitization happens.
If you sell any product or service to the public, these are generally the steps you go through to benefit from digitization:
1. No digital presence at all.
2. Digital presence through a third party which takes a 15%-25% cut of sales.
3. Digital presence through a SaaS which has a monthly fee.
4. Digital presence which you own yourself.
Step 3 and 4 are still very underserved markets, where customers could make massive savings or sales increase. And those who offer these solutions will profit.
My favourite artist is dead and I have CDs.
Do you also understand that most people fucking hate to use computers? The only reason normal people use computers so much and even have their entire careers in front of computers is that those machines can perform tasks extremely efficiently.
In French a computer is called "an organizer". In Swedish it's called a "data machine". And with the Internet, it's also a communicator.
If you run a business, would you like to compute everything in your head and organize all your things in filing cabinets and have all your data on papers everywhere?
Just think, if they can sell your a virtual worker that can compete with human employees in your industry/niche, they would be a few steps away from being your DIRECT competitor or at the very least selling those same workers to someone else.
1) the typical (non-Mac) PC architecture beige box isn't really ready for this; it's starting to change a bit, the new Nvidia laptop RTX chips might change it a little, and maybe the Ryzen AI/Strix Halo stuff will catch up, but I suspect the lack of unified VRAM in boring corporate machines is holding back routine corporate experimentation (since most corporate machines also have bare minimum GPUs)
2) frankly, the Apple Silicon architecture isn't truly ready for it either! Even with unified VRAM, memory bandwidth is limiting, and the processing power of the GPU holds back prompt processing for things like document analysis. So far the MoE models and the really small footprint dense models are lacking somewhat, though you can use them for some things (and the Mac is a much better pre-existing-machine playground for early experiments).
3) perhaps more importantly, the apparent progress of the cloud LLMs has persuaded corporate customers that what they are aiming for is increasing delegation rather than increasing developer capability (the former does not automatically lead to the latter)
The first two will be fixed.
Thing is that's the goal (owners/management), not an unwanted side effect (programmers perspective). You can't get rid of workers if you're still dependent on their thinking. This pain is seen as a necessary step towards the promised land of profitability without pesky salaries, demands for foosball tables and RSUs.
This will get pushed by the powers that be...code base quality & people's feelings be damned.
Brave new world...hold on.
If we're looking for a silver lining, AI is an equalizer and creates competition among the mediocre, driving salaries down. It's not all bad.
It's a significantly harder career, but less automatable.
so.. What do you call a doctor who failed out of med school? A software dev?