When designing and building a dream house, from vision and plans to the list of essentials, it takes a great architect for all the details to come together. It’s imperative that the architect interviews the entire family to get an understanding of how you live. It might be a home with a huge great room and three small bedrooms because the family lives in a multigenerational community. Some want their own suite of rooms providing more privacy. First time home owners have different requirements and desires than experienced home owners. Perhaps the kitchen is the most important room in the house or maybe it’s the study.
Architectural design is an important phase of building a house because it encompasses the functionality and aestheticism of your home. And there are a lot of components that can change along the way based on several factors.
In the end, likely many months later, all the rooms, floor, ceiling and other components must meld perfectly. The plan or blueprint of the house is the design principle or philosophy that ensures the completed house you move into is actually what you intended. Essentially, did you build the right house? Does it have all your requirements?
It’s no different designing and building a software application, microservice or application programming interface (API). If you have a design specification — whether it’s behavioral driven or technology driven — that’s not the debate. What eventually comes to fruition is the design itself requires a lot of moving parts and pieces. All the pieces must come together; they must at least interact or rely upon one another.
Get Word out on How Data Is Organized
If you design a data infrastructure, but don’t inform anyone how the data is organized, no one can report off of it. If you design a data architecture and don’t tell anyone outside of your organization how to plug into it, no one can use it. If you design a data architecture without expectations of how a third-party product is going to deliver information into your system, that doesn’t work either.
Look at how applications and microservices interact with APIs like Experian credit check, for example. The Experian API requires a number of data fields to get a credit score returned so that when you apply for a new in-store credit card or a charge card, the applicant can be approved and get spending. If you design a product that doesn’t deliver that data to Experian, you will never get that approval. If Experian does not publish all those intersection points and drive visibility into your own API, no one will use it because they won’t know how. All these critical handoffs or intersections are points of failure.
Software Development Handoffs Add Complications
And there are a lot of handoffs in the software development process. It can get complicated. It’s human nature to avoid tasks that are unpleasant, complicated and just plain difficult — the tough stuff that nobody wants to deal with or do at their jobs. Everyone knows it needs to get done, but it’s the same story, everyone is stretched to capacity, so it can go unspoken and undone.
This, however, is the stuff that creates calamities. The product that does not work as you had envisioned, designed and intended — likely months ago.
Related Article: To Deploy or Not Deploy, That Is the Software Development Question
Developer Visibility Results in Successful Products
With developer visibility, the more you see, the more you can anticipate and document points of failure, and publish those specifications for other developers on the team. This greatly increases your chances of succeeding at the overall success of your product; we all need better and timely visibility across and throughout the development product lifecycle so we can succeed at delivering a valuable and useful product or feature.
Developer visibility focuses on three points:
Learning Opportunities
1. Know what you want to build: Why are you building what you are building? What problem are you trying to solve? Who are you building it for? This is job one, at the beginning of the project, before writing any code. Getting these answers comes from visibility into the problems and business use cases that the team wants to solve along with internal visibility into how the team wants to align goals, objectives and measurable key performance indicators (KPIs). This level of developer visibility, though very manual, comes from a good, working team. The time required in gaining visibility into the requirements of your product upfront pays off in the end.
2. Understand all your dependencies: Once the team is clear on what they are building, next understand what your dependencies are both inside and outside your application. Gain visibility into all endpoints and ask how to ensure those endpoints (for example, API) have smooth handoffs. There are also questions across developer teams where visibility into product changes and updates along the way that affect other products in development is critical. Whether it’s a code handoff or a piece of data handoff or expected functionality inside someone else’s microservice or API, developers need visibility into changes that affect the product they are building.
How are teams figuring this out today? Who oversees monitoring and communicating these possibly critical changes? Most likely, no one. Likely, issues get discovered during end-to-end testing after various assumptions have been made. Today, developers need visibility into these handoffs, and more importantly, a point person or clear set of roles and responsibilities needs to be defined. Most importantly, teams need to be empowered to be responsible for providing visibility to all the different parties involved.
3. Dive into postproduction visibility: With the product in production, did the original intention for building this product for the intended audience come true? Is the audience willing to use and adopt it? How long did it take for them to discover, rollout and use the product on a regular basis?
Related Article: The Software Developer's Fate in Low-Code/No-Code World
Avoid Being Surprised by End Results
Often, products get built and companies are surprised by the end result. As an example, at SmartBear, we built a features dashboard for one of our products, and interestingly, it wasn’t widely adopted, even though it was the most requested feature on a customer survey. Usage-based visibility for the team is key to building the right product. High-level visibility for leadership is also key. Does your vice president of engineering know how many regression tests are done by your dev team preproduction? How many end-to-end tests are being run? Do you know how long it takes to resolve bugs?
Every member of every development team knows they need to provide more visibility and transparency and documenting throughout the software development lifecycle (SDLC). Yes, teams have been surviving without true visibility for decades, but there are too many variables today, and no one can afford to roll out products that break other products. No one can afford to spend 1,000 days building a product no one will ever use.
I often joke with my team that we should never have another "bug hunt" pizza party because we should have found the problem long before. As we embark on a new year, it’s a great time for your dev team to prioritize visibility throughout the SDLC.
Shine the light on all the points of possible calamity with end-to-end developer visibility. Your team will build the right product for the right audience that they will buy and use with delight — every time.
Learn how you can join our contributor community.