What Is The Goal Of a Software Architect?


In this article, we have a close look at what your goal as an architect should be. Before reading any further, take a piece of paper and put down the list of goals from your perspective.

This is the second article in the following series of articles on Software Architecture :

Technology Enables/Supports Business

The most important point to understand is that technology enables and supports businesses. That is the primary reason why we build awesome applications and frameworks.

For example, Netflix built an excellent microservices architecture, in order to support its business and consumer needs. Netflix’s architecture enables them to provide an out-of-this-world movie streaming experience to all their customers. Simply having great technology will not help them survive.

Your role as an architect is very similar - architect applications that support business needs.

What Are These Business Needs?

The business needs can be put into the following categories:

Functional Requirements

Netflix might say it needs a web page where all the available movies are listed. A user should then be able to select a movie by clicking on it, and watch it. This is an example of a functional requirement. All businesses have them.

Non Functional Requirements

Netflix might put down a condition that the application needs to support over 100,000 users. The amount of time needed to load a page should not exceed 2 seconds. Also, application should be very secure. In addition, the system should be available 99.9999% of the time. These are all non functional requirements.

Quick Feature Releases

In general, if you get a fresh requirement today, you don’t want it be delivered 6 months down the line. There is a need for early delivery of features.

High performance organizations such as Facebook, Twitter, Amazon and Netflix do multiple feature releases in a single day.

Early Feedback

Another thing that all businesses need is early feedback. If a system is down, a particular feature is not working as expected, or if a large number of users don’t like a particular feature, the business wants to know of it as early as possible.

Quick Troubleshooting And Support

In today’s customer-centered world, it is of high importance that you have teams to deliver quick troubleshooting, and excellent customer support services. You also need to solve any problems that customers raise, very quickly.

Focus On The Right Things as an Architect

A lot of technology folks are obsessed with technology - tools, frameworks, languages and stuff like that. These are very important in their own right, without a doubt.

However, the problems comes when we forget the very reason why the application is being built - to enable a business to succeed.

As an architect, your unwavering focus should be on the business entirely, and look to reach business goals using the right technology solutions.

Do check out our video on this:

image info

Summary

In this article, we focused on what the goals of an architect should be. We saw that most developers focus on the technology, but lose sight of the business goals. Applications are enablers of businesses. We then saw the five categories of business goals that an architect should try to meet through the application design.

Related Posts

Welcome to in28Minutes

One Stop for all your Java Spring Courses!

Design Patterns For Beginners - with Java Examples

In this guide, we give you an introduction to the world of design patterns.For each pattern, we understand 1) the pattern a2) the context in which it is applicable - with a real-world example.

Software Design - Encapsulation - with examples

Encapsulation is one of the important goals of Software Design. What is Encapsulation? Why is it important? Let's get started.

Software Design - How do you keep your design simple?

With extreme programming and agile, the focus is being lean and keeping your design simple. In this context, how do you ensure that your design remains good and evolves along with the application requirements? Here are a five tips you can focus on.

Software Design - What is Abstraction?

Abstraction is one of the fundamental concepts of software engineering. It is all about hiding complexity while building your application.

Software Design - Cohesion - with examples

High Cohesion is one of the important aims when your architect and design your software. What is it all about?

Software Design - Coupling - with examples

Software architects and programmers love low coupling. What is coupling? Why is coupling important? Let's get started.

Software Design - Introduction to Evolutionary Design

With extreme programming and agile, the focus is being lean and doing just in time design. In this context, how do you ensure that your design remains good and evolves along with the application requirements?

Software Design - Five Things To Look Out For In A Design Review

Doing a software design review is never a straightforward task, with a number of things to look out for. In this short article, we look at five such aspects, which will help you structure your review process in a better way.

Software Architecture - Why do we use Layered Architectures?

In this article, we explore the reasons why we build applications with several layers. We also look at different options for each layer in the Java world.