(Photo by Icons8 Team on Unsplash.)
Early this fall I had distinct moment of developer joy after working on a feature. The details don't matter, really. It was something I thought might take two or three days, but ended up taking just one. One day for a well tested, well documented, easily reviewable, and ultimately reliable contribution.
When it got deployed to staging for QA, I. Was. Pumped. Up.
I want you to get that pumped up. That feeling came about because I had incredible tooling in place. Testing, documentation, formatting, and static analysis put the proverbial winds at my back as I sat down to do the real, value-adding work that keeps an organization afloat. I knew exactly how to test my use case. I could mock complex network requests with ease. I had a design system to make decisions styling decisions for me. I had a wealth of auto-generated code. All this and more.
It all reminds me of my preferred way to cook, using *mise en place* (meez-awn-PLAWS). That basically means you get your cooking environment prepared (the chopping, the measuring, the weighing, putting everything you need in separate containers, etc.) before you start cooking. Once that's done, all that's left to do is compose your ingredients and work through the recipe. You're freed up to focus on technique and timing. Or to just relax more! The cans are opened. The onion is chopped. The tablespoon of lemon juice is in a small cup ready to be poured into the soup.
My charge here is to provide you with a roadmap to apply mise en place to your coding "kitchen." I want to convince you to do as much domain-agnostic, necessary setup and configuration as possible up front so that you can spend more time doing meaningful, valuable work.
AND BEING PUMPED UP ABOUT IT.
To guide situate this style of mise en place development, I have an app in mind. It's a "pharmacy". People will submit their "symptoms" in the form of emojis, and the app will deliver a song by The Avett Brothers just for that mood. We'll call it Avett Rx.
The good news is, if you have a favorite kind of app to build for this kind of scenario (todo app, blog, notes, etc), you can follow each section and just replace my particulars with your own. The same rules and tools apply.
The goal is to set up our environment in such a way that that feature development has as much momentum as possible. Overall, our mise en place approach will result in having the following decided on, ready to go, and wired up: