Ofer Shapira

We threw all our code in the trash!

Machine translation from the original post. Not reviewed by a human translator. Historical claims may no longer be current.

We threw all our code in the trash!
After a whole week of planning meetings, in which smoke came out of our ears from the number of architecture options we examined, we decided to go with a practice that would ensure we're headed in the right direction. We decided to build the new project end to end in an almost impossibly short time of two weeks, and to know in advance that everything we build over the next two weeks is going in the trash.

The only rule the engineers were given was that the system must work end to end. Nobody cared about architecture, scale, or anything related to production. Each team member focused on their small part, and the whole goal was to make it play.

Within two weeks we connected all the pieces and the system really did manage to work in unbelievable time and with many doubts until the last moment. But the real product wasn't the code itself but all the problems that were discovered along the way, which none of us could have imagined in advance before we actually built the project.

From that point we set out again, this time with a plan based on what we actually met and not on guesses. And it proved itself - within a relatively short time we reached production, with an architecture that we were all aligned around and happy with to this day.

This practice, "throw away code", was later adopted by other teams that set up new projects with us.

If you're setting out on a new project, what better way to prove feasibility than through the hands, and by running a thread through all parts of the system in minimal time to surface all the challenges you're going to meet in the coming months 🚮 It will save you so much valuable time and move you much faster to a high-quality product - and this has a cumulative effect too

Illustration for “Why we built a project just to throw it away”