Software Architect: What It Means
When someone is hired as an architect, that's definitely a loaded term. Today, I cover a number of architect titles and their meanings.
An architect is definitely a loaded term in the IT industry.
It can mean that you've been in the business for an extended period of time or it can mean that you are the most knowledgeable person in the company on how a particular application functions.
Either way, it means you are an expert in your field with the experience to match.
In this post, I cover a number of titles a software architect can hold throughout a career while addressing each title's meaning.
What is an Architect?
An architect is what I consider to be the pinnacle of a IT professional's career. A culmination of everything they have learned throughout their career to achieve the best outcome using whatever technology to reach a company's particular goal.
While my definition is a little more personal, Wikipedia.org describes a software architect as
A software expert who makes high-level design choices and dictates technical standards, including software coding standards, tools, and platforms.
Nowadays, I feel that whatever title is given to the architect, they have a certain number of responsibilities that come with the title, including:
- The functioning and operations of various IT systems and applications
- The maintainability and integration of code in applications and systems
- Administer limited operation duties by monitoring performance of other systems
- Mentor other IT professionals by assisting with code reviews and development
That last statement makes a lot of architects twitchy.
A lot of architects feel that if they achieved a status of architect that they don't have to perform any more menial tasks...like writing code.
If you've been a software developer for a long period of time and completed a number of successful projects, you have the skills and experience of an accomplished developer to know when something will work and won't work. You pull the "bullshit" fire alarm when you recognize something amiss.
But as time goes on, architects can become a little settled in their day-to-day job and not keep up on IT trends. When a new project requisition comes around for an application, the architect nonchalantly says, "oh, we can use technology 'A' and 'B' for this project'."
Technology 'A' and 'B' are suddenly 5-10 years old. I'm sure new developers would question these decisions.
Ok, story time.
Once upon a time I heard one developer mention to another developer that he was interested in writing a blog about coding, but it takes too much time to write the examples for his posts. The one developer said to the other one, "don't worry about writing the code, you can just throw something together really quick as a theory. Let the other developers follow up on it."
I almost fell out of my chair when I heard that. If your theory doesn't hold water in a blog post, your credibility may not either.
Having the suffix architect in any title is a constant sip from the firehose (or RSS feed). You need to understand two things: Your company's IT goals and how the latest technologies can be easily implemented and integrated into your workflow as quickly as possible providing a quick ROI.
Now that we got that out of the way, there are a number of titles surrounding an architect role.
The ones I've discovered in my career include:
- Enterprise (or solutions) Architect
- Data (or information) Architect
- Software Architect
- Cloud Architect
- Web Architect
- Application (or systems) Architect
- Infrastructure Architect
Of course, with each company, they have a different meaning of what an xxxx architect is and their responsibilities. For now, I'll cover what I've experienced with these titles/roles.
An enterprise architect thinks about how projects across the enterprise can be integrated together using protocols and common coding practices.
These architects should have a minimum of 10 years of experience in the IT field with a minimum of 5 years experience in the company they currently are employed at to understand the number of systems in place and what they have to manage...and that includes if they are self-employed. ;-)
Data architects, or data miners or information architects, focus on creating, designing, and managing the data in an organization.
They determine how it will be stored, retrieved, archived, and integrated through the enterprise. These are the "SQL Slingers" of the company that can write a SQL query in their sleep. Oh, and it HAS to be optimized.
These types of architects have at least 10 years of experience of SQL under their belt.
[Update] Cloud Architect
Thanks to Alexis Commarota for pointing out the obvious one that I can't believe I missed.
A Cloud Architect is someone who manages IT resources in the cloud using either Microsoft Azure, Amazon Web Services, or other cloud hosting platforms. The cloud removes an IT department (or division for that matter) to an offsite location to be managed remotely by cloud developers or architect, but still provide flexibility with their operations and managed code.
These platforms include the following partitions of cloud computing:
- Infrastucture as a Service (IaaS) - Virtual Machines, Servers, Load Balancers, Network, etc.
- Platform as a Service (PaaS) - Execution runtime, Databases, Web Servers, etc.
- Software as a Service (SaaS) - CRM, email, virtual desktops, communication, games, etc.
Since the Cloud is still relatively new (<6 years old), anyone who has been around for a 5+ years could be considered an architect if they got into cloud development on the ground floor.
Web Architects are software developers who use a number of web technologies to build successful web sites. And I don't mean threw up a WordPress website with a couple of plugins.
Some responsibilities include building custom ecommerce stores, creating multiple areas for editing content (CMS), build web services that are SOAP- and REST-based, optimized the front-end of their site, and confirmed it's SEO- and mobile-friendly.
Since the Internet has only been around for the last 20 years, there are veterans of the web who have seen it grow into what it is today. Their tenure as an architect should be around 10-15 years and should include what kind of experience they can bring to a company based on past web projects.
I will go as far as to say that I've heard of a CWO (Chief Web Officer), but that would be more management-based titles. ;-)
A software architect is more of a general title for tenured developers of 10-15 years or more. If you want to focus on a more specialized field, examine some of the titles below as well.
Usually, these are the developers who have coded multiple successful systems, written extensive documentation, and understand multiple SDLC (software development life cycles) to build a system from soup-to-nuts without any help at all.
Since this is more of a general title, they are coined the "jack-of-all-trades, master of none," but they get 80%-90% of the work done. The remaining work could require a specialist who is an exceptional DBA or front-end developer if they require assistance.
An application architect, or systems architect, is also a type of software architect, but specializes in building a specific type of software and understands what code is necessary to build the application or system.
They have a virtual image of how they envision the system once it's completed. They express their issues based on their past experiences and provide insight on how to make the creation of the application as smooth as possible for all participating in the project.
Some companies require an architect to build a prototype and then pass that prototype onto the lead, senior, or junior developers and project managers. The application architect attends most of the meetings and sometimes provides feedback at code reviews regarding the direction of the project.
The amount of time required for this particular title can vary from 5-15 years.
As an application architect becomes more familiar with additional systems and applications, they could possibly advance to an Enterprise Architect.
An infrastructure architect is someone who designs, administers, monitors, and maintains the networking in the organization. They know what networking segments the company uses, what high-performance routers are required to upgrade the network connection, and how to setup the networking to make sure you can print to a printer, surf Facebook (kidding), and not get hacked from outside intruders.
This type of architect has been around for over 10 years in various enterprises to understand how various organizations configure their network. Once these network administrators have the knowledge and skill sets from the organizations, they take that knowledge and decide the best approach if they decide to go to another company.
I may not have covered a lot of material, but I can provide a handy list of architect reference material for aspiring architects.
- I've posted a collection of architecture bookmarks and references that I've accumulated over the past 10 years and I keep referring back to them every once in a while to make sure I'm on the right track.
- I'm currently reading a book called Software Architecture for Developers from Simon Brown and I'm definitely into it. It's definitely good reading so far.
- To understand architecture a little better, there is a website I visit frequently called High Scalability. This website has the breakdowns of how each of the big boys were configured. Examine the "All time Favorites" on the right-hand sidebar. It includes a YouTube, StackOverflow, and Amazon architecture to name a few. Excellent site for architects to examine.
If you have additional reference material, by all means, post something below in the comments and I'll make sure to include it in the post as well so you get credit for it. :-)
These architect titles are basically what most companies are in control of internally and how that person would fit into their company as an overseeing technical role. The titles have been massaged over the years to fit what each specialization of an architect can bring to each individual company.
These titles are basically an aggregation of company-known (and essentially industry-known) architect titles and what each brings to the table.
As you can see, there are a number of architect titles out there, and depending on the type of company that hires you, you need to be explicit about what you are getting into if you decide to take an "architect" position in the company.
You may be applying for a software architect position and find out they are looking for an enterprise architect. Yikes!
Did I miss an architect position? Are you in an architect-type position that I didn't mention? Post your comments below and I will add more to this post with credit to you.