My Seven Principles When Starting a New Project

There is a huge, yet often overlooked benefit to working as a freelance software engineer: the opportunity to engage with diverse teams across various sectors. This unique vantage point can offer invaluable insights into team dynamics, project management, and engineering best practices. Each new project serves as a fresh canvas to observe, learn, and refine the approach of tackling challenges effectively.

Below are my tried-and-true guidelines that have been shaped by real-world experiences; these are not merely theoretical ideals. They serve as a roadmap for navigating the complexities of any project, be it in software engineering, aerospace, or any other field.

  1. Make Your Requirements Less Dumb: Always question the validity of requirements, even if they come from someone higher up the chain. This ensures you’re not wasting time on tasks that don’t add value.
  2. Eliminate the Unnecessary: Before building a new feature or component, try to eliminate it. This ensures that only essential elements are developed, leading to a more optimized end product.
  3. Personal Accountability Over Departmental Decisions: Attach a person’s name to every requirement or constraint. This fosters individual accountability and minimizes misunderstandings.
  4. Simplify and Optimize: Be cautious of convergent logic, where the focus is solely on optimizing without questioning the necessity of the element. As Elon Musk said, “The most common error for an engineer is to optimize something that should not exist in the first place.”
  5. Everyone Should Be a Chief Engineer: Encourage team members to understand the complete subsystem at a high level. This prevents mistakes that arise from working in silos.
  6. Accelerate Cycle Time: Speed up the development process without compromising quality. Time is of the essence in both aerospace and software engineering.
  7. Automate the Mundane: Automate repetitive tasks to free up time for more complex, value-added activities.

Whether I’m working on a small-scale software project or contributing to a larger initiative, adhering to these guidelines has consistently led to more efficient, effective, and successful outcomes.