Having a SOLID Architectural Foundation is a key factor when Building a Future-Proof MARKET WINNING Technology Solutions and Products.

Asanka Botheju
6 min readJun 14, 2020
Photo by Immo Wegmann on Unsplash

As passionate product Engineers, we all love to build great, innovative technology solutions to our clients and we genuinely put all efforts to provide better, intelligent technology solutions that add real value to our customers which can help them stay ahead in the competition to gain positive business outcomes such as market position and profitability, etc.

Below are some of the things that you can think of in order to create a Market Winning Technology Solutions.

· Market Research and Competitor Analysis.

· Strategy & Continuous Innovation.

· Focused Research & Development.

· Right Capacity Planning & Sustainability Strategies.

· Best Practices based Standardized Processes & Guidelines On Design, Development, and Architecture.

· Hyper Automation.

· In-House People, Their (Technical/Domain) Knowledge & Passion

· Continues Integration & Continues Delivery.

· Right Instrumentation Tools & Monitoring Systems

· Planning, Execution, Monitoring, Controlling, and Continuous Improvements: Considering the three pillars of Project Management: Scope (Features & Functionality), Resources (Cost/Budget) & Schedule (Time))

· Technology Know-How to apply the right technology, solution, and strategy.

· Software Architecture (At both the Technical & Solution levels).

What is Architecture and why is it so important to do that right in the first place?

There could be many definitions of software architecture?

One would say, it's the art or practice of designing and constructing a software system. another one could say, its the creation of a blueprint of the system based on the requirements.

And I would say, it’s a combination of the above with few key attributes which are getting added on top of the above definitions.

Key Attributes

Below are some key attributes you can consider while you are designing your solutions.

· The flexibility of the Design for change. It could be a feature change, the entire business process/model change or enhancement that you need to make in your solution. If I asked the same in another way, that is, how flexible is your architecture design to cater to the changing and demanding needs of today's business world and your customer requirements.

· The Cost of Change: What's the cost of incorporating such a change (mentioned above) to your solution down the line during the lifecycle of the product.

It’s a good practice to consider the above key attributes always along with any other domain/business-specific needs and non-functional requirements such as security, scalability, performance, usability, consistency, reliability and integrity when you are designing your software architecture as that would pay-off well in long term in terms of the flexibility of your system for change and reduction in the cost of change when such change happens.

Consider quality attributes, tactics, and trade-off analysis during your Architecture Design efforts as that would help you to sort of compare and come up with the ideal technology and design strategy for the solution that you are building.

Further, you should look at the solution in a broader view, not just from a technical point of view, but also at the entire solution as a whole. design for enhanced usability and user experience can help you to take your product to the next level.

Knowledge Matters

Having a widespread knowledge of cloud platforms, development platforms, programming languages, programming models can serve the organization and your customers well.

You can implement different solutions, use different technologies, and strategies to solve the same business problem. But having that widespread knowledge comes handy when you are laying out the overall solution structures since you know how different technologies solve the problem at hand and so you can choose the best for your customer. Being able to apply the ideal or the most suited approach at the first place is a great thing, rather than making changes in time to time as making changes involves a cost and greater effort (re-designing/re-develop/re-test/re-automate, etc) you need to put in order to get the things back to the right track. That's why we need to have a SOLID architectural foundation from the first place.

It's the same in many other fields including the Construction field, where they build multi-floor houses and apartments. When you have a solid foundation at first then you can build other floors on top of it, but if the foundation is not good/shaky then you can’t build anything on top and all your costs and efforts will be a waste.

So, it's important to consider the same when building software solutions in a consistent manner. anytime when you are introducing a significant change (network, infrastructure, code to cater to customers' future business needs) go through the whole design process and re-evaluate your design and impact to other parts of the solution by the new change.

Being customer-centric is the key

Always think of ways to reduce the cost and deliver a great user experience to your customers. One reason why you would do that is like you can be proud and satisfy yourself from the contribution made to help your customer to solve their pain points and you helped them to serve their customers well. So, what that means is something like this “If our customer succeeds that means we succeed too”. We would get better recognition, trust, and credibility from the customer. further, we could get more opportunities to make future enhancements may be to the same product, or as the customer is succeeding and diversifying, they might expand their business and we might get more opportunities to do business with them and being a technology partner for them instead of being a regular software services company.

Continuous Innovation

Innovation plays a key role in the success and sustainability of your product in the market, therefore continuous innovation to help customers to resolve their pain points via the technology solutions we deliver and innovation strategies to take the product to the next level is vital. Imagine how amazing it to see the products we build are on top in the Market.

Hyper Automation

Hyperautomation is the application of advanced technologies like RPA, Artificial Intelligence, machine learning, and Process Mining to augment workers and automate processes in ways that are significantly more impactful than traditional automation capabilities.

The key point in this is to make sure you are using the right tool and technology, strategy depending on the need and extensibility to cater to future needs.

Usability & User Experience

Usability is part of the broader term “user experience” and refers to the ease of access and/or use of a product or website. Design is not usable or unusable per se; its features, together with the context of the user (what the user wants to do with it and the user’s environment), determine its level of usability.

Read more about Usability and User Experience here…

Software Security Plays A Key Role

No matter how good your products are, if there is a gap in your product or technology solution then that would have an adverse impact on your business and reputation, so we should pay extra attention to make sure, we are good and safe from security threats.

There are secure engineering techniques and different tools out there to ensure your software product is threat-safe and to minimize risk.

There are different types of Software/Infrastructure Security Testing Tools;

· Static Code Analysis including a third-party dependency checking

· Dynamic Code Analysis

· Platform Level Security Analysis

As great Product Engineers, our duty is to put all efforts and thinking, research, innovation to make sure our customer wins and our product wins which will greatly enhance our business reputation and enables us to get more referrals to businesses automagically :)

Consider those in your ongoing or next design and make it a nice one.

Thank you for your time & I hope this was helpful…

--

--

Asanka Botheju

Professional Software Architect | Cloud Architect AWS / AZURE | DevOps Engineer | Cloud & Technology Enthusiast | AWS Community Builder