The Future of Software Development Careers in the Age of AI and the Cloud
Software is eating the world
- Marc Andreessen, 2011
AI is eating Software
- Jensen Huang, 2017
Software development is undergoing a major transformation, as artificial intelligence (AI) and cloud computing are becoming more and more prevalent and powerful in the industry. AI tools like ChatGPT, AWS Code Guru, and Github Copilot are designed to help developers write better, faster, and more reliable code, while cloud platforms like AWS, Azure, and Google Cloud offer scalable, secure, and cost-effective solutions for hosting, deploying, and managing applications.
But what does this mean for the future of software development careers? Will AI and cloud computing replace human developers, or will they augment and empower them? How can developers prepare for the new challenges and opportunities that these technologies bring? In this blog post, we will explore these questions and more, and try to provide some insights and tips for software developers who want to thrive in the age of AI and the cloud.
How AI tools can help software developers
AI tools are not new in software development. For decades, developers have been using tools (with more or less AI inside) like compilers, debuggers, code editors, and IDEs to automate and simplify some aspects of coding. However, in recent years, AI tools have become more advanced and sophisticated, using techniques like natural language processing, machine learning, and deep learning to understand, generate, and improve code.
Some examples of AI tools that are already available: AWS Code Guru, Github Copilot and ChaptGPT.
These AI tools can offer many benefits to software developers, such as:
AWS Code Guru
AWS Code Guru: is a service that provides automated code reviews and recommendations for improving code quality and performance. AWS Code Guru uses machine learning to analyze code and identify issues, such as bugs, security vulnerabilities, and performance bottlenecks. AWS Code Guru can also suggest best practices, refactorings, and optimizations to make code more readable, maintainable, and efficient.
As an example, lets take a short piece of code which is analyzed and then a review and recommendation from AWS Code Guru generated, where it identifies a performance issue and suggests an optimization
# This is a Python function that queries a DynamoDB table and returns the results
import boto3
def query_table(table_name, key, value):
# create a DynamoDB resource
dynamodb = boto3.resource('dynamodb')
# get the table object
table = dynamodb.Table(table_name)
# query the table using the key and value
response = table.query(
KeyConditionExpression=boto3.dynamodb.conditions.Key(key).eq(value)
)
# return the items from the response
return response['Items']
And here the AWS Code Guru reviewer comments
# Performance issue: This code might result in high latency and increased costs. The code creates a new DynamoDB resource for every invocation of the function, which is inefficient and unnecessary. A better practice is to create the DynamoDB resource outside the function and reuse it for every invocation. This can improve the performance and reduce the costs of the function. Here is an example of how to refactor the code:
# create a DynamoDB resource outside the function
dynamodb = boto3.resource('dynamodb')
def query_table(table_name, key, value):
# get the table object
table = dynamodb.Table(table_name)
# query the table using the key and value
response = table.query(
KeyConditionExpression=boto3.dynamodb.conditions.Key(key).eq(value)
)
# return the items from the response
return response['Items']
Github Copilot
Github Copilot is a code completion tool that can generate and suggest code for any language and framework. Github Copilot is powered by OpenAI Codex, a neural network that can synthesize code from natural language, comments, or existing code. Github Copilot can help developers write code faster, fill in gaps, and explore new ideas. What I like to most (in comparison to e.g. ChatGPT) is that it integrates directly in the IDE (VSCode, PyCharm and others probably).
Here a simple example of what you can generate with Github Copilot
// Write a function in JavaScript that reverses a string
function reverseString(str) {
// Github Copilot suggests:
// initialize an empty string to store the reversed string
let reversed = "";
// loop through the characters of the original string from the end to the beginning
for (let i = str.length - 1; i >= 0; i--) {
// append each character to the reversed string
reversed += str[i];
}
// return the reversed string
return reversed;
}
// test the function
console.log(reverseString("hello")); // prints "olleh"
console.log(reverseString("world")); // prints "dlrow"
ChatGPT
By now, I hope everyone has heard about ChatGPT and its latest brother, Bing Chat. If you didn't do it so far, please test it by yourself.
ChatGPT is a chatbot that can answer programming questions, provide code snippets, and explain concepts using natural language. ChatGPT is based on GPT-3, a powerful language model that can generate coherent and relevant texts on any topic. ChatGPT can be used as a personal assistant, a tutor, or a peer for developers who need help or feedback on their code.
Recommended by LinkedIn
Youtube is now full of videos where people demonstrate how to create complete applications with the help of ChatGPT. Here just one.
How cloud computing can help software developers
Cloud computing is another technology that is transforming software development. Cloud computing refers to the delivery of computing services, such as servers, storage, databases, networking, software, analytics, and intelligence, over the internet, or the cloud. Cloud computing enables developers to access and use these services on demand, without having to buy, install, or maintain physical hardware or software.
Some examples of cloud platforms that are widely used or emerging in the industry are:
These cloud platforms can offer many benefits to software developers, such as:
How software developers can prepare for the future
AI and cloud computing are not threats to software development careers, but rather opportunities and enablers. AI and cloud computing can help software developers write better, faster, and more reliable code, and to create more innovative and impactful software products. However, software developers also need to adapt and evolve their skills, knowledge, and mindset to the new realities and possibilities that these technologies bring.
Embrace lifelong learning: Software development is a field that requires constant learning and updating of skills, tools, and technologies. Developers need to keep up with the latest trends and developments in AI and cloud computing, and to learn how to use and integrate them into their projects. Developers can use online courses, tutorials, blogs, podcasts, books, and other resources to learn new skills, languages, and frameworks, and to refresh and improve their existing ones.
Develop soft skills: Software development is not only about technical skills, but also about soft skills, such as communication, collaboration, problem-solving, and creativity. Developers need to develop and enhance these skills to work effectively and efficiently with other developers, stakeholders, and users, and to create software products that meet the needs and expectations of the market and the society. Developers can use tools like chatbots, code reviews, and feedback systems to improve their communication and collaboration skills, and to seek and provide guidance and support.
Explore new domains and applications: Software development is a field that can be applied to almost any domain and industry, such as healthcare, education, entertainment, finance, and more. Developers can explore and experiment with new domains and applications, and to use their skills and knowledge to create software products that can make a positive difference in the world. Developers can use platforms like hackathons, competitions, and open source projects to find and join new and exciting challenges and opportunities.
Conclusion
Software development is a field that is constantly changing and evolving, as new technologies and paradigms emerge and influence the way we code and create software products. AI and cloud computing are two of the most prominent and powerful technologies that are shaping the future of software development, by offering new and improved tools and services that can help developers write better, faster, and more reliable code, and to create more innovative and impactful software products.
There is no doubt, these new tools speed up Software development. But if you play with them for enough time, you will see they perform errors, just like humans. But humans are able to debug, reason and adapt. I had a long and disturbing discussion with Bing Chat, where it was trying to convince me of something impossible. Things will improve, no doubt, but for anything beyond simple MVPs or experiments, a technical person is still needed (for a while) to make sure the solution proposed is good enough. As impressive as ChatGPT is, still all those amazing Youtube videos are made by Software developers.
Today more than ever, Software developers need to adapt and evolve their skills, knowledge, and mindset to the new realities and possibilities that these technologies bring. Software developers need to embrace lifelong learning, develop soft skills, and explore new domains and applications, to stay relevant and competitive in the industry, and to make the most of the opportunities and challenges that AI and cloud computing offer.
Software development is a field that is full of potential and promise, and AI and cloud computing are not threats, but rather enablers and catalysts. Software developers who can leverage and integrate these technologies into their projects, and who can keep learning and growing their skills and knowledge, will be able to thrive and succeed in the age of AI and the cloud.
Happy coding!
🌟 Making GenAI a massive opportunity for engineering productivity 🚀 Become part of the change | Engineering Manager & AI Advocate @Bosch | AIoT products, 20+ Apps, GenAI-Gurus.com
1yHave you heard about Prompt Engineering? I was of course practicing it to create this article and prepare for the skills any human being (and not only SW developers) will need 👨💻 Did I do a good job?