Skip to content

Hammock thoughts

Should I implement or just design?

domain driven frontend, Architecting UI2 min read

Whenever I plan something new I struggle with this question? How deep do I go? Should I just sketch the dynamics between the different parts of the system, or do I look into the code and see if it works? How much of the implementation should the design include?

A few years ago I went to the Reversim Summit. I believe it was Lior Bar Adon's talk about Effective Software Design (ESD), that lit the first light for me regarding this. He said that the level of the conversation will be according to were you present it. If we are designing our system, and a table scheme is presented, if the types are in the slide we will all discuss the types and if they are the best pick. However, once stripped away, we will be able to discuss the columns themselves. Moreover, if we ignore the column and simply sketch the table name and illustrate the interaction, then that is what we will discuss.

Framing it this way, when I planned the front architecture I tried to keep it abstract for exactly these reasons. But we all now that feeling when we get a spec and ask ourselves - WTF?! Sometimes we cannot ignore the implementation details as they do affect the design, so I ask, how much of the implementation should we consider?

Obviously, the only answer is "it depends". But still I prefer to go simple and complicate when needed, or at least the problem is better understood. As I've explained previously, I'm not good at this, but I try. This goes back to the Gardner vs the Planner, but with a slight change - The Bonsai Technique.

When I discussed with my boss the Gardner vs the Planner, he introduced me to the bonsai concept. He said he likes to relate to to architecture as a bonsai tree. This is very similar to the Gardner but with using more deliberate action in framing where things grow.

So how does this work? Have you ever made dough? Me neither, but I've made a ton of tahini. You guess how much tahini you need, my suggestion is start with less than you think. Then you add water, how much? I don't know, just a bit and start stirring. If it stays too thick, add more water. Otherwise, if it's too watery, add tahini. That's it.

Similarly, create a complete design. I find this important, otherwise we won't now how to guide things as they change. Strip the design down to it's MVP - ask yourself what can we try right now, and implement that. If it works great, add more of your design and continue expanding it. If something breaks, return to the sketching board and adjust your design.

Those are my thoughts as of now - I'll try this and promise to update once I realize I'm wrong.

© 2022 by Hammock thoughts. All rights reserved.
Theme by LekoArts