Problem

What problem do we solve?

Software Engineering teams could make bad architectural decisions leading to time-consuming revisions, costly mistakes and project failures.

Software architecture is one of the key elements that decides the success of a software engineering project. Therefore good software architectural decision making is critical for a project. Yet there are many examples in the industry where the software engineering teams fail to make right decisions and end up costing time and money.

High failure rates

As per the Boston Consulting Group’s research in 2021, 70% of digital transformation efforts fall short of meeting targets. A 2020 CISQ report found that the total cost of unsuccessful development projects only in the US is estimated at $260B.

There are various reasons for failures of these projects. But having right software architecture and strategy in these projects could have made a significant difference to the statistics.

Breaking down the elements

We understand that a software architectural decision is the fundamental element of software architecture planing & documentation. Based on that, we asked what inputs and outputs go into software architecture decisions so we can improve the quality of software architectural decisions by improving the quality of inputs.

Inputs & Outputs of Software Architectural Decisions

Input: System’s expected outcomes

System’s expected out comes are the features that stakeholders are expecting from a Software System that will be developed or being developed. These could be based on functional requirements that terns into features or none functional requirements also know as quality attributes such as Security, Scalability, Availability, etc. To make better architectural decisions teams will need to have a clear understanding of business domain and the business strategies.

So how do we make sure that we have higher quality of this input to improve Software architectural decision making? The only answer would be collaboration. By having right level of collaboration and getting the customer and management involved, architects will be able to understand the system expectations with far less ambiguity that will lead to better decision making.

Input: Architectural problem solving expertise

Other input that goes into the mix is architectural problem solving skills of the decision maker or team. No matter how well you know the customer’s domain if you do not have right knowledge of practical and available technology in the industry to solve the problem, you won’t be able to make better decisions. And also the experience will play a key role so the decision maker has a better understanding of what works and what doesn’t based on the past experience.

There are various ways to improve the quality of this input, such as following.

  • Hire experienced talent
  • Collaboration (Brain storming, Architecture decision reviews, Help from experts)
  • Books and online resources such as articles and blogs
  • Learn from other’s experiences
  • PoCs (Quick proof of concept implementations to test decisions)

Feedback Loop

While improving the quality of above two inputs it is difficult to make the architectural decisions at one go. There has to be a good feedback loop that constantly correct and guide the architectural decision making. It is also important to make right decisions at the right stage of development phase so you leave space to make important decisions later with better inputs and feedback later on.

Output: Implementation Strategy

Main outcome of the architectural decision is the implementation strategy. That’ll have high-level instructions for developers to do the implementation. Developers may gain new knowledge and experience during the development, therefore it’s important to have a good feedback loop that feed back the new knowledge back to the architectural decision making and adjust the decisions if required. Again the way to achieve good feedback loops will be right level of collaboration and communication.

Output: Project scoping & Resource Planing

Software architectural decisions will be an important ingredient for scoping the project and to plan the required resources. These decisions will help to understand involved workload and will demand the decision makers to make them earlier in the project life cycle. Therefore it is important to make the right decision that are required to achieve these outputs and delay the decisions that are not required to make upfront. Quality of these outputs will directly impact the success of the project. Also you would have to feedback the information you gain from project scoping and resource planing back to the decision making and adjust the decisions accordingly.

Solution

A collaborative software architecture design platform

Build a collaborative, simplified software architecture modelling platform that improves the quality of two inputs (+ feedback loop) of making better software architectural decisions.

As an experiment we are planing to start with building a simple platform for architects and engineers to share their existing architecture designs and discuss about them. That will help them to gain experience from each other as a community.

Customer Research

Interviewing process

As an early stage startup, We are interviewing Software Engineers, Architects and Managers to gain an understanding of their past experience in software engineering projects related to documentation of software architecture and decision making.

Weekly Interviews Count
Contributing to the Research

Got something different to add? We would love to hear from you.

LinkedIn: https://www.linkedin.com/in/shanikaw
Email: shanika@tecture.io