Neal Ford of ThoughtWorks chats with SE Radio’s Kim Carter about the skills required to be a successful software architect, how to create and maintain them, and how to transition from other roles, such as software engineering. Neal discusses that the required skills can be learned, you do not have to be born with special attributes. Those looking to make the transition should focus especially on learning “soft skills” before making the move, and exploring the idea of taking an architectural role temporarily to see if it suites you. He also discusses problem solving skills, why understanding history is so important, and how to recognize and avoid increasing complexity.
Software Engineering Radio (SER) Episode 287, IEEE.
Show Outline
Success Skills
In your own words, what is a software architect?
How do the required skills change from the roles of Engineering to Architecture?
What are the top 4 skills required to be the best Software Architect anyone can be?
How have these changed over the last few years and how do you see them changing over the next 5 & 10 years?
What do you think about the idea that Architects are born predisposed with a special set of attributes?
Soft skills
Problem solving
Can you discuss clever code, maybe with an anecdote, and why it’s hard to maintain?
Eliminating complexity was discussed in the book that you were involved with: “97 Things Every Software Architect Should Know”. How do we eliminate complexity, and do you have any examples?
Why is keeping things simple such an important attribute to try an obtain?
Keeping things simple is often harder than it sounds, why is that?
What do you do as an architect when you just don’t have the skills required for a particular problem?
Productivity & communications, collaborate
What key attributes and activities have you discovered to be important in order to better communicate with stakeholders?
History
Some of the quotes you’ve mentioned on your website such as:
Those who cannot remember the past are condemned to repeat it. –George Santayana
The past is never dead. It’s not even past. –William Faulkner
strike a chord with me.
Why is history so important, and why should we learn it?
How do we help our young engineers understand the importance of learning our history?
Bringing change
What pearls of wisdom do you have around successfully bringing changes into an organisation or team?
Possibly discuss Fearless Change by Mary Lynn Manns & Linda Rising
As an architect, what do the essential sales skills look like? How do you go about selling your ideas?
How much experience have you had in changing an organisations culture, and how have you gone about it?
People skills
Leadership
Is an architect a manger?
If not why not? How are they different?
What does it take to be a good mentor, what are some of the skills required?
Refactoring, or keeping technical debt levels low, often goes unseen, and it’s only the conscientious that care enough to take the initiative to do it. How do you as an architect look for these attributes of excellence in individual team members, and train others such as PO’s & managers to understand and recognise these attributes in team members?
Teams
In terms of empowering developers, what are some of the most effective ways you’ve found to do this?
What are some of your techniques in creating high performing teams, that also keep levels of technical debt at a manageable level?
Negotiation
For a while I’ve had this metaphor of the Architect’s role as being this person that rides the elevator of a tall building all day. Architects seem to be jack of all trades, master of none, or few. Riding the elevator to the basement where the Engineers work, up to the top floor where the C levels work, and translating one to the other. How do you see the Architect’s role?
What skills does an Architect need to successfully negotiate between all parties within an organisation?
Meetings
What techniques do you use to transfer essential information amongst software engineers, other than adding more meetings, which are often counter-productive?
Possibly discuss pair programming as a means for transferring knowledge
What tips do you have for hyper-productive meetings?
Building a Tech Radar
You’ve written on building a technology radar. Can you talk a bit about that, what the bubble is, the dangers of living inside, how to avoid it, and how to build and maintain that tech radar?
You’ve talked about “Avoiding Yesterday’s Best Practice from Becoming Tomorrow’s Antipattern”. What is an anti-pattern and how do we do this?
In just about all technical projects I’ve been part of, the biggest problems are just about never technology based, but rather people based. Why is this, and what tips do you have on fixing the people problems?
Technical skills
How do you deal with losing your technical skills due to constantly being pushed up the ladder? I personally have to deal with quite a bit of frustration around this, and feel constantly torn between needing to go deep on technical areas and then losing focus of the bigger picture, and visa-versa. Is this an issue you face, and how do you deal with it?
How do you attempt to retain them, or do you just not try?
You have also discussed “how to build engineering and DevOps practices to support continuous change… and delivery” What advice do you have for us around this?
Failure
What does failure look like as an Architect & how do you deal with it?
If you could go back in time and change the way you progressed through your career, what would you change?
Career Path
What advice do you have for Software Engineers thinking about making the transition toward architect based roles? What do they need to be aware of before moving in that direction?
Technologist / Engineer, Information Security Professional
Technologist / Engineer, Information Security Professional, Entrepreneur and the founder of BinaryMist Ltd and PurpleTeam-Labs. Ex OWASP NZ Chapter Leader of eight years. Certified Scrum Master. Facilitator, mentor and motivator of cross functional, self managing teams. With a solid 20 years of commercial industry experience across many domains.