Careers in Software Architecture: Advice from an Expert
For this career article, we interviewed Eoin Woods, chief technology officer for Endava, a global technology company that works with some of the world’s leading finance, insurance, telecommunications, media, technology, and retail companies. He authored the article “Software Architecture in a Changing World,” which appears in the November/December 2016 issue of IEEE Software magazine. Woods is also the editor of the “Pragmatic Architect” column in IEEE Software. We asked Woods about careers in software architecture.
ComputingEdge: What types of tech advances in the field of software architecture will see the most growth in the next several years?
Woods: There are two aspects to “software architecture”—the process of how we design architecture for a system and the technologies we use to build systems.
The process of software architecture has been studied since the mid-1990s and I think that the rate of new ideas about how we design, analyze and capture architecture is slowing down a bit. There are still new trends emerging though, like architecture being seen as a flow of decisions, rather than an activity to produce “an architecture,” as illustrated by Eltjo Poort’s Risk and Cost Driven Architecture (RCDA) approach. There are also emerging ideas in how we create architectures that evolve gracefully over time.
When we consider the technologies we use for implementing our architectures, it varies by domain. But in my world of enterprise, digital, and Internet systems, the big technical themes in the next few years are going to be the continued use of microservices, the maturing of container and serverless technologies and the integration of intelligence into everyday commercial systems.
ComputingEdge: What advice would you give college students to give them an advantage over the competition?
Woods: Make sure you understand the fundamentals and worry less about the technical detail of a particular piece of technology. You do need to know the details of a software development stack to create software effectively. However, for some people, that is all they learn. In fact, you can be sure that what you use today will be replaced in 10 years’ time, so understanding the fundamentals of topics like modelling, distributed systems, data management, AI, algorithms, and general problem-solving approaches will be of much more lasting value. Also make sure you remember that everything in industry involves working with other people, so don’t neglect communication and team working as you develop your deep technical knowledge.
ComputingEdge: If a graduate has the ambition of eventually being a freelancer, or independent contractor in the field of software architecture what are some tips for moving in that direction?
Woods: The most important thing for future software architects is to get a really good understanding of how to build high quality, effective software. So concentrate on becoming a really good software development engineer first. Beyond that, start studying the field of software architecture to understand it. Consider how it relates to the process of building the individual modules of the system. Start trying to understand the “big picture” context of your work as early as possible. Who is going to use your software? Who are the other stakeholders? What are they trying to achieve? How does the overall system work and why? What are the critical quality properties that your system must achieve and how does your module assist in achieving them?
ComputingEdge: Name one critical mistake for young graduates to avoid when starting their careers?
Woods: Avoid over confidence based on excellent academic results. A good degree in a software engineering subject is priceless, but until it is combined with some solid experience, it is often hard to know how to apply that knowledge effectively. This is certainly a mistake I made early in my career!
ComputingEdge: Do you have any learning experiences you could share that could benefit those just starting out in their careers?
Woods: It sounds like a contradiction, but try to learn broad and deep subjects. What I mean is that you need to specialize in one or more topics and become expert in them in the early years of your career. However, don’t lose sight of the breadth of the field and try to understand the fundamentals of other relevant areas. This is what creates a rounded professional engineer over time and builds the kind of knowledge that allows us to be lifetime learners and adapt as our industry changes.
About the Author
ComputingEdge’s Lori Cameron interviewed Woods for this article. Contact her at firstname.lastname@example.org if you would like to contribute to a future article on computing careers. Contact Woods at email@example.com.