Armel is the founder of ETAPIX Global - the Big Data Company (founded in 2006). He is an experienced software developer and architect. Based in London United Kingdom, Armel is known in the London startup scene and occasionally speaks at various events. His expertise is in Java, SOA, Business Intelligence, Enterprise Search and Data Warehousing. He has worked at various fortune 100 companies including Nokia Siemens Network, Tata, Barclays Plc, SMBC among others. He's also an Open Source evangelist. Armel has posted 8 posts at DZone. You can read more from them at their website. View Full User Profile

A software architect is not a senior developer

01.06.2013
| 4944 views |
  • submit to reddit

There are some IT departments till this day who believes that by hiring a senior developer they can fulfil the role of a software architect.

Senior developers have much knowledge about the full software lifecycle and can be trained to be architects but are they are not. A software architect first and foremost is a visionary. It helps that an architect has some software development experience but most of the time, he will be exposed to a polyglot environment. Before a single line of code is written, the architect will have to map out how the business requirements can be translated into a solution. This not only requires knowledge of the business environment, from operations to infrastructure, but to present a convincing system to the stakeholders. Requirements such as scalability, latency and security will be missed from initial development stage if not tackled early on. Senior development understands their team and their abilities. Senior developers can manage workloads amongst team members and make sure that the under-development project meets its architectural goal.

The architect will decide how a requirement should be developed in order to meet the business requirement as an example:

The business has offices around the globe, the business requirements require the website to be fully loaded within 3s regardless of the location of the user and handle a minimum load of a hundred thousand users.

The above requirements are dealing with the architecture of the system not that we can authenticate a user against an Oracle DB.

It is important to note that many Software Architect were previously working as Senior Developer (such as myself) but nonetheless, many senior developers have no interest in architecture. Choosing if a system should use Tomcat or Glassfish and Apache Webserver for load balancing is the domain of the Architect. Doing code review and making sure software development pattern are well applied, is the domain of Senior Developer. A senior developer can also choose a development methodology such as SCRUM with the approval of the Project Manager. The architect would attend meetings with the various stakeholders: end users, operation, infrastructure, development and testing teams. When the business asks why is the system slow, they will turn to the architect. The architect would then have to sit down with the lead senior developer and review that the current development meets the architecture goals or if there are faults in the architecture design.

I am a software architect and I can easily communicate my vision to the development team but I am also a senior developer who still loves hacking the machines. I worked in an architecture committee and came across architects who have no development experience which I think it is wrong. An architect should appreciate other development languages not to be biased toward a single one without any merit.

I hope that more companies will appreciate the role of software architects in software projects regardless of its size.

Published at DZone with permission of its author, Armel Nene.

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)

Comments

Matthew Zielonka replied on Mon, 2013/01/07 - 9:52am

100% agree, all too often I find myself being interviewed for 'specialist development roles' to which  the interviewer often feels I have not 'enough experience' to which I feel they are missing the point of having a broad knowledge can do for a company when designing enterprise applications. I would love to see one of the 'senior developers' at these companies design a true , secure, scalable, resiliant, ntier cross domain application (Active directory domains) when they focus so much on a specific technology such as JQuery Mobile and get disappointed because I can not real off the full API! (*just an example of a recent interview). Anyway, rant over, good article Armel,.

Christophe Blin replied on Mon, 2013/01/07 - 11:45am

I would argue that an architect that is not a senior developper is useless.
They often become "ivory tower architect" and this is not only wrong as you say in your post but completely destructive to a project !

Also, I would argue that pure architects (people who are not part of the day to day team) are not so necessary with modern technologies because other people have already thougth about 90% of the problem for you (either you go with J2EE, Spring,  Play, Groovy, Symfony, Zend, ...).
The mistake is to not  recognize that fact and to reinvent the wheel once again

Armel Nene replied on Mon, 2013/01/07 - 1:12pm in response to: Matthew Zielonka

 I believe that an architect needs to be aware of technology landscape. Most of the time, the interviewers have a specific problem which is related to their day to day work and not really to an architecture approach. I have attended interviews where I was asked specific questions about the interviewer domain which I could not answer in 1 minute. They ignore the fact that they have been hitting their head against the wall for weeks but they expect you to provide a quick answer. Don't get me wrong, if you are a experienced contractor, chances are that you have dealt with similar problem in the past. I still think that more IT development team needs to be educated about the role of a software architect.

Matthew Zielonka replied on Mon, 2013/01/07 - 1:20pm in response to: Armel Nene

I would liken the role of architect to that of a strategic manager, whilst the developers, team leads etc tend to work on the shop floor. They are not Ivory towers they are different roles for different purposes.

Armel Nene replied on Mon, 2013/01/07 - 1:24pm in response to: Christophe Blin

Thanks for the comment, I agree or maybe it's because I came through the development ranks. But let's not forget that in some situations you might have a polyglot environment due to legacy system and etc... Programming patterns are in place to avoid re-inventing the wheel and project such as Google Guava  and the Apache Commons  helps during development. I have listed them because I have a Java background and those are libraries that I use quite often. Architecture is a discipline in its own which requires the ability to design a system, maybe not 100% fool proof, that meet the requirements not only at the development level but work with the business wider goals. If a company is looking to consolidate all its software in the future, then the architecture of any new project needs to reflect that. I would say that in order to be a Java Architect, as example, the architect should have a development background but a TOGAF certified architect, based on the course content, doesn't know how to write a single line of code and that's wrong.


Dan Swain replied on Tue, 2013/01/08 - 6:26pm

I trend to think that all developers are software architects we make design decisions everyday. Architecture is about design, as seemingly always it's probably better to get all the stakeholders including devs together and give them a whiteboard to bash out an architecture.

Scalability and security  are nothing more than requirements that most  teams would identify and address. My experience with architects has been mixed their best has been around their experience and technical knowledge. At worst is having to ask permission before being able to use a new library or framework. It doesn't matter if different teams use different libraries just use the most appropriate tool for the job.

The area I see value in us that of vision but that's more of an evangelist role, someone who has to get people together and negotiate how things are going to integrate.

Fadi Scavo replied on Wed, 2013/12/18 - 7:12am

It's a big topic :)

For my own experience, Structures, Elements, Views and documents must be the first concerns of Software Architect. Any extra knowledge and skills could be useful for developers to implement the architectural patterns.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.