Automating for 10x Results: A Software Engineer's Guide

Software Engineering

Discover how software engineers drive exponential company growth by transforming manual processes into scalable, automated systems. Learn a four-step algorithm to identify, document, script, and build tools for repetitive tasks, freeing up engineering resources and empowering business teams. This guide explores strategies to become a force multiplier and avoid becoming a bottleneck.

The key to achieving exponential results lies in significantly reducing manual effort. This is where software engineers excel, building robust systems and tools that empower companies to scale efficiently without being overwhelmed by operational overhead. Such contributions enhance career trajectory, foster professional reputation, and drive equity.

Effort vs Growth

The Imperative of Scalable Operations

Initial processes often begin as unstructured, manual endeavors. Engineers might directly edit databases, make on-the-fly decisions, and rely on first principles thinking for every task. This agile approach is excellent in the early stages of a product's lifecycle, allowing for rapid iteration and a focus on customer value over repeatable scalability.

However, as an organization grows, this manual approach becomes a significant bottleneck. Key individuals become indispensable for specific tasks, hindering vacations, increasing the frequency of one-off requests, and diverting focus from critical development. Engineers find themselves constantly interrupted with requests like: "Could you please handle that task? The one only you know how to do? You're so skilled at it."

Whether it involves deployments, updating product information, resolving database issues, or fixing bugs, while such attention might boost ego, it ultimately turns the engineer into a blocker. It becomes crucial to engineer a solution that removes oneself from these repetitive tasks.

A Systematic Approach to Automation

To effectively automate any process, consider the following four-step algorithm:

  1. Perform the Work Manually: Initially, execute the task manually. This critical step ensures a comprehensive understanding of every detail and involved action. It's not strictly necessary for one person to perform all instances, but someone should thoroughly document the manual execution. If the volume of tasks is too large to do by hand, performing a few examples can still provide invaluable clarity.

  2. Document the Work: As the task is performed, meticulously record each step. For infrequent tasks, this serves as a memory aid, making the process faster and less disruptive. Formulate these steps as a checklist, striving to follow it consistently. Checklists are proven to significantly reduce procedural errors, particularly in critical fields like surgery. This documentation evolves into a Standard Operating Procedure (SOP) or a runbook. Once documented, the knowledge is no longer confined to an individual's mind, making it accessible and transferable across the team. An SOP can transform even frequent tasks into manageable routines, allowing for mindful execution when a mental break from complex problem-solving is needed. Consider attaching an SOP to every production alert or warning to enhance observability.

  3. Script the Work: Continuously update the SOP based on feedback and evolving needs, encouraging team contributions. Once the SOP stabilizes and thoroughly accounts for exceptions, it's ready to be translated into code. The frustration stemming from repetitive tasks is a strong indicator of automation potential. For many engineering-centric tasks, a script can be developed that engineers can easily execute.

  4. Build the Tool: For tasks that need to be offloaded from engineering and empower other users with self-service capabilities, develop a dedicated tool. This can start by wrapping an existing script with an intuitive user interface. For instance, at Tia, engineers manually managed bookable appointment types via migrations for years. Recognizing the inefficiency, a new form was integrated into their admin tool, allowing the operations team to independently add appointment types. This initiative saved engineering an estimated month of work annually and empowered the business operations team to iterate without engineering dependency. This page gradually evolved into a comprehensive Content Management System (CMS), becoming an integral part of business processes, requiring only occasional updates as new requirements emerge. Similarly, at Plasmidsaurus, shipping a product CMS enabled product managers and operations personnel to update information as needed, without requiring a deployment or engineering intervention.

This iterative approach to automation allows software engineers to transform manual burdens into scalable, efficient systems, ultimately fostering rapid organizational growth and maximizing their impact.