So, Who is a Software Architect? Hunting for a Simple Answer

When I was a computer science student, I had a dream to become a software architect. Along with all of its glamorous coverage in software development community, this is probably one of the most desirable roles in software development.

Fortunately I didn’t have to wait for a long to become a Software Architect. Few small and medium success on software development given my employers  a confidence to push me towards a harder role, which with the glamorous title “Software Architect”, but eventually the lead software engineer.

The role description of software architect, which I found is over-described, over-talked – so that I become confused over time – what does a software architect do? More importantly – should they code?

With all 10 years of software development experience, I tried to recap what I did in my mind, then connected those with existing “Software Architect” definitions and finally tried to come up with the possible simplest description of software architect role (and yes! finally I convinced myself that I’m a Software Architect).

What’s the Primary Goal of an Architect?

A Software Architect balances between Productivity & Extensibility aligned with Customer Goal (Product or Project). Providing extensibility to adapt new changes is a expensive process, which of course requires productivity overhead.

image

What Does a Software Architect Deliver?

Provides technical structure and standards in given context to find the optimal solution.

image

In simple and short: Software Architects deliverables can be categorized into two

(1) Providing technical structure that meets customer and business goal, budget accordingly

(2) Providing a set of standards (best practices, conventions, cheat sheet etc) to be followed by its implementers.

Design Architects VS Implementation Architects

Software Architects can be considered in two levels:

(1) Design Architects: who designs and provide standards from top level view.

(2) Implementation Architects: does the same thing, but in addition bridges between the top level design and implementation, where he focuses taking the right decisions from deeper technical perspective (i.e. implementation of a certain algorithm with appropriate libraries etc).

For small and medium projects a single person may play both roles, whereas for complex projects or products, multiple persons may get involved.

What are the Activities involved in an Architects Role?

  • Structure
    • Technology selection
    • Defining non-functional requirements
    • Providing technical structure (logical layering, physical tiering)
    • Adaptability on changes
  • Standards
    • Defining standards (best practices, coding standards, patterns etc)
    • Mentoring

Should a Software Architect Code?

Yes, of course!

I think the reason lots of people ask this question, because they try to relate a “Software Architect”s role with Building Architect’s role. However no matter what Building Architects don’t get involved doing actual “construction” work. Software Development, on the other hand, as a knowledge based industry is completely different from this point, as it requires the architects to evolve his design with real value from implementation perspective (provided that the software implementation and building construction work is far different from intellectual engagement point of view).

No matter a person is Design or Implementation Architect; he is required to come from a strong implementation background and should have a significant involvement in coding (from 30% to 70% of his time depending on project or product size and available resources).

Further Reading

EISK

Boosting Up ASP.NET MVC Productivity!

Learn with the help of EISK, how you can make your ASP.NET skill up to 300% productive in real-world software project, along with tons of fun and excitements.

3 Comments

  • Nice post. Clear explanation about Architect. Thanks for sharing your experience!

  • You missed so many parts of Architecture.

    An architect is the technical representative for an engagement and interfaces with their clients.
    An architect ensures developers are well trained and are capable of performing their tasks.
    An architect enforces the ALM process and has unique agendas for each step.
    An architect should be capable of resolving any development downtime.
    An architect should be able to resolve critical problems at critical time to ensure a timely delivery of the product.

  • Brian Bu, check the inner details of architect's responsibility mentioned in the post :-) All I wanted to come with the simplest definition and then elaborate with more responsibilities that make sense with the initial simple definition.

Comments have been disabled for this content.