Planning for the corners in software design

Planning for the corners in software design

The critical skill that is an indicator of success when designing software is planning for the corner cases. I often describe this in relation to a project or feature as a hallway, and just because you can't see the terminus you can assume there are branches. There are going to be corners to look around. When you approach a corner in an office building perspective lets you see a limited hint as to whats coming next and as you get closer it becomes a little more clear.

While this metaphor might be something you get a chance to experience often, it's the same exercise you take in software design. When designing a feature, you have to project yourself down the hallway. Maybe you are doing this as the user exploring the product or as the next developer expanding the product. It's probably a combination, to be honest.

Here's the secret: oftentimes, you can predict what's around the corner in an office because offices are systems. Its not going to be an open field of flowers (wouldn't that be nice). Software designs are not going to evolve into illogical paths either (I guess they could but I wouldn't expect anyone to use them). Point is pragmatism in software design is not about doing the least and iterating its planning for the optimal and iterating (Subtle I know).

I don't know if I blame this on inexperience, LEAN, or a misaligned understanding of the cost of software maintenance. But planning for the least is going to be a bad time, and the speed at which that bad time arrives is strictly based on situational ambiguity—not the ambiguity of the ask, say, in a ticket, but the ambiguity of purpose, the "spiritual goal" being served.

Good software designs result from comprehension, not actualization, which is the difference between understanding and giving the appearance of reality (Again, subtle). A plan can present a reality and is arguably complete while lacking understanding. It floats in the correct space, but it's not connected to all the other hallways in the office. Comprehension leads to completeness. This isn't an argument for Test DD(TDD) directly, but I could find an annex where I would put up posters for it cause it helps. But this is pre-TDD, pre-Technical DD, and starts at the user or developer experience. It is the beginning of the hallway and ends when we have projected ourselves towards enough of the hallway offshoots and corners to hint at the actual solution.

Ok, so now that you understand the skill, get ready for the next challenge: getting others to believe you. I think you may have experienced developers who "go off into the woods on their own" and ask for no feedback on a design and build something that works but isn't worth talking about. This is a coping strategy where a decision has been made, and the efforts required to sell the vision aren't worth the effort. They decided, in isolation, that just completing the act was proof enough. Not everyone has the right to put their voice on a design; only those with comprehension should make the decisions. It's a middle ground between design by committee and collaborative design. Simply put, not everything needs an RFC; some things need to be built, and some things need to be planned, but in design, the shorter the cycle and the more iterations, the better.

To view or add a comment, sign in

More articles by Paul Scarrone

  • Tools that made me happy in `24

    Tools that made me happy in `24

    A short list of the "new" tech I used last year that made me very happy. In #DevEx tradition, these are about Dev…

  • An Internet of Changing Morality

    An Internet of Changing Morality

    As one might expect, Automated Imitation has dramatically changed the sales position for what it is to produce code and…

  • Learning a new Language (The slow way)

    Learning a new Language (The slow way)

    How to learn a new programming language? Of course, there are numerous good reasons to learn a new programming…

    3 Comments
  • Monolith Deconstruction: Phase 0 a Future World

    Monolith Deconstruction: Phase 0 a Future World

    Atomic and heterogeneous Does Conway's Law imply that your development and deployment processes must be homogenous? How…

  • I Love Being An Interviewer

    I Love Being An Interviewer

    I am sure that some of you may look at interviewing like going to the dentist. Fundamentally, it's not a terrible…

    5 Comments
  • Written Culture: Metaphor of the Lake

    Written Culture: Metaphor of the Lake

    Written Culture "Podcast 1" Welcome to 2022 In the time of resolutions, here is one for you. I would like to…

  • Is Pragmatism a Dogma in Software?

    Is Pragmatism a Dogma in Software?

    Considering the influence of the seminal text, The Pragmatic Programmer, I often consider the intention of the lessons…

    2 Comments
  • The Good Sergeant

    The Good Sergeant

    As I age in my software development career, I find myself falling into unofficial #management roles. Analogous to a…

    1 Comment
  • Thank You for Your Code Review

    Thank You for Your Code Review

    In July, I joined the PhalconPHP documentation team. It has been an amazing experience and I wanted to give you some of…

  • Does Impostor Sydrome Go Away?

    Does Impostor Sydrome Go Away?

    NO! But we can learn to not be controlled by its. Recently I was thrust into a new position with and assigned a…

Insights from the community

Others also viewed

Explore topics