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.