The Future of Software Development Careers in the Age of AI and the Cloud

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:

  1. Saving time and effort: AI tools can automate and streamline some of the tedious and repetitive tasks of coding, such as writing boilerplate code, fixing bugs, and optimizing performance. This can free up developers' time and energy to focus on more creative and complex aspects of software development, such as designing, testing, and deploying features and functionalities.
  2. Improving quality and reliability: AI tools can help developers write code that is more consistent, robust, and secure, by detecting and correcting errors, enforcing standards, and suggesting improvements. This can reduce the risk of bugs, crashes, and vulnerabilities, and increase the user satisfaction and trust in the software products.
  3. Enhancing learning and collaboration: AI tools can also serve as learning and collaboration tools for developers, by providing guidance, feedback, and examples on how to code better. Developers can use AI tools to learn new skills, languages, and frameworks, to improve their existing code, and to collaborate with other developers on shared projects.


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.

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:

  • AWS: Amazon Web Services is the leading cloud provider, offering over 200 services for computing, storage, databases, analytics, machine learning, IoT, security, and more. AWS is used by millions of customers, from startups to enterprises, to build and run applications of any scale and complexity.
  • Azure: Microsoft Azure is the second-largest cloud provider, offering over 200 services for computing, storage, databases, analytics, machine learning, IoT, security, and more. Azure is integrated with Microsoft's products and services, such as Windows, Office, and Visual Studio, and supports a wide range of languages and frameworks, such as .NET, Java, Python, and Node.js.
  • Google Cloud: Google Cloud is the third-largest cloud provider, offering over 100 services for computing, storage, databases, analytics, machine learning, IoT, security, and more. Google Cloud leverages Google's expertise and innovation in areas such as search, AI, and data, and supports a wide range of languages and frameworks, such as Java, Python, Go, and Ruby.


These cloud platforms can offer many benefits to software developers, such as:


  1. Scalability and flexibility: Cloud platforms can scale up or down the computing resources and services according to the demand and workload of the applications, without requiring developers to provision or manage the infrastructure. This can enable developers to handle peak traffic, sudden spikes, or growth in users, without compromising the performance or availability of the applications.
  2. Cost-effectiveness and efficiency: Cloud platforms can also reduce the cost and complexity of software development, by charging only for the resources and services that are used, and by providing tools and features that can automate and optimize the development, testing, and deployment processes. This can enable developers to save money, time, and effort, and to deliver software products faster and more frequently.
  3. Innovation and experimentation: Cloud platforms can also foster innovation and experimentation in software development, by providing access to the latest and most advanced technologies and services, such as AI, machine learning, serverless, and containers. Developers can use these technologies and services to create new and improved features and functionalities, to solve complex and novel problems, and to test and validate their ideas and hypotheses.


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!

Carlos Hernandez-Vaquero, PMP®

🌟 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

1y

Have 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?

Like
Reply

To view or add a comment, sign in

More articles by Carlos Hernandez-Vaquero, PMP®

Insights from the community

Others also viewed

Explore topics