AbimaelBarea
Culture |-11 min read

AI, the present and future of Software Development

This post predicts a tech industry revolutionized by AI and no-code tools, urging developers to adapt and embrace an inclusive future.AI, the present and future of Software Development

In the last year, I had many conversations with friends and colleagues about the current situation of Software Development and how it will evolve. Making predictions is always tricky and inaccurate, but I will try to share my thoughts here.

The rise of AI tools

In the last 40 years, the software industry has evolved a lot; different paradigms (functional, object-oriented, reactive), patterns, and architectures have appeared. We’ve developed different ways of working, from waterfall to scrum. And we should be proud of our accomplishments because we managed to create very complex software.

A warning or caution
In the past, we’ve been focused on discovering and inventing new ways of work, but the work is still very manual. A person must sit before a monitor and type 'weird' words on a keyboard; after that is a process of try-error until the feature works as expected.

Since I learned how to code, I’ve been looking for tools that make my life easier, like plug-ins, auto-imports, and auto-complete. In the last two years, a new trend has appeared. Generating code or assisting the developer with better autocompletion tools is a reality nowadays, and many companies are betting on this topic.

Copilot by Github

“GitHub Copilot uses the OpenAI Codex to suggest code and entire functions in real-time, right from your editor.” - Github Copilot

Copilot is probably the most popular tool for software developers nowadays. In July 2021, I had the chance to access their Technical Preview. I’ve been using it daily since then.

Relevant Information
After one and a half years of using it, I’ve seen the tool evolve and become more and more accurate, becoming essential for my daily tasks.

Many articles claim the increase in performance on development after using Github Copilot for a while; let me show you some examples:

“95 professional developers, split them randomly into two groups, and timed how long it took them to write an HTTP server in JavaScript” - Research: quantifying GitHub Copilot’s impact on developer productivity and happines

Copilot

“Codex/Copilot have the potential to increase the current speed of software development again, perhaps by another factor of 10” AI Coding Assistants Shake Up Software Development, But May Have Unintended Consequences

Codex by OpenAI

Many people have been using ChatGPT for code predictions and experiments. Still, OpenAI offers another specific model:

“Codex is the model that powers GitHub Copilot, which we built and launched in partnership with GitHub a month ago. Proficient in more than a dozen programming languages, Codex can now interpret simple commands in natural language and execute them on the user’s behalf—making it possible to build a natural language interface to existing applications.” OpenAI Codex

Generally, we can observe good reviews and optimistic predictions and thoughts about the future of OpenAI tools:

“For coders, using AI-based code-completion and ChatGPT-style question-answering for learning to code and understanding an existing codebase will become indispensable parts of software engineering workflows.” The Impact and Future of ChatGPT

“Still, ChatGPT could pave the way for new job titles. Prompt engineering, for example, will become an in-demand skill set in the AI era, he said.” ChatGPT writes code, but won't replace developers

Code Gen by Salesforce

In Salesforce seems to be very convinced that the future of software development is based in natural language and a conversational approach. And they're betting in this approach through their tools:

“CodeGen, which turns simple English prompts into executable code” Conversational AI Programming with CodeGen: Let AI Write Code For You

Relevant Information
The advent of machine learning urges us to rethink the classical paradigm. Instead of a human doing the programming, can a machine learn to program itself, with the human providing high-level guidance? Can human and machine establish an interactive discourse to write a program? The answer, as our research reveals, is a resounding Yes.”

Codewhisperer by Amazon

Amazon is working on their tool for code completion:

“CodeWhisperer is a machine learning (ML)–powered service that helps improve developer productivity by generating code recommendations based on developers’ prior code and comments.” Amazon CodeWhisperer

Internal experiments by Google

The internal experiment at Google looks very promising. Many code suggestions are accurate and accepted by developers.

“With 10k+ Google-internal developers using the completion setup in their IDE, we measured a user acceptance rate of 25-34%.” ML-Enhanced Code Completion Improves Developer Productivity

Software dev roles

Before moving forward into further predictions. I think it’s crucial to understand the current and near-future of software developer roles.

The projections seem to indicate a huge growth in IT roles.

Software Development powered by AI

At this point, we have a few things clear:

  1. Software developer roles are in high demand, and new opportunities will appear in the next decade.
  2. Tools for software development provide accurate suggestions and reduce the time to code certain features.
  3. Many companies are betting on the area of tools for code development.

With these core ideas in mind, it’s time to open pandora's box. There are two main trends on social media and the internet:

Of course, you can find arguments in the middle and people who advise you to stay tuned and be open-minded to potential changes. But before sharing my opinion, you need to have more context.

The Industrial Revolution

Humans are good at many things, like creating tools for solving specific problems, being creative, and collaborating with others (among many others).

Something to avoid
But we all have a small problem; we tend to forget and not learn from history.

Not so long ago, during the Industrial Revolution, we found a way to produce items faster. During that period, everything changed. Many things were invented, factories soon took over, and people moved to cities. Some people consider there were four stages:

StagesYearInventionChanges
First1765Mechanization and coalTransport, factories and mechanization of work
Second1870Electricity, gas, and oilTelegraph, telephone and mass production
Third1969Electronics and nuclear energyElectronics, Computers, and robots for production
Industry2000InternetPhones and tablets, the rise of the cloud and new business opportunities through e-commerce

Sources:

In the early stages of the Industrial Revolution, many people were needed in factories to perform repetitive tasks. Still, over time we managed to create more complex machines that were more precise, faster, resilient, and did not need a break. Nowadays, when we see images of factories full of robots and automated processes, we think it is normal.

A warning or caution
Evolution has happened, and jobs have evolved, becoming more and more specific.

PwC: How will automation impact jobs?

Having that history lesson in mind, we can find on the internet some people that try to make some projections and predictions about the automation and evolution of jobs:

WavesYearInvention% of existing jobs at potential risk of disappear
FirstEarly 2020sAlgorithmic3%
SecondLate 2020sAugmentation20%
ThirdMid-2030sAutonomy30%

More information on the PricewaterhouseCoopers study

Future stages on Software Development

As I said before, predicting the future is hard and almost impossible, so I’m trying to apply the theory behind the four stages on Industrial Revolution plus the waves on jobs automation from PwC to the future of Software Development.

A warning or caution
These stages are the results of reading, listening to podcasts, conversations, my experience using Copilot and ChatGPT, and a touch of sci-fi. It would be interesting to revisit this post in a few years to see how accurate my predictions were, but it gives me a road map of what we might expect in a few years.
StageInventionResistanceChanges
FirstAI Tools for code completion and functions.People fear losing their job.

Companies are worried about the authority and security of the code.
AI performs monotonous and repetitive tasks.

Complexity and maintainability reduced.

Resilient code and fewer bugs.
SecondAI Tools can create complex pieces like components.People accept the power of code completions but don’t believe creating bigger pieces of code is possible.

Companies think that components developed by a machine won’t fulfill all the requirements and will be full of bugs.
Developers keep focus and energy on creating better solutions.

Companies can deliver features to different environments faster and more securely than ever.
ThirdAI Tools can provide complete working features.The validation process is very manual, still performed by code reviews and QA Engineers.

Companies fear that AI can leak their business logic to competitors when used to develop large features or components.
New patterns appear because developers have more time for R&D.

Programming languages and IDEs leverage new AI capabilities through new features.

Code linters are smarter and can be used in the validation process. Pull Request reviews will be easier and safer.

Companies are faster and more competitive and the labor cost has significantly reduced.
No codeAI Tools can create small products based on some requirements a Prompt Engineer supplies.Developers are still skeptical about creating a complex system with no code tools.

Companies are concerned about delegating decisions over their products to AI.
Landing pages, blogs, and e-commerce could be deployed and ready with no code tools.

Creating great email templates, pdfs based on descriptions.

No code tools will be connected with image generation tools and copywriting ones.

Conversational programming is a reality

For more ideas on the potential impact of the rise of no-code tools, I recommend:

Evolution of roles, skills, and responsibilities per stage:

StageJunior DevelopersSenior DevelopersArchitectsOpportunities
FirstOpportunity to learn faster than ever and deliver sooner.Enough knowledge to identify good suggestions. They will be training the systems.More confident that implementation follows their higher-level diagrams.Developers could be more creative because they don’t deal with tedious tasks.
SecondA higher-level of knowledge is required, and stuff like algorithms, data structures and patterns are mandatory.Most of the time, they ask questions to AI and then review and choose solutions. That gives them a broader vision of their components and connections with each other.AI will gain the ability to develop systems from requirements, and this knowledge lies a lot on the Architect side, so they will play a key role in training the systems, identifying the good suggestions. So, they need to review AI outputs from higher-levels.Prompt Engineering is a very demanding role.
ThirdAsking the right questions to AI Tools is the most valuable skill to develop.They will evolve programming languages and design new plugins and tools to better understand their codebase, treating implementation in most cases like black boxes.At this stage, the business, the alarms, stress tests, and fitness functions to validate the system's integrity will be part of the visualization tools. So, they’ll be working with kind of super powerful dashboard/diagram makers software.Designers and product people could make adjustments and small changes to the code without developers.
No codeMaster the no-code tools and understand when to use them.Conversational programming from Natural Language will be part of their daily activities.They could ask in a conversational way to spin up services, make connections between components, create real time reports or presentations.Small business owners, marketing teams, salespeople, and product people could use these tools daily.

As you can see, I didn’t estimate years because it’s very hard to predict, but I think that a key factor will be how fast the software community adopts and integrates these AI tools into their daily activities. Based on the adoption's speed of the different inventions over the last century:

Innovations

I consider that it is going to be faster than we expect and probably faster than our brains can adapt and process; for sure, it’s not going to be the 250 years of the Industrial Revolution, We might be talking of 20 years or even less. In the last 2 years, we’ve been entering the first stage, but we are evolving extremely fast...

What can we do?

I will try to give you some potential steps or ideas that can be useful to be up to date with this topic:

Conclusions

I think that replacing the current role of Software Developer with a higher version called Propmt Engineer or even the proliferation of no-code tools that large audiences can use is INEVITABLE. I’m 100% sure we will reach that point; the question is when? I might see it in my lifetime. I’d like to, because changes and evolution are necessary and push the human race forward, generating new systems and potentially better societies.

So, I firmly believe in embracing the changes, considering new challenges, and enjoying the journey. In the past two decades, we lived through the explosion of hardware and computational power, which was thrilling. Still, if you’re like me, passionate about software, I believe that we are living in the most exciting times, now is finally the time of the Software Revolution!

Relevant Information
One more thing... For writing this post, I used Grammarly; for the main image, I asked ChatGPT to generate a prompt that I passed toMidjourney, and of course, Github Copilot  helped me build the website itself. ;)