9 min read
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.
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.
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:
“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
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 U.S. Bureau of Labor Statistics predicts an increase of 25% in jobs between 2021 and 2031.
- Recent projections estimate a potential gap of 700,000 IT workers by 2030 in the EU.
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:
- Software developer roles are in high demand, and new opportunities will appear in the next decade.
- Tools for software development provide accurate suggestions and reduce the time to code certain features.
- 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:
- Believers in the AI revolution discuss opportunities and potential new roles like Prompt Engineers in the upcoming years.
- Haters and conservative people argue the utility of the new tools. They are convinced that the software developer role will stay forever as it is.
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).
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:
|First||1765||Mechanization and coal||Transport, factories and mechanization of work|
|Second||1870||Electricity, gas, and oil||Telegraph, telephone and mass production|
|Third||1969||Electronics and nuclear energy||Electronics, Computers, and robots for production|
|Industry||2000||Internet||Phones and tablets, the rise of the cloud and new business opportunities through e-commerce|
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.
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:
|Waves||Year||Invention||% of existing jobs at potential risk of disappear|
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.
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.
|First||AI 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.
|Second||AI 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.
|Third||AI 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 code||AI 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:
- The prelude of the book: Life 3.0: Being Human in the Age of Artificial Intelligence called “The Tale of The Omega Team”
- The movie Her
- Learning more about Technological Singularity
Evolution of roles, skills, and responsibilities per stage:
|Stage||Junior Developers||Senior Developers||Architects||Opportunities|
|First||Opportunity 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.|
|Second||A 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.|
|Third||Asking 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 code||Master 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:
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:
- Read posts, listen to podcasts, and watch youtube videos about this topic.
- Follow the evolution of existing tools.
- Incorporate the tools into your daily tasks as soon as possible to get used to them.
- Explore new ways of increasing your performance and reducing the time wasted on tedious and repetitive tasks.
- Talk with your colleagues, bosses, and friends about how you use it and learn from their experiences.
- And as Ray Dailio says: Be Radically open-minded.
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!
One more thing... For writing this post, I used Grammarly; for the main image, I asked ChatGPT to generate a prompt that I passed to Midjourney, and of course, Github Copilot helped me build the website itself. ;)