adamtaylor.me

Subscribe
Archives
August 12, 2024

Be the Program

Premature optimization is the root of all evil.

Many prospects I talk with begin their conversations by telling me they need custom software to solve a business problem. After all, that’s why they contacted me, right?

By the end of the conversation, we usually agree that they are not ready to build custom software yet because they haven’t identified all the boundaries and scope for their project.

Consider the following common software requests:

  • When someone submits a form, I want to automatically request a payment via Stripe.

  • When someone emails me, I want to extract certain data into a spreadsheet.

  • When someone tries to schedule an appointment, I want to only show my availabilities based on 3 different calendars.

Each situation here has an input and an output.

👉🏻 All software development must begin by identifying the inputs and outputs that your program works with.

Here’s a way to easily identify your inputs and outputs:

Imagine that you are the machine that must accomplish whatever you want your software to accomplish. Task yourself with solving the problem and notice the questions that you must answer:

  • What information (input) do you need to do this task?

  • Where does that information come from?

  • What tools would you use to transform the information into the expected output?

After you answer these questions, you will find that you designed a rudimentary logic system—a program, if you will. After using this system for a while, you’ll likely notice little edge cases or missed assumptions. It is cheap and easy to go back and change your system right now because it isn’t written in code. If you try to do this mid-project, it results in scope creep which increases cost and lowers the quality of the final product.

👉🏻 It is cheap and easy to change your system before it is written in code.


🔑 Key Takeaways

  • Trying to write software before you’ve identified inputs and outputs results in wasted time and money.

  • Imagining yourself to “Be the program” will help you identify what questions must be answered before writing the requirements into code.

Don't miss what's next. Subscribe to adamtaylor.me:
Powered by Buttondown, the easiest way to start and grow your newsletter.