In college, I took an intro psych class where the professor asked: is it nature, or nurture, that forms us? Is it all about our genetics? Or is it about the experiences we had?
Of course, the answer is "some of each," but the part that stayed with me is that this is often the answer to big either/or questions.
So, I haven't been quick to declare AI tools for developers (or AI in general) either the greatest innovation humanity has ever seen or the worst thing that could possibly happen. The answer is likely somewhere in the middle.
Here's my take about developers using AI as part of their work.
Is AI going to replace developers?
It already has. And I think companies replacing developers with AI are going to lose to companies empowering developers with AI.
As a developer, should I worry about my job because of AI?
I don't think anyone should worry about anything, AI or not. What good does it do? Worry is not preparation.
As a developer, you'll be at a disadvantage if you just ignore AI and hope it will go away. I ignored blockchain (sorry, enthusiasts). AI is a bigger deal.
Worrying isn't the answer, but preparation is.
Does AI make developers more productive?
Some say yes. Others say the time saved is canceled out by the time spent wrangling the AI and the output.
But let's take a step back. What does it mean to make developers "more productive"? Is it something about speed?
What slows developers down now? What slows the entire process down, from idea to deployment? Where are the bottlenecks? Do you know?
Or is it about money? Developers are expensive. If productivity is simply more delivered for less money, are you maybe forgetting some things? (Quality, security, stability, maintainability, etc.)
Drew this the other day:
One reason I love "Beyond Writing Code" as a site name (and potential book title) is that writing code is only a fraction of what developers do with their time and brains. And what developers do is only a fraction of the software development lifecycle.
This is why I think replacing developers with AI is the losing option. You need humans in the loop, and the people wielding the AI need the knowledge, context, and people skills that developers have.
[I said what I said. Developers need people skills. Okay, I may be preaching to the choir here.]
Here's a good read from Jennifer Riggins via LeadDev (my new favorite site):
Why developers and their bosses disagree over generative AI
See also this from DORA about whether it helps developers do more "valuable" work:
DORA research: How gen AI affects the value of development work
What about "vibe coding"?
Here's how I think of it: With AI-assisted coding, the developer is still writing the code, just with some help. With "vibe coding" the AI is writing the code, with some nudges from the person doing the vibe coding to tell it what they want. We start taking the human out of the loop.
Sounds good for: experiments, prototypes, fun side projects, stuff not being released to the public.
Sounds hazardous for: production enterprise code, maintainability, security.
Developers, you are responsible for your code whether you wrote it, copied it off the internet, or used AI. Understand your code.
The Pragmatic Engineer: Vibe Coding as a Software Engineer
Are there concerns about AI in general?
You bet: ethical and privacy concerns around the data used to train AI, human biases that are reflected in the results, challenges to human safety. Also, the computing centers and hardware behind AI use a lot of electricity and water and potentially generate a lot of waste.
Not saying these are insurmountable challenges, or reasons to shun all things AI. But they shouldn't be ignored either.
Here's a US Government report on AI.
I'm overwhelmed. Where should I start?
I haven't done much experimenting with AI and coding personally, just playing with GitHub Copilot.
For example, I used it to debug errors when upgrading packages for my website. It would get me 99% of the way there and then trip over its own feet. It figured out that I needed to upgrade a package... and then it spit out the wrong command for it.
The tools have expanded beyond GitHub Copilot, though. I don't like to give advice when I haven't done it myself. And I haven't yet.
So I'll ask you
What have you found useful so far in getting up to speed? Was there a course, tool, website, blog post, etc. that you recommend?
Also, what do you want to learn next about AI? Or, do you?
I'll report out in a future newsletter if I get some good resources.
Drop me a note
I would love to hear from you. Hit reply and let me know what's on your mind.
Know someone else who would enjoy this? They can subscribe here:
Thanks for reading!