Yes, and
A computer science professor reassures students about a programming career amidst AI advancements, emphasizing the enduring value of core coding skills and problem-solving over mere code generation. Hacker News dissects this 'Yes, and...' philosophy, debating the true impact of AI on developer jobs, the nature of coding determinism, and the critical skills for future programmers. The discussion ranges from existential dread about job displacement to pragmatic advice on adapting to a rapidly evolving tech landscape, sparking heated exchanges on the future of the profession.
The Lowdown
Michelangelo11, a computer science professor and father of a CS student, addresses the pressing question from his students and peers: 'Given AI, should I still consider becoming a computer programmer?' His answer, framed as 'Yes, and...', forms the core of this thoughtful essay aimed at reassuring and guiding aspiring developers.
The author argues that computer programming, fundamentally about problem-solving and complexity control, will remain a valuable career. However, he acknowledges that AI will change the landscape in fundamental ways. His key points include:
- The Necessity of Writing Code: He warns junior programmers against relying solely on AI for code generation, asserting that actively writing code is crucial for developing the visceral understanding needed to read, debug, and effectively manage complex systems. Failing to do so risks falling into 'The Sorcerer’s Apprentice Trap,' creating systems one cannot understand or control.
- AI vs. Compilers: He refutes the analogy that AI-generated code is like high-level languages compiling to assembly. Unlike deterministic compilers, LLMs are non-deterministic and can introduce accidental complexity, making code review by humans essential.
- AI as a 'Great TA': Properly used, AI can be a powerful assistant for learning, helping students overcome roadblocks and understand concepts without generating full solutions. He provides an
AGENTS.mdguide for configuring AI as a helpful TA. - Evolving Skillsets: While raw coding prowess may diminish in relative importance, other skills will become more critical. These include clear communication (with both LLMs and humans), business understanding (to identify real-world problems), and 'architecting' systems to control complexity—a skill developed through hands-on coding experience.
- Effective LLM Usage: Senior developers can leverage LLMs for tasks like code analysis, organizing thoughts, generating small code snippets, or automating unpleasant tasks (e.g., regex, CSS). Juniors, however, must resist the temptation of 'vibe coding' and focus on building foundational understanding.
- Navigating the Job Market: Acknowledging the current difficult job market for programmers, he views it as a temporary, cyclical downturn. His practical advice for job-seeking juniors emphasizes leveraging personal connections (Family, Friends, Family of Friends) and seeking roles in non-tech companies where programming skills can provide significant value.
In conclusion, the author reaffirms that computer programming remains a rewarding career choice, urging both students and companies to prioritize foundational coding skills and broader competencies to navigate the AI-driven future successfully.
The Gossip
The Determinism Debacle
The author's distinction between deterministic compilers and non-deterministic LLMs sparked a lively debate. Many commenters agreed that the key difference lies in the ability to formally reason about output, not just determinism itself, which LLMs lack. Some argued that even compilers have elements of 'chaos' or 'unpredictability' (e.g., undefined behavior, optimization variations), making the comparison less clear-cut. Others asserted that while LLMs *can* be made deterministic by setting temperature to zero, the inherent imprecision of natural language still makes reasoning about their output fundamentally different from compilers.
Junior Jitters & Skill Succession
A significant portion of the discussion centered on the future of junior developers and which skills will be most valuable. Some commenters expressed pessimism, comparing the situation to artisanal crafts replaced by industrialization, suggesting the market for 'hand-coded' software will shrink. Concerns were raised about 'vibe coding' leading to poor quality and an inability for juniors to learn deep fundamentals if they don't write code themselves. However, others saw AI as a tool to accelerate learning by removing accidental complexity or as a '10x multiplier' for professionals who combine programming with other domain expertise, making programming a valuable 'plus' skill rather than a standalone career.
Job Market Realities and Prognoses
Many commenters vehemently disagreed with the author's optimistic view of the current job market for programmers, especially for juniors. Several shared grim personal experiences of the 'brutal' market, arguing that the author's advice on networking (Family, Friends, Family of Friends) is insufficient or out of touch for many. The debate touched on whether the current downturn is truly cyclical or a more permanent shift due to AI displacing roles, particularly at the junior level. Some suggested that professors, having a vested interest in CS enrollment, might downplay the severity of the situation.
The 'Over' Perspective
A subset of comments took a more radical stance, proclaiming the end of programming as a human-centric discipline. These commenters asserted that AI will rapidly become superior at coding, architecture, and even communication, rendering human programmers obsolete or relegated to highly abstract oversight roles that will also eventually be automated. They argued that those who resist full AI utilization (e.g., not letting LLMs design APIs) will be left behind by faster-shipping competitors, and that the only truly safe jobs will be those legally mandated for humans or those requiring unique, irreplaceable human interaction.