The article discusses how Brooks' surgical team model, which emphasizes small, cohesive teams for software development, can be applied to AI development. It explores the parallels between surgical teams and effective AI development teams, highlighting the importance of specialized roles and collaboration.
#software-engineering
30 items
The article questions whether cloud-based coding agents are being used in real workflows, noting their advantages like persistent environments and asynchronous execution. It observes that while major tools are investing in cloud agents, much discussion still focuses on editor UX and autocomplete features.
The Software Engineering Handbook for Modern Teams provides comprehensive guidance and best practices for contemporary software development teams. It covers essential topics and methodologies relevant to today's engineering environments.
A guide from 2002 offering advice on becoming a programmer, covering personal skills, teamwork, and career development aspects of software engineering.
Agent Harness Engineering is a framework for building AI agents that combines prompt engineering with system design principles. It focuses on creating reliable, scalable agents through structured workflows and systematic testing approaches.
The article discusses how focusing solely on solutions can obscure underlying problems and create new issues. It argues that solutions often become problems themselves when implemented without proper consideration of root causes.
The article lists ten common oncall worries that engineers should not be overly concerned about, arguing that most issues like being woken up, handling unfamiliar systems, or making mistakes are manageable with proper processes, support, and a healthy team culture.
Employers expect software engineers to use AI tools for coding assistance, debugging, and documentation. They also want engineers to understand AI limitations and integrate AI responsibly into development workflows. The focus is on leveraging AI to enhance productivity while maintaining code quality.
The author created a research test suite for analyzing software metrics over time. This tool allows researchers to study how software metrics evolve across different programming languages and projects. The test suite provides a standardized framework for historical analysis of code metrics.
Software quality is declining across the industry as companies prioritize rapid feature delivery over reliability. This trend leads to more bugs, security vulnerabilities, and user frustration despite technological advancements.
The article discusses essential skills software engineers should develop in the era of large language models, including prompt engineering, understanding AI limitations, and integrating LLMs into development workflows. It emphasizes the need to adapt traditional programming approaches while maintaining core software engineering principles.
The article discusses strategies for managing context in long-running agentic applications, focusing on techniques to maintain state and handle complex workflows over extended periods. It explores architectural approaches for preserving conversational context and operational continuity in AI-driven systems.
The website presents a collection of principles and observations about software development, including various "laws" that describe common patterns and pitfalls in the field. These laws cover topics ranging from project management and system design to programming practices and team dynamics.
Postmortem-Driven Development is an approach that uses postmortems to drive engineering improvements. It involves analyzing incidents to identify root causes and implementing changes to prevent recurrence. This method helps teams learn from failures and build more resilient systems.
A non-coder built a 22,000-line dinner scheduling app using AI agents, despite challenges with AI code rot and hallucinations. The project involved parsing recipe URLs and creating a Directed Acyclic Graph scheduling engine. Success required learning to manage AI agents rather than learning to code.
The article discusses using small proof-oriented tests to identify gaps in software specifications. It explains how formal verification techniques can help detect missing requirements or ambiguous specifications before implementation.
Software engineering consists of three layers: the foundation layer of core computer science principles, the craft layer of practical development skills, and the engineering layer of systematic problem-solving approaches. These layers represent the progression from theoretical knowledge to professional practice in building reliable software systems.
A US SaaS startup is hiring an AI Principal Software Engineer for a remote position in Latin America or onsite in San Francisco. The role involves leading AI software engineering initiatives for the company.
The article discusses how established software engineering practices like modular design, code reuse, and documentation can help reduce token usage in AI applications. It explains that these techniques improve efficiency and lower costs when working with language models.
The article examines the consequences of removing foundational components from security tools, potentially compromising their effectiveness and reliability. It discusses how such changes can impact the overall security posture and functionality of the systems they protect.
An early-career software engineer with strong programming skills asks how to improve at the more managerial aspects of software engineering, including design documentation, decision tracking, infrastructure planning, and compliance work.
Software engineering consists of three layers: the craft of writing code, the engineering of building systems, and the architecture of designing solutions. Each layer builds upon the previous one, with different skills and focus areas required at each level.
The article presents a practitioner's perspective on program analysis, discussing practical applications and real-world implementation considerations. It explores how program analysis techniques are used in software development tools and engineering workflows.
A senior engineer shares lessons learned from experience, including the importance of communication, mentorship, and balancing technical depth with broader perspective. The insights cover professional growth and team dynamics in software engineering.
The article discusses how probabilistic engineering approaches can be applied to human systems, examining the concept of the 24/7 employee through the lens of probability and system reliability rather than traditional management perspectives.
Loop-invariant code motion is a compiler optimization technique that moves code outside of loops to improve execution speed. This optimization identifies computations that produce the same result in every loop iteration and relocates them before or after the loop.
The author, a seasoned engineer, expresses that compilers can still surprise and delight even experienced professionals in the field.
The article discusses software engineering folklore, noting that safety is often determined retrospectively rather than during development. It examines how systems are labeled as safe only after they have proven reliable over time.
AI companies are investing billions to hire engineers rather than replace them, suggesting that software engineering jobs remain secure despite AI's coding capabilities.
Some engineers dismiss AI coding tools as 'garbage' without trying modern versions, and their outdated opinions are costing them professionally.