What exactly is a software architect anyway?
Software development, relatively speaking, is an incredibly young craft. Additionally, the role of an architect within a software development organization is a very fluid one (same goes for CTO). I believe it is important to understand how an architect fits in the software development environment, both within the engineering and the business organisations, before we can discuss how to become one!
Requirement #1 – Experience and exposure
Let’s image we are equating software development to rope making. The following chart will express the equivalent experience level expected in each of the different position:
|jr developer||learns about rope|
|developer||can tie basic knots|
|senior developer||calculates rope strength and knows a lot about knots|
|architect||knows more about rope than you ever will|
|senior architect||invented nylon|
You are probably not surprised by the fact that an architect needs a considerably wide exposure to the software development craft. In fact, if an architect is responsible for ‘designing’ the structure, they certainly need to be well versed in the nuances of their field to be able to design properly. Proportionally speaking, even if a developer has a long career and a lot of experience, they may not have the potential to reach an architect level (just as not everyone can reach a C level position).
Architects are the type of people that dream in code, they are meticulous about upholding guidelines, and they understand that their decisions can have incredibly wide-ranging impact. Not everyone can maintain this level or effort, or want to deal with the stress imposed by this responsibility. If you identify with the type of personality that seeks responsibility, loves to mentor and lead, and will stand up and yell (politely) if necessary to ensure people uphold integrity and do the right thing, then read on…
Responsibilities, Skills, and Attributes
The software architect:
- is a team lead – they will step in and guide the team technically if needed
- is a technical visionary – they drive innovation through designs and solutions
- encourages innovation – helps management foster a technical organization that has an insatiable appetite for technical excellence
- understands the business incredibly well – can propose solutions that fit workflows and use cases taking into account much more than just the technical aspect
- is a great communicator – can communicate incredibly well, has a pleasant personality, is extremely approachable by anyone
- facilitates communication and ideas across business units and even across organizations
- interfaces with external 3rd parties and customers
- is an ambassador of the technical organization
- is the primary purveyor of system quality attributes – architecture is the conceptual glue that holds every phase of projects together and as an ambassador of this role upholding quality is paramount to long term success
- focuses on strategic goals yet understands tactical constraints – works within boundaries and can provide creative ideas
- exhibits open mindedness – willing to hear everyone out, even if they present contradicting solutions
- is information centric- data driven and fact based decision making abilities – will not choose a technology over another due to personal preference
- is fair – will not drive projects due to personal agenda
- is educated – constantly learning new designs, patterns, etc… (see my other blog post on this)
- is diplomatic – beating your first and yelling across the table can get you result, but if can also make you enemies, you need to master the fine art of diplomacy
- is assertive – can take a forceful stand on issues without being excessively abrasive
- can compromise – given the reality that software development runs within the context of a business, compromise if often necessary to ensure success
- is an expert – in order to lead you need to earn the trust, respect, and confidence of your peers in part through your mastery of your field
There are many more attributes that an architect needs to exhibit but these are some of my favorites. You can see move over at softwarearchitectures.com. Over my tenure as a software architect I have come to believe these core skills are essential to maintaining long term personal and organization success in the role while continuing to growing.
How do I maintain my position as a successful software architect?
I’ve you’ve reached this level you probably already have the skills necessary to keep growing in your position. If not, here are some key actionable steps you can take to ensure your maintain your role:
- Continuously seeks to improve. Technology is constantly changing and we much constantly adapt to new patterns, designs, technologies, processes, etc..
- Start a blog such as this! A blog helps you solidify your thoughts, helps spread your ideas to the world, and makes you responsible and accountable for your words.
- Katas! Make is a primary goal to practice and improve your coding abilities. (new technology stacks, new languages, new patterns, etc..)
- Present the same idea to multiple target audiences. Each part of an organization (Project Management, Account Management, Product Delivery, Support, etc..) all have different levels of technical and business experience as well as different styles of thinking. Presenting to different groups forces you to learn to adjust your verbiage and presentation styles to fit multiple audiences.
- Be disciplined, always put your best effort into everything you do. An architects responsibility has vast implications and all solutions should be thought through and supported by factual data.
- Work along side business folks (ride alongs) to understand business lingo and the concerns your business organisation is trying to solve.
- Attend seminars, meetups, and be an active member of a professional group
- Aim to get certified on a constant basis to measure your ability to truly understand what you are learning
- Surround yourself with like minded, highly intelligent individuals
- Make time for yourself. A proper work life balance is key to maintain long term success!
I hope this short post offers you a hint, a glimpse, at the role of the software architect. If you are excited by this post and wish to learn more about the craft feel free to connect with me to learn more via the social networking icons at the bottom of this page!
Additionally. I hope you enjoyed reading this post as much as I enjoyed writing it. If so, please share it with your friends using the buttons below!