That seems true in a world where we completely stop looking at code. Right now my reality is giant verbose PRs written by agents in Java, and it sucks to review.
52 karma · joined May 26, 2022
That seems true in a world where we completely stop looking at code. Right now my reality is giant verbose PRs written by agents in Java, and it sucks to review.
I would argue that "concepts" actually are more important than ever. Let's take my structured concurrency example. It doesn't matter here exactly what is, but if it ends up being as important as I think it will be, I likely want to write most concurrent code that way going forward.
However, it will likely be years until agents go to it unless deliberately steered in that direction. And if I want to make agents write it, I need to review it, and if I'm going to review, I need to understand it.
I think this is why I'm not pessimistic about the profession, it still feels like what I'm doing and learning matters.
I just upgraded a less important service to Java 27, a few days after its release (several nice features). It's cool how easy it is to upgrade nowadays.
That an agent writes most of the code doesn't mean anything to me here.
My examples are Java because that is the main language where I work.
I've resorted to having a final pass where comments are evaluated separately. This is much more successful than trying to get it to write good comments while writing the code.
New projects get MySQL too because we know it and it works.
Why impose such a limitation on your system when you don't have to by using some other database actually designed for multi user systems (Postgres, MySQL, etc)?
Because in 5-10 years you'll have a Java project that people can still maintain as if it's any other Java project. If you pick Kotlin, that might at that point no longer be a popular language in whatever niche you are in. What used to be the cool Kotlin project is now seen as a burden. See: Groovy, Clojure, Scala. Of course, I recognize that not all projects work on these kinds of timelines, but many do, including most things that I work on.
var items = new HashMap();
Instead of
HashMap items = new HashMap();
That's the point of var. It reduces noise a lot in some situations.
I think that AMD could do it, but they choose not to. If you look at their most recent lineup of cards (various SKUs of 9070 and 9060), they are not so much better than Nvidia at each price point that they are a must buy. They even released an outright bad card a few weeks ago (9060 8 GB). I assume that the rationale is that even if they could somehow dominate the gamer market, that is peanuts compared to the potential in AI.
That you are forced (or at least strongly nudged) to code in a certain way is good because that means that all your web services are at least superificially familiar to all developers at the organization. That special service composed from many libraries? Impossible to work on without significant time investment.
I suppose though that if you are in a domain where you actually would want a library, but all that's on offer are frameworks, and you actually need to compose them, then yes, that seems problematic.
That said, I do kind of miss the programming itself being interesting. I did more difficult programming at university.
I use an LLM to generate ideas, to rubber duck, to get a lead on unknowns, and to generate boilerplate occasionally. So I do everything except replace the coding part because that's what requires the most precision, and LLMs are bad at precision. And yet, people claim massive productivity gains in specifically coding. What am I missing?
In my particular case, they might make some progress on the React component I worked on. I did use ChatGPT myself to get some help with CSS (the part of my current stack that I'm least proficient in). They would make zero progress on our big Java service because it's simply too custom for an LLM to be of much help.
For the database stuff that I also did, it was mainly about reading official docs and testing assumptions and behaviour based on those, something that you would think an LLM would be great at, but the answers I got when I tried weren't really helpful. The issues were too specific to certain versions of dependencies and in some cases, the docs' recommendations were questionable. I then had to convince other devs that my findings were correct and that we could go ahead with the, potentially risky, change.
So no, I don't think programming is dead. Not yet anyway. Who knows what the future might bring.
I had only had fairly low skilled jobs (and lots of unemployment) earlier in life. I even dropped out of college when I was younger, just like you. I definitely graduated at just the right time, but I think that it can be done, and it's not as weird anymore to go back to school when you're older.
I was extremely motivated because I felt like it was my last shot, and I knew that I really enjoyed programming after doing a couple of MOOCs and such.
It reminds me of the peak of self driving car hype bubble 5 (?) years ago. If someone back then had asked if becoming a truck driver was a good idea, ppl like you would have said no because their job would be gone soon. Instead we have more need for truck drivers than ever probably due to all the packages order online. Sure, could a revolutionary self driving truck be released tomorrow that makes some high percentage of all truck drivers lose their job? Sure, I guess, but my bet is that it's not happening.
I look at the generative AI thing the same way. Could a product theoretically be released that makes my job as a dev obsolete over night? Yes, absolutely, but it seems unlikely due how messy the real world is. Other people will make a different call.
I can't preemptively learn every framework that someone might ask you to use in these practical assignments, but I still think that I'm a fairly strong candidate (let's say top 10% of my graduating class).
I ended up at a company that asked more generic (but harder) questions that I could actually answer.