As a software engineer, it is extremely important to clearly portray technical solutions for any given problem. The introduction of Micro-services and the constant evolution of new technologies has only made it harder to put forward your end to end solutions with a clear understanding between all stakeholders.
Where does it start?
Before the solution of course comes a problem.. a business problem. How is this business problem presented to the software engineer? In most cases by domain segmented requirements (functional / operational / technical) that will resolve the business problem.
Time and effort is needed by the engineer in order to analyse these documents and report back to business stakeholders. In order to resolve the business problem, the solution may involve the creation / modification of many different systems, require a skillset across a wide spectrum of technologies and a number of different arms and legs 😉
I will take a scenario of a business problem which can be classed as an Epic. I will define it as a user story
As a user I cannot log in or register to access my resources system
You probably agree with me that this is a big problem for a company that already has a resources system, however this could be a start up that chose to develop their resource system before their user authentication system.
Once analysing the current stack and methodologies I can use a handy tool called websequencediagrams to present my ideas as an architectural diagram.
This diagram displays a variety of elements in order to resolve the problem noted above
- Shows how the user will log in
- Shows how the user will register
- Shows the systems which are needed
- Shows the response codes that the client will need to manage
- Shows the flow between each system
To give valuable feedback to business stakeholders a clear understanding of each element of your solution needs to be understood end to end alongside propositions of technologies and operations (If the technical/operations requirements document allow you to make free choices on what can be used). Examples of some technologies for some services could be ReactJS for the client and NodeJS for the Identity-Service. A presentation of an architectural solution is my most preferred method, as this is where you can attain the most attention and resolve any misunderstanding / errors as quickly as possible.
It can be seen that it is important to find ways to present your solutions effectively. If information is incorrectly transmitted to stakeholders then it can be disastrous. One key point to take away also is to not reinvent the wheel, use existing methods such as this one to portray your architectural solution.