Most predictions about AI in software development miss a crucial point: developers using generative AI tools are already creating more legacy code, just faster. Recent data shows code quality declining on GitHub, with increased code churn and duplicate code appearing in repositories. The future of software engineering won't be defined by which AI tools win, but by which developers understand that precision, testing ability, and asking the right questions have always been the actual job—and that won't change by 2034.
In this episode, I talk with Kevlin Henney, author and speaker, about what software engineering will actually look like in 2034. Kevlin challenges the hype around AI code generation testing and explains why most developers using generative AI are actually removing the fun parts of their job while creating legacy code faster. We explore why programming languages won't change as radically as people think, why your testing skills will become your most valuable asset, and what recent data already shows about declining code quality on GitHub.
"The world runs on software; that is not going anywhere." - Kevlin Henney
Kevlin Henney is an independent consultant, speaker, writer and trainer who has contributed to the current development of programming techniques, software architecture and unit testing. He has been a columnist for numerous magazines and websites and has served on many committees. He is also co-author of "A Pattern Language for Distributed Computing" and "On Patterns and Pattern Languages" from the "Pattern-Oriented Software Architecture" series, as well as editor of "97 Things Every Programmer Should Know" and co-editor of "97 Things Every Java Programmer Should Know".
As we approach 2034, the world of software engineering is changing quickly:
The ongoing debate between traditional coding and AI-driven prompting techniques continues to shape the future of programming:
Even with these advancements in AI, human developers are still essential for innovation, creativity, and problem-solving in software development:
But with this change comes a chance to look at the trends, challenges, and opportunities in future software development:
Most of the programming languages that are widely used today were created in the 20th century. These languages, such as Java, C++, and Python, have stood the test of time and continue to be popular choices for software development. While new languages may emerge, it is unlikely that any major shifts in programming language dominance will occur in the near future.
Agile methodologies, which emphasize flexibility and collaboration in software development, have gained popularity over the years. However, their adoption has been limited to certain industries and organizations. It is unlikely that there will be a significant shift towards Agile practices across all sectors by 2034.
Currently, technologies like 5G are being implemented to improve connectivity and speed up data transfer. However, there is already talk about the next generation of wireless technology, 6G, which promises even faster speeds and more reliable connections. This transition from existing technologies to future innovations will have a significant impact on software development.
The concepts of metaverse and Web3, which aim to create decentralized virtual worlds and internet experiences respectively, are still in their early stages. While there is excitement around these ideas, they have not yet achieved mainstream adoption. There are various competing platforms and standards being developed, leading to fragmentation in this space.
Cryptocurrencies have gained attention as an alternative form of currency but their widespread use is still uncertain. Central bank digital currencies (CBDCs), on the other hand, are gaining credibility as governments explore digital versions of their fiat currencies. The relationship between cryptocurrencies and CBDCs will be an important factor in shaping the future of money and finance.
Artificial Intelligence (AI) is having a significant impact on software development, changing workflows and processes. Here are some key points to consider:
As we navigate this changing landscape, it is essential for software engineers to proactively address these implications of AI integration into development workflows. This will help maintain high standards of excellence and innovation. It also involves acquiring necessary AI skills for test automation which are becoming increasingly important for success in agile teams.
As we look ahead to 2034, it's likely that the primary programming languages used by developers are already invented. This means that it's important for developers to be familiar with multiple languages and not just rely on one.
While specific programming languages may come and go, the core principles of good software engineering remain constant. These principles include understanding algorithms, data structures, and design patterns. By having a strong foundation in these areas, developers can easily adapt to new languages and technologies as they emerge.
In addition to foundational skills, developers must also stay up-to-date with the latest tools and frameworks. The tech industry is constantly evolving, and new tools are being introduced at a rapid pace. It's crucial for developers to strike a balance between honing their core skills and embracing these new tools.
Open-source projects play a significant role in shaping the future of software development. Many popular frameworks and libraries today have been built using open-source contributions. As a developer, being involved in open-source projects can not only enhance your skills but also give you insights into emerging trends and technologies.
Even with the rise of AI assistance in software development, certain skills will always be essential. Precision in writing code, critical questioning when evaluating solutions, and a strong testing mindset are all crucial for delivering high-quality software.
AI tools may help automate certain tasks or provide suggestions, but they should never replace these fundamental skills. Developers must continue to develop their ability to think critically, ask relevant questions, and thoroughly test their code.
In conclusion, while coding skills will always be important for developers, the ability to prompt AI tools effectively will also become increasingly valuable. By diversifying our programming language knowledge, balancing foundational skills with tool evolution, embracing open-source innovation, and nurturing essential qualities like precision and critical thinking, we can prepare ourselves for the future of software development.
The software industry is expected to see continuous growth in job opportunities over the next decade. This is primarily due to the increasing global reliance on software solutions across various sectors. As businesses and individuals increasingly depend on technology for their operations and daily activities, the demand for skilled software professionals will continue to rise.
With this growing demand, new roles within the software industry are likely to emerge. These roles may include specialized positions such as:
As the industry evolves, there will be a divergence between companies prioritizing high-quality code versus those enforcing micromanagement or employee pressure. Organizations that understand the value of quality assurance will invest in robust testing processes, code reviews, and continuous integration practices.
On the other hand, companies relying on micromanagement may struggle to maintain code quality as they prioritize speed over excellence. This could lead to technical debt and hinder long-term growth prospects.
In summary, the software industry outlook by 2034 indicates an ongoing creation of jobs driven by global reliance on software solutions. Additionally, there will be a focus on quality assurance among organizations that recognize its importance in delivering exceptional products.
Developers working on tools that facilitate video or music uploads must have a deep understanding of platforms like YouTube policies. Awareness of terms of service is critical to ensure that applications comply with content sharing online regulations and avoid legal pitfalls. Ignorance of these rules can lead to restrictions, takedowns, or even litigation, affecting the longevity and reputation of software products.
Software engineers building content-sharing applications face broader challenges beyond technical implementation. Respecting legal guidelines involves navigating copyright laws, user privacy, and intellectual property rights. These considerations influence design decisions, such as implementing content moderation systems or managing user-generated content responsibly.
Key factors for developers include:
Understanding these dimensions aligns with the themes explored in Still Coding or Just Prompting? Software Engineering 2034, emphasizing that future software development is not solely about coding but also about responsible engineering within complex legal and social frameworks.
Navigating the changing world of coding requires finding a balance between adapting to new technologies and sticking to the fundamental principles of software engineering. The discussion around Still Coding or Just Prompting? Software Engineering 2034 highlights the importance of cultivating future-proof skills for developers. Embracing AI tools and emerging methodologies should not come at the expense of precision, critical thinking, and rigorous testing disciplines.
Here are some key takeaways from the discussion:
Thriving in the future software engineering ecosystem depends on this blend of adaptability and enduring expertise. Developers who master both prompting techniques and traditional coding fundamentals will be best positioned to meet the challenges and opportunities ahead.