When assigned a project, it’s tempting – and dangerous – to Just Start Coding. If you suffer from the urge to develop first and design later, you are not alone (there’s at least one other developer like you and he’s typing this post). Do yourself a favor and…
Design First
As the definition of “design” suggests, designing involves conceiving in the mind and planning. While I love me some low-code/no-code dragging and dropping, thinking about the problem I am trying to solve first is an excellent use of my development time.
There are a bunch of ways to accomplish design. For me, it’s not as important which way you choose to design. It’s more important that you choose to design first.
One Way to Design
Scaffolding is one way to design. You can think of scaffolding as building a visual workflow or an outline of the steps required to complete the solution. In a Microsoft Fabric Data Factory pipeline, I scaffold a solution using mostly Wait activities:
I can hear some of you thinking, “Wait, Andy. You just told us not to jump into coding.”
Yes. Yes I did. This is not coding. While it’s true that scaffolding is done in the development environment, scaffolding is design, not development. In this pipeline, I am designing and I can prove it.
- I am using (mostly) placeholder activities – Wait activities.
- I am using the Fabric Data Factory pipeline editor as a graphic design surface:
I named this Wait activity “First Step” for clarity. The description contains my thinking for what the activity placed here later should do. In this design scaffold, I am noting – at this point in time – that I intend to lookup source and destination metadata.
You may look at this and think, “This is the dumbest idea ever, Andy. Why not simply add a Lookup activity to the pipeline and move on?” That’s an excellent question; one that I am glad you asked! The answer is: My brain (and maybe yours too) works differently when I’m slinging code. I find myself plumbing the depths of both the ones and the zeroes when I code. I’m traversing a detached mental landscape. My mind is operating in logic mode. I often get so immersed in coding that I experience difficulty with verbal communication for some time after I finish coding. I am not making this up. If you read this and think, “Andy, you’re weird!” then my response is, “You don’t know the half of it. Is this the first post on this blog you’ve read??” (If so, welcome to my blog!)
Because my brain works like this when coding, I am incapable of designing while developing. I need to be intentional when choosing the right “mental mode” for the task at hand. When I need to switch modes (contexts), I find taking a walk or doing some small chore on the farm helps reset my mind’s mode. There’s just something about working with my hands that helps – even if it’s only for a few minutes.
When scaffolding, I am not developing. Promise.
I bend my rule about not developing a little when I add conditionals like Switch and If Condition activities. I use “dummy” logic – like the expression @equals(1,1) in an If Condition to encourage my mind to focus on design and not slip into development mode:
Again, the “design juice” is in the description.
Conclusion
It took practice and discipline to develop achieve this mode of thinking. My goal is to outline the steps for the solution and avoid developing. That’s a challenge because I am a developer. Hence, the discipline.
Scaffolding works for me. This is one way I design. If you design differently, please share your method in the comments.
Learn More
Sign up for Azure QuickStart Premium from Enterprise Data & Analytics and enjoy one full year of Fabric, Fabric Data Factory, Azure, and Azure Data Factory training videos for one low price! New content is added regularly.
Need Help?
Enterprise Data & Analytics delivers data engineering consulting. Let our experienced teams lead your enterprise data integration implementation. Contact us today!
Comments