this article is incredibly long and rambly, but please enjoy as this asshole struggles to select random items from an array in presumably Javascript for what sounds like a basic crossword app:
At one point, we wanted a command that would print a hundred random lines from a dictionary file. I thought about the problem for a few minutes, and, when thinking failed, tried Googling. I made some false starts using what I could gather, and while I did my thing—programming—Ben told GPT-4 what he wanted and got code that ran perfectly.
Fine: commands like those are notoriously fussy, and everybody looks them up anyway.
ah, the NP-complete problem of just fucking pulling the file into memory (there’s no way this clown was burning a rainforest asking ChatGPT for a memory-optimized way to do this), selecting a random item between 0 and the areay’s length minus 1, and maybe storing that index in a second array if you want to guarantee uniqueness. there’s definitely not literally thousands of libraries for this if you seriously can’t figure it out yourself, hackerman
I returned to the crossword project. Our puzzle generator printed its output in an ugly text format, with lines like
"s""c""a""r""*""k""u""n""i""s""*" "a""r""e""a"
. I wanted to turn output like that into a pretty Web page that allowed me to explore the words in the grid, showing scoring information at a glance. But I knew the task would be tricky: each letter had to be tagged with the words it belonged to, both the across and the down. This was a detailed problem, one that could easily consume the better part of an evening.
fuck it’s convenient that every example this chucklefuck gives of ChatGPT helping is for incredibly well-treaded toy and example code. wonder why that is? (check out the author’s other articles for a hint)
I thought that my brother was a hacker. Like many programmers, I dreamed of breaking into and controlling remote systems. The point wasn’t to cause mayhem—it was to find hidden places and learn hidden things. “My crime is that of curiosity,” goes “The Hacker’s Manifesto,” written in 1986 by Loyd Blankenship. My favorite scene from the 1995 movie “Hackers” is
most of this article is this type of fluffy cringe, almost like it’s written by a shitty advertiser trying and failing to pass themselves off as a relatable techy
I’ve been conducting DevOps and SRE interviews for years now. There’s a huge difference between someone that can copypasta SO code and someone that understands the SO code. LLMs are just another extension of that. GitHub Copilot is great for quickly throwing together an entire Terraform file. Understanding how to construct the project, how to tie it all together, how to test it, and the right things to feed into Copilot requires actually having some skill with the work.
I might hire this person at a very junior level if they exhibited a desire to actually understand what’s going on with the code. Here an LLM can serve as a “mentor” by spitting out code very quickly. Assuming you take the time to understand that code, it can help. If you just commit, push, deploy, you can’t figure out the deeper problems that span files and projects.
To me the only jobs that might not be safe are for executives a good programmer probably doesn’t want to work for.
I think that’s a really fair far-future take. I think the most reasonable approach isn’t knee-jerk in either direction (they’re taking our jobs vs they are no threat). I feel that good programmers of the future are going to take advantage of AI capabilities. Copilot does a great job of quickly writing boilerplate code I could write at a slower rate. That in turn gives me more time to focus on things like chunking the problem into method names it could figure out how to write or just writing that complicated business logic myself. All of that comes from my architecture experience and ability to suss out what stakeholders really want, then deliver a minimum viable solution quickly enough to iterate or deliver. The emphasis becomes a focus on soft skills and systems thinking, which is something I feel can come naturally to good programmers today. Getting soft skills isn’t so easy and that might push a lot of folks out.
No matter what, I feel like a solid programmer is one who knows how to adapt. If you can do that, you can adapt to a future where our code jobs are very different from where they are today. I’m pretty young; I started writing Perl web apps, switched to PHP, did random shit, learned JavaScript, did some Rails, then found my passionate in DevOps/SRE. My selling point pre-leadership was my ability to code, not just write YAML, on top of infra knowledge. I think even in an AI future there’s still an edge or two available, even if it’s just soft skills.
On a related note, if LLMs get good enough to shove is out, the writing will be on the wall and we should have plenty of time to use said LLMs to write killer software for future us before executives grok the change.
I love your rambling responses! You add a lot of detail and you’re talking about a side of code I don’t touch.
I think a safety net for you that will continue to exist your entire lifetime is embedded work for the US government or related contracts. I’ve got buds writing embedded code for defense contracts. Stuff like that will take decades to adopt LLMs because of how contracts work and the security process. I’ve got friends at DHS that just finished a fucking Coldfusion migration. Some friends are writing Ada for bombers. Your skills fit that niche pretty well and it’s stable work. The idea is not to use the newest and greatest but rather test in depth with old setups.
Oh my goodness! I apologize for assuming. I read the wrong thing into your comments.
Do the whims of Silicon Valley greatly affect your market? The most I’ve interacted with non-US markets is running some near-shore consulting with one of the majors (spun up a Mexican firm but the executives wanted to pay local rates for remote US work which is a fucking joke). I also know, should I leave the US, I will have a much lower salary. I’ve hired a fair amount of remote talent in the Americas and India for various jobs; I think a good chunk of that work is the kind that could be replaced by LLMs in the next two decades or so.
US bias. Nothing more. All of the embedded devs I know are from the US. I know a bunch of European security and data folks, so in those contexts I don’t immediately jump to US there. That’s also why I asked the questions I did. I know my market and I’m really curious how it affects you.
I really enjoyed your perspective. Thanks for taking the time to ramble on with it and thanks for not getting mad at yet another US-centric dev! I think you have very reasonable fears. I really hope something someone said gives you enough to chew on for a bit to reduce your anxiety somewhat. We’re all in this together.
Assuming that the current largesse of US defense contracts will survive the LLM-induced collapse of the middle classes is ... a take.
US defense spending is seen as a political holy cow at the moment but its well-paying superstructure is as vulnerable to attacks from the nativist/neo-isolationist right as from the left. Add in a sprinkling of attacks on "woke" corporations and that bomber program is not as safe as you think.
if the capitalists succeed in their omnipresent goal to vastly reduce the perceived value of your labor, you can always write terrible code that kills in one of the most tedious languages ever invented
do these ideas give you comfort
this is an excellent point I haven’t seen before, and it clarifies a lot of the oddness around how these things have been deployed. it’s marketing-oriented development, and it’s being used to paper over the severe limitations in these models
that’s mostly where I’m at too, though I feel like my anxiety has enough reason behind it that I want to actively do something about it — usually something to do with this instance, though a lot of my recent projects (learning a lot more about hardware design languages, planning a community for folks to share their open source work) are deeply influenced by that anxiety too
Do you have anything to else to offer or is your solution to roll over and do nothing? Some of us still have families and networks to support so we can’t just devote all our time to sniping labor on the internet in preparation for the glorious revolution. Given the discussions you have on your instance, I’m kinda disappointed this tepid response is the best you have.
I should have seen this coming.
you have mistaken me for the cartoon socialist in your head
fuck yes. there’s something weirdly exciting about work like that — not only is it a unique set of constraints, but it’s very likely that an uncountable number of people (myself possibly included) have interacted with your code without ever knowing they did
absolitely same. I keep seeing other programmers uncritically fall for poorly written puff pieces like this and essentially do everything they can to replace themselves with an LLM, and the pit drops out of my stomach every time. I’ve never before seen someone misunderstand their own career and supposed expertise so thoroughly that they don’t understand that the only future in that direction is one where they’re doing a much more painful version of the same job (programming against cookie cutter LLM code) for much, much less pay. it’s the kind of goal that seems like it could only have been dreamed up by someone who’s never personally survived poverty, not to mention the damage LLM training is doing to the concept of releasing open source code or even just programming for yourself, since there’s nothing you can do to stop some asshole company from pilfering your code.
To the extent that LLMs actually make programming more “productive”, isn’t the situation analogous to the way the power loom was bad for skilled handweavers whilst making textiles more affordable for everyone else?
I should perhaps say that I’m saying this as someone who is just starting out as a web developer (really chose the right time for that, hah). I try to avoid LLMs and even strictly unnecessary libraries for now because I like learning about how everything works under the hood and want to get an intimate grasp of what I’m doing, but I can also see that ultimately that’s not what people pay you for that and that once you’ve built up sufficient skill to quickly parse LLM output, the demands of the market may make using them unavoidable.
To be honest, I feel as conflicted & anxious about it all as others already mentioned. Maybe I am just too green to fully understand the value that I would eventually bring, but can I really, in good conscience, say that a customer should pay me more when someone else can provide a similar product that’s “good enough” at a much lower price?
Sorry for being another bummer. :(
I’m not sure the power loom analogy works, because power looms are (to my non-weaver knowledge) fit for purpose. if power looms’ output required significant rework by a skilled weaver (being paid significantly less for essentially the same amount of work done more tediously, per my point above), relied on stolen patterns from all of the world’s handweavers, and they were crushingly inefficient to run per woven piece, I seriously doubt history would remember them as a successful invention
unfortunately, we’re living in uniquely awful times, and decades of tech’s strange, manipulated culture have turned many programmers into nihilistic utopians with no ability to think things through on a systemic level. generative AI as a whole is nothing but an underhanded wage reduction tactic, but (by design) our industry doesn’t have the solidarity to fight it in any way that works (see the Writers’ Guild’s successful strike)
huh, explained like that the power loom analogy does much better than I thought in encapsulating this anxiety; at its core, it’s a (very justified) fear that we haven’t learned anything from history and that the loudest and most foolish of our profession are gleefully marching us towards an awful fate
I’ve been doing some reading on the origins of technolibertarianism (though as with all my reading I’m far behind where I’d like to be) and it’s fucking insane the lengths Silicon Valley has gone to in order to make unionization a taboo topic among American tech workers
Totally agree.
IMO a better analogy would be clothing sweatshops rather than the power loom. Same utilitarian effect of textile affordability increases. Same ethical fuckery with exploitation of labour.
Commoditization is a real market force, and yes, it will come for this industry as it has for others.
Personally, I think we need to be much, much more creative and open to understanding ourselves and the potential of the future. It's hard to know specifics, but there is broad domains.
Lately, I've been hacking at home with more hardware, and creating interesting low scale, low energy input systems that help me... garden. Analyzing soil samples, planning plots and low energy irrigation, etc, etc. It's been fun because the work is less about programming in depth and more broad systems thinking. I even have ideas for making a small scale company off this. At that point, purely the programming won't be the bottleneck.
If it helps, as an engineer, take a step back and think about nature and how systems and niches within systems evolve. Nature isn't actually in the business of replacing due to redundancy, it's in the business of compounding dependency via waste resources, and the shifting roles as a result of that. We need to be ready to creatively take our experience, perspective, and energy gradient to new places. It's no different for any other part of nature.
Currently. Though I think that there is a future where adversarial machine learning might be able to greatly increase the cost of training on pilfered data by encoding human generated inputs in a way that runs counter to training algorithms.
https://glaze.cs.uchicago.edu/
Even if there were Glaze/Nightshade for computer programs, it could be reverse-engineered just like any other code obfuscation. This is the difference between code and most other outputs of labor: code is syntactic and formal, allowing for decidable objective analyses.
There's a difference between "can" and "cost". Code is syntactic and formal, true, but what about pseudo code that is perfectly intelligible by a human? There is, afterall, a difference between sharing "compiled" code that is meant to be fed directly into a computer and sharing "conceptual" code that is meant to be contextualized into knowledge. Afterall, isn't "code" just the formalization of language, with a different purpose and trade off?