Make it work, make it right, make it fast
This isn't just a fun saying you've heard before. This makes an actual impact on your ability to deliver the right amount of work to the right problems. Too often you can find yourself stuck in the enjoyment of optimizing the thing that should not exist. Why bother making the wrong thing work or making the thing that doesn't work fast?
So first make certain that what you're trying to do is possible (make it work), then make sure what you're trying to do accomplishes the objective correctly and handles edge cases (make it right), and then figure out a way to make that fast.
Examples
- You're tasked with building a user authentication feature for an app. First, focus on making it work—users can log in and log out successfully. Once it works, move to making it right—ensure password validation, account lockouts after failed attempts, and handling edge cases like password reset and expired sessions. Only then focus on making it fast, like optimizing database queries for authentication and caching sessions for faster access.
- A feature needs to display data from an external API. You start by getting the data to load into the app as a proof of concept. Then, make it right by validating the API's response, adding error handling for network failures, and securing the connection. Once it's stable, optimize by minimizing API calls, caching data locally, and handling updates asynchronously to improve load times.
Share this principle