For any project, follow these steps

1️⃣ Make it work
2️⃣ Make it right
3️⃣ Make it fast

In this exact order

It's important. Let me explain why

Thread 👇
1️⃣ Make it work

When starting a project

🔸 Experiment
🔸 Figure out how it should work
🔸 Cut corners
🔸 Make ugly hacks

Do anything it takes to solve the problem — and have a working system
2️⃣ Make it right

When it's validated, we improve it:

🔸 Make it more stable
🔸 Get rid of the hacks
🔸 Polish the code

Here we pay back the technical debt from step 1️⃣
3️⃣ Make it fast

Once it serves users

🔸 Learn the workload
🔸 Find bottlenecks
🔸 Tune our application

Here we optimize the solution from step 2️⃣
If we don't follow the steps in this order, we may get into premature optimization

We lose focus and spend time doing micro-optimizations instead of bringing value
Premature optimization can take many forms:

🔸 Making our app faster without proper benchmarking
🔸 Designing the perfect architecture
🔸 Getting the OOP design right from the start

Don't do it, focus on making it work first
You can read more about it here:

https://wiki.c2.com/?MakeItWorkMakeItRightMakeItFast
You can follow @Al_Grigor.
Tip: mention @twtextapp on a Twitter thread with the keyword “unroll” to get a link to it.

Latest Threads Unrolled:

By continuing to use the site, you are consenting to the use of cookies as explained in our Cookie Policy to improve your experience.