Questions Considered

Notes on thinking, learning, decision making, and occasionally running. Simple ideas, mostly obvious.

Tag: software engineering

  • The lines between coder and software engineer have in practice often been blurry, perhaps due to misunderstandings of what the work of building software entails.

    The consensus among authorities is that while the “coder” may be endangered, the “engineer” remains essential, though that role is being redefined as part product manager, part reviewer, and part AI orchestrator.

    The End of the Coder?, by Logan Kugler

    The nature of the work is changing, as the available tools become more powerful. Great software products will clearly continue to benefit from thoughtful engineering approaches though, AI-supported and otherwise.





  • Margaret Hamilton passed away on September 30, 2026, at the age of 90.

    Her life’s work was recognized with many awards and honors, including the 2016 Presidential Medal of Freedom from President Barack Obama, whose citation noted: “Hamilton defined new forms of software engineering and helped launch an industry that would forever change human history. Her software architecture led to giant leaps for humankind, writing the code that helped America set foot on the moon.”

    Margaret Hamilton, computing pioneer who led software development for the Apollo program, dies at 90, by Janine Liberty.

    She coined the term software engineering and contributed to the field for decades.





  • Managing understanding and intent has always been important in software engineering. AI has been changing the landscape.

    Generative AI is dramatically accelerating software development, allowing teams to generate and modify code faster than ever before. For decades, software engineering has focused on managing technical debt—how code structure and implementation make systems harder to change. But in the age of AI, technical debt might no longer be the most important constraint. This article argues that the real risks are shifting toward two less visible forms of debt: cognitive debt and intent debt. Cognitive debt is the erosion of shared understanding across a team where no one can confidently explain how a system works or predict the impact of a change. Intent debt is the absence of clear goals, constraints, and rationale that explain what the system is for and guide how it should evolve, for both humans and AI agents. These debts have always existed, but GenAI accelerates their accumulation while hiding their effects. I propose how these forms of debt can be recognized in practice and suggest strategies teams can use to mitigate them.

    From Technical Debt to Cognitive and Intent Debt – Rethinking software health in the age of AI, by Margaret-Anne Storey.

    I will not yet go as far as claiming that intent debt and cognitive debt will become seen as more important than technical debt. Certainly though as risks, they are becoming more highlighted, since AI usage is increasing their probability.





  • Researchers at Google recently reported on how AI usage has been impacting developer experience.

    We summarize findings from analyzing developers’ responses to a prompt regarding how AI-powered tools have impacted their recent development workflow. We identify four tensions that developers must balance in their use of AI and suggest strategies practitioners can use to improve developer experience with AI.

    Developer Productivity for Humans: Navigating the Tensions of AI in the Software Development Lifecycle, by Jessica Baolin; Collin Green; Ciera Jaspan; Francisco Gutiérrez.

    Work saved by using AI often shifts the need for additional work elsewhere, faster code generation can also produce technical debt more quickly, producing useful code early is a different problem from getting that code production-ready, and the disconnect between competence and output can be both positive and negative.

    Tradeoffs, throughout.





  • The recordings from the recent Rails World 2026 are online. Here is the opening keynote.

    This, on the other hand, is the closing keynote.

    What a time in software engineering and this industry!





  • Interesting thoughts on the value of learning to code — when in practice we rely more and more on AI for it.

    This article explores whether learning to code is still necessary in the age of AI. Drawing on survey responses, teaching experience, and personal reflection, it examines how AI coding assistants are changing software development, the skills future technologists will need, and the importance of maintaining technical understanding in an increasingly automated world.

    The Question: Should We Still Learn to Code in the Age of AI?, by Sue Black.

    I agree with where the author landed here. Learning coding improves your thinking and it teaches you a lot about system behavior and how to shape it.

    That is valuable in shaping your intuition for productively working with AI in software engineering.





  • Given the incentives at play in software engineering and tech, generally, hype may be an unavoidable fact of life.

    Hype is a common phenomenon in competitive environments, including in software engineering. It generally involves overstating the benefits, significance, or potential impact of some new product or idea, usually before they are fully vetted. It seems, however, that some unique characteristics of software make it exceptionally susceptible to hype when compared to more traditional engineering disciplines. In this article, we first identify the reasons behind this, discuss its ramifications, and, finally, propose some potential mitigation strategies.

    The Effects of Hype in the Software Domain: Causes, Consequences, and Mitigations, by Manfred Broy and Bran Selić.

    There is potential for costly consequences, so this is clearly an important issue.





  • On the importance of not sacrificing engineering principles, when integrating AI into the software development process.

    The rise of “vibe coding” has sparked justified concerns about technical debt and code quality. However, critics misdiagnose the problem as a failure of generative AI rather than a failure of engineering discipline. The article also addresses the troubling industry trend of eliminating both junior and senior engineering roles, threatening the talent pipeline essential for effective AI-assisted development.

    Stop Blaming the AI: How Disciplined Engineering Makes Generative AI Work, by Kurt Antony Richardson.

    There is much in software that continues to be valid. It is clearly worth paying attention to those things, if you are serious about building software projects over time, even (and perhaps especially), if you use AI to do so.





  • With so much movement in the market for AI development tooling, the challenge to properly evaluate choices continues.

    AI-powered coding assistants have significantly outperformed conventional evaluation methods, creating gaps between vendor claims and actual performance. This study presents Quality Assessment for AI Development tools, a comprehensive, vendor-neutral framework evaluating coding assistants across six dimensions.

    Quality Assessment for AI Development Tools: A Comprehensive Framework for Evaluating AI Coding Assistants Beyond Vendor Claims, by Buse Erol Esirik and Ebru Gökalp.

    Some practical takeaways from the quite academic presentation: Evaluate in six different dimensions (linguistic capability, operational quality, generation ability, interaction quality, trustworthiness and sustainability). Model performance likely varies across dimensions. Take stakeholders into account – different stakeholders will weigh dimensions differently.