How AI will affect us software engineers
I hear nowadays a lot of software engineers saying that that they are afraid to become obsolete in the future due to AI. Reason for this, they say, is that seeing the current possibilities of AI how it probably will improve in the future it will replace the need of having humans to write code. But there are also other areas that will affect AI in the life of software engineers. Some are good, some are not. And how far does AI probably will indeed affect our jobs?
Use vibe coding within the software development process
Vibe coding is using AI to generate code using a prompt. You will describe a certain functionality and the model will create code for you reflecting this requested functionality. Here vibe coding works within an iterative way: you use a prompt to generate some code, then review and analyze it and then come to the conclusion it doesn’t satisfies totally your needs. The model didn’t thought of some edge cases which are in fact important for a proper behavior with the user. You will bring this in by using a new prompt and do another cycle. This goes a couple of times back and forth until it satisfies your needs.
I believe here comes the power of a software engineer to the surface, because he or she can come up with edge cases the model didn’t “think” about. This is because an engineer think and reasons about how the application behaves and how it will be used. Given this, they make the software robust to handle those cases. It can be by preventing the application crashes, showing the user that something isn’t possible or other fault handling.
Most of the times you will also notice that the data model adjusts code you didn’t want to change, possibly introducing regression. Also it never covers for 100 percent what you had in mind.
The above examples holds for most of the applications, because normally business applications are fair complex. For easy scripts and small applications this could however be done I think by people with no software engineering skills.
Junior software engineers will get harder onboard
I learned software engineering by standing with my feet in the mud. I worked on projects creating embedded software close to the hardware written in C, on mobile applications running on iOS and Android, and on services running on a server. I can say I covered the whole stack from low level to high level programming, this by programming all the nitty details using different program languages.
Each environment has also it specific characteristics, which you will be aware of when making hours within this area. Although an AI model can have some knowledge about a specific area, they currently have a lot of issues with things like concurrency modelling.
Since it takes time for a junior software engineer to become a senior software engineer, they could be lured to spend more time on getting to use more sophisticated prompts instead of learning the environment where they are operating in. Typically you will learn when you make a mistake, you then analyses it and correct it. With the use of AI the junior doesn’t have this feedback loop, hence won’t learn as quickly as you would without using AI.
It this a problem that a junior won’t learn that quick? I think it does, given the fact like I described above, the model doesn’t think of all edge cases within the application it is developing. Also models aren’t flawless, they can make errors if the model is fed with errors. A junior can’t judge quickly if some changes are right or wrong.
AI will speed up our work as software engineers
I see AI now as a junior software engineer that I can instruct to create code. It needs a lot of guidance to write what you want, requiring you also to be very precisely within your prompts. You also need to review the code and test it before pushing it to your source control environment, since it can have issues to compile or other construction issues.
However it will speed up my work as an engineer, because instead of writing all code myself I can ask the model to create it and validate it. Most of the times I use these models within scripting languages which I’m not that familiar with. Then it saves me time looking up the construction of the language. Also I use it within existing code to find hard to debug bugs. Then it will also serve me as a kind of rubber duck so I can think of possibilities what might cause the bug.
AI will give us software engineers more time to work on things we like
I use AI for work I’m not that familiar with (for example PowerShell scripting), so I have time left for doing other things I have more expertise on. Since I use this vibe coding on areas where I have less interest in or isn’t my core job, I probably don’t suffer from the fact I don’t learn that much about using that programming or scripting languages if I would do it myself. I think that is a tradeoff. Instead I can spend now more time on developing in areas I like and do have expertise on.
In the end it is also an enabler for businesses to work on other software projects that otherwise couldn’t be done because they don’t have the resources for this. AI can therefore been seen as an enabler to increase the productivity of their engineers.
Some engineers tend to not review AI generated code
Generating code using AI is one thing, but given the fact it can generate code that contains errors may not be trivialized. It is up to the professionalism of the software engineer to closely review the code generated by the model before putting it into source control.
Pull request reviews can contain huge deltas within the code
With pull request reviews also come the issue that a lot of changes are introduced, which makes it difficult to review by its peers. The reason for this is, because the AI model can fairly easy generate code very quickly. The model thinks some code need to be changed here and then it also updates some parts somewhere else, before you know you end up in a huge change set. Ideally a pull request contains a small change set of code that can be reviewed by other software engineers. When a pull request becomes bigger, it is harder to understand the effect of the changes.
Podcasts and blogs
People that are creating podcasts, blogs and other social media want as much as views as possible. The last couple of years I therefore also see a tendency of a lot of blogs and vlogs about computer science that almost 80 percent of the time only cover topics regarding AI or related stuff. Seems that nowadays a lot of other topics seems to be ignored which can also be interesting to their audience.
The future
I’m not sure what the future will hold in terms of AI. We do see models become better in what they are doing, but in the end they need to be fed with some input. This input will still come from us software engineers to start with. I’m not sure if a model can be modified in such a way it will try out new software constructions, that then will be validated by the model itself, to create new input for the model. We will see then. For now, there is so much work to do within the field of software engineering that a lot of businesses simply can’t start new projects because there aren’t simply enough engineers to do the job. Until then AI can make us more productive and work within those area’s we either don’t like or have less interest in.