App development has been a very popular topic over the last few years and as the trend shows it doesn’t appear that it will change in the near future. App development is a very young discipline and it is evolving and changing extremely quickly even for the computer field, which has been known for its fast evolving nature.
This article is part of the series which I wrote for you about software development in the present. In this very first part we focus on software architecture and who is designing it.
My job as a software architect & analyst is keeping track of those evolutions so I can choose the best possible approach when building software for our clients or give them the best possible answer to their questions.
Let me describe what SW architects like me do as their day to day routine. You probably don’t have any idea if you are not from the technical field. Well, in fact an SW architect’s duties are very similar to those of the “architects” that you might know. What architects have to do when designing a building?
- They gather all the requirements for the project
- They need to be aware of all conditions which take place
- They choose materials to build from which have to take the previous two points into consideration
- They gather a wide range of knowledge from related fields
- They plan the building according to previous points
- (Sometimes) they QC during the construction to ensure that builders are abiding by the instructions
That being said, SW architects do the exact same things. The difference is that they are not helping create buildings but they help to create amazing software. Let's break down the list so you can have the clear picture.
Architects (analysts) gather the requirements like all functions client wants to have, all platforms which should run the app etc. Furthermore they need to predict what kind of direction the project might take and keep that it mind because even when the client doesn’t say so the project will either die or evolve, nothing in between. So choices must be carefully made so that project won’t be hurt in the future.
Awareness of all conditions
Like with the construction of a building, when creating software architects are constrained by several factors. The most common one is the budget, it is an obvious one but a lot of people still don’t get it. If the architect have a large budget he can build a house from expensive and durable materials and the same logic applies to software. If he has a limited budget he needs to find a solution which is not optimal so it will still fit your needs while reducing the impact of the drawbacks to the minimum. Another common factor is the environment i.e. the client already has some infrastructure which you will need to use or there will be other 3rd parties involved and so on. Sometimes he has to deal with privacy/security issues and he is forced to choose a solution which not only meets the functional requirements but is also compliant with security needs.
SW architects choose technologies, services, platforms and programming languages.
A wide range of knowledge from related fields
An architect needs to understand how things works in a variety of fields: Mobile apps, Web Apps, Backends, Infrastructure, so he can make the best decisions. With the speed of how those technologies and best practices change, it makes it pretty hard for the architect to keep up with all the developments. It takes a lot of time & effort. Of course when tricky questions are involved, the architect should have a team of experts for their particular fields and consult decisions with them.
Plan the building according to the previous points
After choosing the right “materials” for our situation, architects plan how the software will be structured, how the single components of the system will communicate with each other and how the final product should be made from the technical stand point.
QC during the construction
Architects should observe the development from time to time to make sure that programmers are following the blueprints.
As you can see it is a complex job which consists of several tasks from many IT fields. Based on the architect's decisions, the software team develops the entire system. Bad choices may lead to terrible results and that is why the software architect should always be up to date with the latest trends and technologies because he can save you lots of money and time and finally provide you with the great satisfaction that comes with a fully functioning and working product.
So if you are serious with your business or startup and looking for a software company for the job, you should also consider the company's architect as one of your choosing criteria.