What Makes a Good Engineer - Article Recap
A recap of Moxie Marlinspike's article on the qualities that make a good engineer, emphasizing how software engineering is a creative discovery process that requires understanding abstractions, constraints, and bidirectional vision-engineering relationships.
- Engineering vs. science: Software engineering straddles the line between science (discovery in unknowns) and engineering (building within known constraints).
- Software as discovery: Though built on fully understood computers, software still involves a lot of discovery—exploring new ways to achieve a vision within constraints.
- Inherently creative: Engineering isn't just assembling known parts; it's about creative exploration of possibilities and solutions.
- Intertwined vision and engineering: The relationship between "vision" (what you want to create) and "engineering" (how you build it) is not strictly linear.
- Bidirectional process: As engineers work, their understanding and vision evolve together—solutions and goals adapt to each other dynamically.
- Not just execution: Software design is a bidirectional process where implementation insights inform and refine the original vision.
- Understanding abstractions: Good engineers recognize abstraction layers (APIs, frameworks) as shorthands for deeper functionality, not black boxes.
- Looking beneath: Mastery means knowing what sits beneath abstractions, enabling better problem-solving and innovation.
- Avoiding black box thinking: Treating abstractions as opaque limits understanding and makes debugging or optimization difficult.
- Constraint awareness: Good engineers deeply understand constraints—hardware limits, organizational structure, or scalability issues.
- Balancing ambition and feasibility: Factor constraints into work, ensuring solutions that actually work in practice, not just in theory.
- Practical solutions: Balance creative ambition with real-world limitations to deliver working, maintainable systems.
- Critical thinking: Break down problems methodically, debug efficiently, and develop solutions that solve both immediate and root causes.
- Systematic approach: Good engineers don't just fix symptoms but understand and address underlying issues.
- Curiosity and discovery: Even in "known" domains like software, great engineers maintain the spirit of discovery and remain open-minded.
- Continuous learning: Eager to learn from unexpected sources and explore new approaches and technologies.
- Mentorship and leadership: Good engineers grow others, sharing knowledge, setting examples, and encouraging collaborative learning environments.
- Teaching what you know: Help others develop skills and understanding rather than hoarding knowledge.
- Clear communication: Translating technical concepts for both technical and non-technical audiences is key to effectiveness.
- Documentation matters: Well-documented code and articulate team interactions are marks of great engineers.
- Bridging gaps: Ability to explain complexity simply makes engineers valuable across the organization.
- Persistence: Stay patient when facing difficult problems, working through challenges systematically.
- Adaptability: Adapt to new challenges and find creative inspiration in everyday experiences.
- Never assuming mastery: The best engineers never assume they already know everything—they remain humble and curious.
- Organizational culture: While individual engineers achieve a lot, the most successful products come from organizations that institutionalize good engineering qualities.
- Cultural engineering: Organizations succeed by fostering open discovery, understanding constraints, encouraging learning, and maintaining clarity at every level.
The full article is available here.