AI and Programming Jobs

I recently argued with someone about whether the Great Recession or the current time is a worse period for people trying to enter the job market as software developers. She was positive that the Great Recession was worse, citing the overall unemployment rate of 9% compared to the current unemployment rate of 5.8%. However, that says nothing about tech specifically or new grads. At the height of the recession, workers with a degree (any degree) working in computer/math occupations had an unemployment rate of only around 5%. 

Given the gap between new grad unemployment and unemployment overall was about 1.7% in new grads', I'd extrapolate that it was likely around 3.3% for new grads. 

Let's come to today! Computer science has the 7th highest unemployment rate for new graduates at 6.1%, with computer engineering at 7.5% (sometimes this major is similar to computer science, sometimes it's more akin to electrical engineering, depending on the school). Clearly, new grads are faring worse!

Why

Here's a quick story time: I graduated in the spring of 2010, but I actually interviewed for jobs in the fall of 2009, which was a particularly challenging time to be job searching. I was about to earn an industrial engineering degree, had approximately 1.5 years of work experience, and had a very middling GPA. Even with that, I was able to go up to Home Depot in the career fair, ask what they were open to hiring ISyEs for, and, when they said "IT Developer," say "I don't know how to code very well," and have the response be "we'll teach you!" I got the job after a single conversational interview with a director, during which we just talked about running (I had just completed my first marathon). Getting a job after a single interview is not something that happens today. First, coding boot camps began to appear around February 2012. While I'm not a fan of many boot camps for several reasons, I'm pleased that people who thought they weren't capable have entered the market. However, the number of boot camps (and their graduates) grew at a pace that didn't match the growth of entry-level jobs. And they were now competing with CS students. Suddenly, getting an entry-level job becomes much harder for everyone. The status quo continued in this manner (with increasing numbers of entry-level candidates) until very recently. Even before the rise of AI, companies were finding it easier to hire senior developers due to constant layoffs. Because of this, many companies adopted the attitude of "Why hire someone I have to train when I could hire someone who knows what they are doing?" which I understand entirely from an individual perspective. However, it will lead to the long-term decline of the industry if people can't enter. So, even before the rise of AI, getting a job as a new graduate was becoming increasingly difficult.

The Rise of AI

Then, here comes AI. Reading any report about how great AI will be for developers and how easy it will make our jobs ignores how we started. Consider the post My AI Skeptic Friends Are Nuts. The author talks about how anyone talking about how AI code going straight to production is wild because, OF COURSE, you'd still be responsible for reviewing it! Valid. But how do you get to that point? An entry-level developer can't just look at code and tell whether it's production-ready. That takes time to build up that skill, and plenty of us miss errors when reviewing, even with years of experience.

You can also not learn that just by reading code, which, in this potential future, is all you'll be doing. An engineer I know said that he was excited about all this, and our jobs would change, but we'd just be more focused on quality. He then described the job of QA. QA is a job that companies in the tech industry have consistently devalued to a point where most companies don't have any QA and expect their devs to do that work (which really ends up amounting to writing automated tests and maybe doing some manual tests if it's a prominent feature). This magical future means I'm transitioning from a job I enjoy to something I'm not particularly skilled at (QA is a skill that most developers don't possess) and also switching to something that my company has already indicated they don't value. And also, this requires experience. I keep asking, "But how do people gain experience to be able to review AI code since all of us require boring, repetitive work to learn?" No one has answered this question, and it keeps getting deflected. Companies hire junior developers for what senior and experienced professionals generally consider "boring work." As companies increasingly push AI onto developers, the most mundane tasks are the easiest for automation. But without learning from that, how do they get to the enjoyable work?

Finding A Balance

There's a way to use AI to help us with our jobs without replacing anyone or replacing junior developers. However, it would require care, and after witnessing hundreds of mass layoffs at profitable companies, the care for people is not as strong as it once was. I'm not an AI boomer, but I use Copilot in my editor (still using DoomEmacs), and it's nice when I need scaffolding for something, and it just does it, allowing me to go back and correct it. However, it often comes up with methods that don't exist. And sometimes, they fool me because they resemble methods that do exist, and I think I must have missed something. And I've been working with Rails for 12 years. People should be more cautious than they currently are, but I don't see that happening. In the meantime, I'm starting to plan for what I'll do when my job becomes something I don't enjoy, which looks like it'll come sooner than I wish.

Asking Questions

I've been thinking about this for a while, but keep not actually writing this post. One of the biggest mistakes I see juniors make is not to ask questions when needed for fear of looking like they don't know what they are doing. Granted, part of that is the way senior developers often react to questions. April Wensel wrote a fantastic article last August about the toxic tone that is prevalent in tech. So two points here:

  1. Senior devs should all read that article and consider more carefully how they talk to junior devs (or any other person for that matter). I'm not picking on anyone - I have definitely been guilty of this as well. However, being able to explain concepts plainly and empathetically shows your knowledge more than making someone feel dumb because they don't also have that knowledge.
  2. Junior devs need to make sure to timebox themselves. Give yourself a chance to do some googling, see if you can find an answer to your question on your own. However, after that first 30 minutes/hour, you should bring your question to someone else. Ideally, you have someone that you can approach who will answer your question compassionately. Make sure you give them all the information you have and the attempts you have already made. This will help avoid feeling like you are getting repetitive information.

Oh My Zsh!

The terminal is fun. And it should also look fun (and be functional). I’ve been using Robby Russell’s Oh My Zsh for years now, but it still surprises me when people haven’t heard of it.

I’m not going to go into a ton of detail as to why you should use it. Here are a few great posts that already do that.

Nope, I’m mostly going to talk about how I have been adding a series of increasingly ridiculous emojis to my prompt. Why? Because if I am having a bad day, dammit if a 💩 doesn’t make me smile a bit. Right now I have a rainbow if I have a clean git repo, but I’m going to add a unicorn as soon as I can update my work computer.

There are so many awesome, fun themes to use depending on your workflow. I was using a slightly modified bullet-train:

But then today, I decided it was taking up too much space and went back to an old standby: crunch. I modified it just a bit to change the icons (💩) and also to just display the current folder instead of the whole path. Though I’m sure the whole path can be useful to most people, my directory paths can sometimes get long and ridiculous, so generally a folder name does in a pinch. If I need to confirm, there’s always pwd.

Try zsh. It has some other sweet features that are all useful, but my favorite thing is the themes and how much easier they make my day to day.

Some Thoughts On Soylent

jenlovestheweb:

I’ve gotten a variety of reactions when I’ve told people that I drink Soylent. Usually it’s gentle mocking or ‘BUT WHAT DOES IT TASTE LIKE???’. Both of these reactions make sense… on some level, I think I’m a bit crazy for drinking it. On the other hand, it saves me so much time. I currently drink Soylent for only about 8-10 meals per week, generally breakfast and lunch during the work week. Pre-Soylent, I spent hours on Sunday prepping my meals for the week or was constantly eating leftovers; either way, I was eating the same thing almost every day. Or even worse, I went out to lunch, spent $10, and ended up getting something that wasn’t very healthy for me. Soylent costs about $1.92/500kcal meal - plus one point for cheap! It’s also pretty well balanced nutritionally, so I know I’m getting a decent amount of nutrients per meal. The other benefit is it’s bland taste… it’s hard to describe, but I just don’t even think about it. Since I don’t think about it, I don’t get sick of it. Overall, I like it and I’ll probably keep ordering it for the foreseeable future.

Relevant to all of you programmers out there considering switching to the nerd smoothie.