Programming Skills that AIs Cannot Have & How You Learn Them
This YouTube video by a software professional with 35+ years of experience discusses the impact of AI on software development and how developers can future-proof their careers. Key points include:
AI Limitations:
- Limited Learning: Current AI models can only learn from their training data and lack the ability to learn from new experiences or adapt to changing contexts. They have no long-term memory and “forget” after each session (like the character in the movie Memento).
- Context Constraints: AIs struggle with handling broad contexts and the “lost in the middle” problem, limiting their ability to understand complex situations. They operate within the confines of their prompt.
- Inability to Anticipate: AIs cannot anticipate potential future problems or understand the consequences of past decisions in the way experienced human developers can. They cannot proactively identify and address potential bugs arising from design decisions made months prior.
Human Advantages:
- Contextual Understanding and Intuition: Humans possess a depth of contextual understanding and an intuitive grasp of potential problems based on experience. They can recognize patterns and anticipate issues that AIs cannot. This is honed by years of experience and exposure to real-world situations.
- Learning from Mistakes: Humans learn from bugs and errors, developing a better understanding of how to prevent similar problems in the future. This iterative process is crucial for building robust software.
- Adaptability to Change: Humans can adapt to changes in the environment (like OS updates, security vulnerabilities) that affect their code. This includes situations where a solution may not yet exist and needs to be discovered.
Developer Actions:
- Embrace the Unlearnable: Developers should focus on skills that require extensive context and experience, which are currently beyond the capabilities of AI. This includes anticipating and mitigating future problems, handling unexpected situations, and learning from real-world bug reports.
- Seek Diverse Experiences: Gain experience across the entire software lifecycle (development and operations) to gain a holistic understanding of how systems function. This contrasts with many developers who only focus on the development aspect.
- Value Bug Reports: Embrace bug reports as learning opportunities. Developers should avoid the mindset of dismissing bugs as “not reproducible” and actively seek to understand root causes.
- Work on Complex Problems: Volunteer for challenging projects, especially those with unclear solutions. Engage with QA and operations teams to understand issues beyond the development stage.
- Build Your Own Projects (SaaS): Create your own software projects (SaaS is suggested for its ease of access) to gain practical experience and learn from real-world feedback. This provides invaluable experience that AIs cannot replicate.
In essence, the video argues that while AI will automate certain aspects of software development, the ability to understand complex contexts, learn from experience, and anticipate future problems remain uniquely human skills, making experienced developers valuable even in an AI-driven future.