Pretty much anything great comes from constant iteration. The vast majority of the time, it is better to start building and learning than taking forever to create a perfect plan that is uninformed by experience.

Last year I had to get a halloween costume with 48 hours of notice. I decided to go with something easy to pull together: a classic Star Trek uniform. Black shoes, black pants, a gold shirt (command staff, naturally), and a tricorder mockup. All I needed was the badge to put on the shirt.

There wasn’t time to order a badge online, so I turned to my 3D printer. I found a few badge files online and began the process of iteration:

  • #1: Too small, needs to be bigger
  • #2: Right size but had a printing error, so couldn’t really try the vinyl overlay
  • #3: Tried to use cut vinyl for an overlay, but it was hard to place and didn’t look good
  • #4: Try it a bit smaller. Ok overall shape
  • #5: Printed a gold final version, but the vinyl star still didn’t look great
  • #6: Made a window in the top layer and put a black layer underneath. Still looked messy.
  • #7: Combined elements of the previous tries: larger badge, flatter height, and a smaller window for the black layer underneath. SHIP IT.

If there is one thing that 3D printing has taught me is that you often need to just give it a try and see how things turn out. All the preparation in the world in a CAD program helps, but nothing is better than printing your current best guess and holding that iteration in your hands. Sure, you will print a few things that get thrown immediately into the trash can. Fortunately, plastic is cheap and the rate limiting step is just the time it takes to create a print.

I had been at my current company for just a few months the first quarter of 2020. We were working on a major new vendor integration. A staff engineer on my team came to me and said “we have been planning the project for four weeks, but we will need four more weeks to complete the planning and be ready to start coding”. I weighed my options. I trusted him, and I trusted his assessment that more time was needed for planning. At the same time, I knew that we had to begin the process of iteration so we could learn how the product plan would come together in real life.

“No. I’d like you to work with the team and start coding next week. Even if we have to throw away the code, we need to start building.”

It was a risk on my part, but a calculated one. In the end, I asked what the team needed more. Did it need greater knowledge of the vendor interface or did it need greater knowledge of using the interface in real world circumstances? I decided it was the later. While it is impossible to say if this was a key project decision, we did end up shipping the system on time that quarter.

It would be cavalier to leap into a big project with zero planning. Likewise, if your goal is to reduce risk to zero then you will be planning forever. The key element then is finding the right balance between speed and risk. One of the best ways to reduce risk is by gathering data on real world operation through constant iteration. Gaining experience and letting data guide you is worth many weeks of conversation on theoretical points.

Photo: The iterations on the badge, starting from #1 on the left to the final #7 version on the right. Hot glued some magnets to the back and I was in business.