888 karma · joined December 6, 2020
I once had a driver pick me up in downtown Seattle, and it turned out to be that he was driving for Uber as a tactic for his entrepreneurial venture developing antimicrobial and hydrophobic coating. He claimed to have applied it to the fishing boat from Deadliest Catch. He was specifically circling downtown to try to pick up someone who could get the ear of someone in Amazon's grocery division that he could pitch to (which I was not). At a red light in a nightmarish seven-way intersection, he took out a square of cheesecloth that had apparently had the coating applied, and attempted to demonstrate its effectiveness by pouring water onto it. It worked, and the water got all over his passenger seat and center console instead while the light turned green and cars behind us honked.
A few months later, Uber tried to match me with that same driver, and I cancelled it and walked instead. I have to imagine that if a guy with that level of high-preparation social ineptitude can stick around in their system, that the number of people making offhand inappropriate moves or remarks must be reasonably high.
You wouldn't call a carpenter using electric tools a "Power Tool Bro". I didn't hear of anybody using autocomplete called an "Intellisense Bro". If a someone worked for a shop and refused to use lithium-ion batteries for religious reasons in favor of their hand-crank drill, they would be less productive, and the shop would be better off hiring an equivalently talented carpenter with a modern skillset and fewer arbitrary hangups. That's the level of absurdity on display with this comparison.
She's just using religion as so many ill-intentioned people do - an appeal to authority to justify behavior she intrinsically wanted to act out anyway, and becoming a burden to others in the process.
The part of software development that AI replaces the most is typing. Professional engineers like to say that software development is more than typing, and the important parts are, but the reality is that until very recently typing was still a huge responsibility of the work by percentage of time spent. If you spent a week planning and thinking and diagramming and arguing, whatever you were building was probably going to be weeks of typing. Now you can spend the week thinking and get the typing part done in a day, immediately freeing up more time to do the parts that are still complicated.
Now, the thinking and planning and architecting parts of the job, the parts that involve maintenance and keeping things running, and predicting the future, are taking up a greater chunk of the time. AI is getting better at supplanting some of this, and at acting as a sounding board echoing feedback cultivated by the attitudes of millions of talented engineers, but judging the results is still the hard part, and the best judgement still (for now) comes from knowing how the machine works under the hood. I often will have an approach in mind, and will ask Claude to do something without showing my hand. If its approach deviates from mine, I can evaluate it the same way I would evaluate any other coworker's approach, and determine if it's an improvement or not. Sometimes I'm right and I correct it to get better results. Sometimes I think I'm right and I correct it, only to run into some issue I didn't anticipate but Claude did. I don't know how I would have developed that intuition without programming fully by hand for 20+ years, and I unfortunately don't have a recommendation for how anybody new to the field can develop it now, but it still seems important.
What I can recommend, how I learned, and what I think hasn't changed about learning, is to build something you want to exist. Something you want for yourself or to share with others. Build an app or a game, build a website, make some software nobody else has. But the advice I would have that might go against some grain here: use the tools available. Functional software is the goal; understanding is the process. Use Claude or Codex, write code by hand with VSCode or Vim, copy-paste some code if you need it, watch a stream of someone building something similar. I think that's the reality of the career now and it's not going away anytime soon.
But: even with these superpowers, you will eventually run into an issue that the AI can't fix or understand, where it butts up against the reality you want from the result. It'll get caught in loops where no matter how you prompt it fixes and breaks and fixes and breaks back and forth in the same ways, and that's where you come in. That's your alpha. Figure out what's going wrong by reading the code, read the docs, ask the AI questions about the code, and learn how to correct it. There's a saying that computers are bicycle for the mind, and AI strengthens this metaphor a lot. A bicycle can amplify each of your steps into ten steps, but that's only valuable if you know where you want to go.
All of that said, I can't see the future, and I think we're early to figuring out where the limits of this tech are. It might turn out to be a step change in how we work, or it might ultimately obliterate most office work as we know it. Maybe everybody on HN will be retired or a tradesman in ten years. What I can say is that programming teaches you how to think and how to solve problems; even if this field is unrecognizable in our lifetimes, those are transferrable skills in work and in life, and there are worse ways to spend your education.
1. If you're not paying for a model, the results will be worse. That sucks but the free access models are just not very good for anything where you need to trust the output, even for basic queries.
2. More important than #1 is access to tool use. If the LLM is just producing a nutritional breakdown from its weights, it's almost always going to be wrong. If the LLM is allowed to break the problem down into deterministic steps, it will do a lot better. In the nutritional breakdown case, an LLM with search + tool access can pretty easily break the problem down:
- Searching the web for a recipe or ingredient breakdown for the food
- Searching the web for nutritional qualities of each ingredient per some volume of the ingredient
- Writing and running a script with e.g. Python that takes in the recipe's projected serving output, the desired serving size, the amount of each ingredient etc, and scales the ingredients to match the desired serving size, and sums the nutritional qualities of the scaled ingredients.
I've tried this specific case with Claude + Gemini for my own purposes and they both handle it very well. The challenge currently is that the models will not always arrive at this approach when provided with an ambiguous prompt; sometimes they will, but sometimes they'll just vomit up a fully autocompleted response from their weights. Being more specific in the prompt or defining a skill that details the intended approach lets you get more useful + deterministic results while still taking advantage of the fuzzy glue that LLMs can provide here between steps.
Same with the classic strawberry r-counting case. IIUC LLMs have trouble with this because of how training data is tokenized, but any LLM will have no trouble farming out to e.g.
> echo -n "strawberry" | grep -o "r" | wc -l
> 3