Dear reader,
I previously wrote an article on Software Engineer v/s
Sr.Software
Engineer and also how to get promoted to a Senior Software engineer and I received an
overwhelming response for it. So thank you for that.
This time I want to shed light on what a Software Architect does differently as compared to a Jr. /
Sr.
Software Engineer. This way, those hard-working engineers who want to become a Software Architect
someday will get an idea on what to do to achieve their goal.
Let's look at some of the aspects that differentiate between the two.
1. Technical design of the system.
Software Engineers will usually implement an already created design. They also add new features to
the
existing technical design of the system. Sometimes, they will also create designs but with some sort
of
assistance.
Software Architects will analyze the gaps in the software system and will create new design
documents
for reference. They will make sure that the design is ambiguity-free because it will be implemented
by
the engineers in the future.
2. The Code.
Software Engineers, of course, will write good quality code and implement a system. They will make
sure
a certain functionality is completed so that it can be integrated with the entire application
workflow.
Software Architects will also write code. The only difference is that they create an initial
framework
or base classes and define interfaces of the system. They will be involved in understanding the code
of
all the features of the system until they are integrated and tested.
3. Application ownership.
Software Engineers do possess ownership of the features that they implement. They will make sure
that
the app is tested and integrated. They also take account of the issues that they encounter while
application integration and support during application maintenance.
Software Architects, on the other hand, take up end-to-end application ownership including all the
features that make up the complete product. They are the ones who will need to be aware of the
integration issues and predict them before the features are merged. They will need to be responsible
for
the requirement to delivery match aspect of the application.
4. Project Roadmap.
Software Engineers know about the current project roadmap and they will make sure the tasks are
completed and the code is written that achieves the required software functionality.
Software Architects will be involved in creating these roadmaps, timelines and will be responsible
for
the delivery / deadlines and code cut-off dates. They continuously track the progress during all
phases
of software development life cycle. They will break the epic into independent tasks so that it can
be
divided among engineers.
5. What's next ?
Software Engineers (usually) will make sure that the software implementation + testing is completed
and
will wait for the next functionality / software to implement.
Software Architects will have a pretty good idea about what is coming next when a project completes.
They will make sure the team gets new work and start this cycle of designing, road mapping and task
division all over again.....and again....and again. They don't wait for inputs. They create
opportunities and investigate the gaps in the system and keep them ready for proposing solutions to
the
Leadership. They will ensure that the projects are approved so that fellow engineers will get the
opportunity to start implementation.
That being said,
Point #5 is probably the most important one and it clearly separates an Architect from a developer.
I'll close this article by saying :
Architecting' is an ' Art'. Both of them begin with the same 2 letters