I simply can’t resist the urge to put my ring in the hat on this one. It's mostly because I see the glut of AI nonsense put out by talking heads who’ve never written a single line of usable code in their lives.
But what’s also intriguing is the takes by well-seasoned Software Engineers who’ve been writing code for decades and who are apparently taking different sides in this battle. What battle, you ask? The computers vs humans battles.
We’ve finally arrived. After all this wondering when Skynet was going to take over and ruin everything, are we there? What is a Software Engineer to do when the AI they created is able to write their code for them?
This must have been what Dr. Victor Frankenstein felt when he raised that infamous beast to life. I feel most coders are at a great crossroads in their lives and times. What should they do? Embrace the AI or deny it?
I want to figure that out today. I want to find an answer to this question and make your life easier. I want to reach a reasonable conclusion to this important question: Should you embrace AI as part of Software Development?
The intersection of AI and Code.
What’s a programmer to do? Run off into the sunset angry and mad at the AI that can write better code than them? Put your head in the sand and just ignore it all.
As a writer of code you have a few choices.
Embrace AI in it’s totality for everything Software Development related
Let it do everything for you at all times
Totally reject AI and any of it’s tentacles it’s trying to stick into your coding experience.
Never touch the stuff
Try to find a happy medium that doesn’t hurt you but don’t leave you behind.
Try to walk the line like Johnny Cash
Now, I will be the first to admit there is a lot of grey areas running around between those three points above. Some of it bad, some of it good.
AI in your life and development lifecycle, the decisions you make to use or avoid it, are mostly likely going to have serious long-term ramifications over the totality of your career.
How could it not?
It depends on who you are.
I hate to say it depends, but it really does. Should you ignore AI and never use it for coding? It depends. Should you use it everyday (like I do)? It depends.
I don't think the following statements are controversial or rocket science … they are fact.
Let me say what I want without reading between the lines, we will get to the grey areas later.
Junior or New Dev's skills will be greatly stunted if using AI to write code.
Mid-level Devs can fall either way and it depends on their personality.
Senior Devs are most likely to benefit from AI in their journey.
Like I said, not rocket science. If you have not been writing code long and lack experience, letting anyone or anything write most of your new code, will make you a shallow Dev who is easily replaceable with the AI you embrace.
One the other end of the spectrum, Senior Engineers are most likely to benefits as they have mastered technical skills and simply use AI to enable them to deliver value at greater speeds.
The grey areas. Daily AI usage in Software.
The talking heads can and will publish all sorts of arguments over the coming years about how AI is affecting the writing of code, jobs, and software in general. But, we should have some introspection after making the above bold claims about how AI could affect you on your day to day job.
If the landscape has fundamentally shifted under our feet (in regards to AI generating code), does it MATTER if your “knowledge and growth” is stunted by using AI too much?
This is a question that needs to be asked.
If AI can write much of your code, good or bad (because somedays you write bad code too), and the world collectively decides to walk down that path, why chain yourself to the old ways of learning soon-to-be archaic skills?
Clearly large tech companies (go look at the data) are betting and moving towards a future where AI will in part write some of the code. You can’t fight against the current of progress … you will simply drown.
My answer to that question(s).
In YOUR working lifetime things will shift, but probably take longer than you think.
folk in the middle to end of their careers have less to worry about than those who are new
If your in the middle-end of your career and are considered Senior+ level … you have the benefit of either choosing to embrace AI or not.
the DOWNSIDE of making the wrong choice will be less pronounced.
Many current Senior+ devs have the opportunity to use AI for their benefit.
Using AI to increase production and value, while minimizing personal growth and learning downsides.
What do I mean by all this? Think about it. AI is here to stay, the longer it is here the more it will impact the overall and day-to-day of Software Development.
What else has something to do with time? We do. We are mortal humans eeking our existence on this desolate rock by typing on a keyboard.
You want to know if YOU, personally, should embrace AI in your Software creation? Well, it depends on where YOU are at in your journey on this dusty rock, how far along you are.
But, let’s say you are just a few years into your career as a Software Developer. You have a long ways to go and a lot to learn before you reach what we would call “Senior+” level. This is a problem.
Why?
Because we are all still somewhat uncertain about the long time horizon and what the LONG TERM impacts of AI will be on Software. We can see the ground is shifting fundamentally and fast, we can see companies embracing AI for Software. But, we are living in the transition period!
I truly feel for those folks just getting into Software Development of whatever kind. I can’t imagine the unknowns and questions facing those new comers today.
Will my job look the same? How much AI should I use? What should I learn? What don’t I need to learn?
Good questions all.
Keeping it real.
So what’s a developer to do? Seems like we are between a rock and a hard place. If we lean on AI too much in our daily Software writing, we stunt our learning and become hobbled and un-needed, providing little to no value. On the other hand if we ignore completely the AI revolution, we leave a clear amount of increased capacity on the table.
There are Senior+ Engineers who reject AI.
They may have the luxury to do so, take that advice at your own risk.
They will probably quietly drift into the long-term background like old cowboys who refused to drive a car.
There are Senior+ Engineers who use AI wisely to extend their reach, knowledge, and ability to deliver more value.
They will continue to grow and extend their reach and be promoted higher and higher.
There are Junior and Mid-Level Engineers who will rely on AI way to much.
They will never master fundamentals, become script kitties, never gain experience to build and lead large projects.
Becoming servants of their AI masters
There are Junior and Mid-Level Engineers who will use AI wisely, much like their Senior+ counterparts, to extend what value they can deliver.
While at the same time driving growth in technical and non-technical skillsets.
I encourage you to tread your AI path forward very carefully and intentionally. Be critical with yourself and your daily usage of AI, is it leading you down a path towards your longterm goals?
Control the controllables is the old saying, and I think it applies here.
If you can’t beat em’ … join em’.
Look, at this early point in the game we don’t know the answers to where the AI will lead us as writers of Software. We can sort of lick our fingers and stick our hand in the air like our grandfather and suss out which way the wind blows, that’s about it.
Times are changing for sure, we shouldn’t pretend like AI isn’t going to change how we do our jobs.
But, the rest of it, where we go from here is up to the individual person, their goals, and where they reside in their journey through professional life.
Never think it’s ok to not understand fundamentals to AI.
Do not stop learning and growing technically.
Non-coding skills are now more important than ever.
AI is here to stay, use it to your advantage (because others will)
If you’re starting in your career, be more nuanced in how you approach AI.
If you’re seasoned, you probably have more flexibility to wing it.
What do I do?
I’m not sure if it matters, but I will tell you I use AI on a daily basis and let you make your decisions.
These is how I generally interact with AI (being someone in the second half of my career who has attained that “Senior+” title).
I use it (carefully) to do non-value added tasks (or mundane tasks).
Writing unit tests, boiler plate code, configurations, sample files, project structures, etc.
The idea is to spend as much time as possible doing the most value work possible.
Double check the approaches or designs I HAVE ALREADY decided on.
Trying to catch any gaps or get a different point of view on the problem that I might miss.
Increase the velocity at which I can understand and learn a new topic.
I make a point of learning a new thing for myself, but AI can accelerate that path (via examples and summaries etc).
What it really boils down to is that I use AI everyday to make me more efficient at what I already know. I’m not worried about AI doing some “Data Engineering thing” for me and becoming overly relient on it for X thing. I am aware of this pitfall and avoid it at all costs.
I’ve long been a position where it isn’t the code I write (although I write a lot of code and try to do it well) that makes me valuable as an Engineer. It’s the combination of technical and NON-technical skills that have gotten me to where I sit today.
Guess what?
AI is great at belching out a never ending stream of code that isn’t that bad. But you know what it’s not good at yet?
Working as part of a large team in a collaborative manner.
Making tradeoff’s and decisions in the wider context of a business.
Taking the learnings and nuances of decades of writing code and turning that into ideas that can be applied to problems.
Planning and managing large scale and complex problems and feature requests.
Working with the business. Talking with the business. Listening to the business.
Never forget, code is only half the battle. The other half of the battle is human-centric. That’s where we still hold the power as the crafters of Software.
AI, at least right now, appears to be taking some of the coding off our hands, but the most important parts, the human parts, are still in dire need of people with empathy, understanding, and good soft skills to step in and make things work day-to-day, or plan that next big thing.
If you are an Engineer who only cares about writing code, the perfect code, that’s all you think about and that’s all you want to do … well, yeah, you probably got some soul searching to do over the next 5 years as AI writes more and more code.
Yeah, I know there will always been a need for the insanley smart and nuanced programming genius who’s going to build the next Apache Spark or Redis. I get it.
But that’s not the majority of us. Embrace your human side, make yourself valuable to the team and business you work in. Bring beautifully crafted Software to the table, but also bring nuisance. Step beyond the code and bring people together, teach others, up-skill, work to solve complex problems that cross team boundaries.
Do those things and AI will be serving you instead (while getting paid a lot I might add).
Well put. A similar discussion has been underway for a while now with youths and technology - specifically, cell phones. These are devices that were created to facilitate the niche needs of adults, that are now training youths to think in a very particular way. The old generation put their time into learning how to comb through card catalogs and research topics in encyclopedias, and thus better appreciate the value of instant search gratification while still having the skills they acquired along the way - kids sidestep the skills portion and go straight to gratification. Time will tell if this was a good thing or not.
AI similarly has the potential to let young developers skip the experience of finding their answers the hard ways (experimentation, working alongside peers, begging Stack Overflow for an answer that isn't dripping with condescension or outright dismissal). They may be proficient in the beginning (and examples of this are out there), but their growth will be stunted as they aren't ultimately the authors of their own ideas. Even a senior dev using AI runs some risks - chances are they're not solving the kinds of problems where AI speeds things up on a regular basis (notwithstanding the unit tests idea).
A tool is only a good one if it's well understood and used at the appropriate times. AI has a future in improving productivity, but should absolutely not be regarded as a replacement for the long-term skills investment that goes into creating a good senior developer.
Good stuff here Daniel. I think senior dev's are at a big advantage because to your points in the article, they know at this point what works for them and what doesn't. They can treat AI assistants as an accelerator, but not as something that does the entire project for them; they still own the majority of the code, which makes it a lot easier for them to debug