From Depth to Breadth: My Exploration of Software Architecture

Femi Ojo
3 min readMay 31, 2023

Software engineering is a broad field and there are many different activities that come under that umbrella term. The main part that I have focused on is development, which is the activity of taking requirements and a high-level design and turning it into working tested code.

Architecture is the precursor to development in a lot of ways and is something I haven’t had much exposure to in my professional journey thus far, largely due to the structure of my current team. My medium-term goal is to be able to competently contribute across all software engineering activities, at least to some extent, so I figured it's time to dive into the world of software architecture in an attempt to broaden my skill set.

My guide in this journey is the book Fundamentals of Software Architecture by Mark Richards and Neal Ford. As I delve deeper into this subject, I plan to share my insights and learnings in these posts.

Going Wide, Not Just Deep

My early reflections from the book centre around the idea that architects need a broad technical understanding. They must be comfortable knowing a bit about a lot, equipping themselves to make informed decisions across technologies, as opposed to developers who often need to build in-depth knowledge of specific tech stacks.

This concept intrigued me, largely because I have been contemplating how to avoid becoming overly narrow in my own knowledge and skills. While some prefer to specialize as backend developers or similar niche roles, I think in the long term those with broader skills and knowledge are able to make a larger impact.

The Benefits of Breadth

A broad skillset not only increases my options but also prevents me from falling into a repetitive pattern of work. Furthermore, it contributes to my professional resilience. Becoming too specialized in a narrow set of skills can be fragile in an industry characterized by rapid change and technological evolution.

The idea of diversifying doesn’t stop with my professional work. I believe in adopting a holistic approach to learning at all levels of my life and beyond my role as a software engineer. I’ve recently started dedicating an hour each day to studying a random topic of interest outside of software engineering. Right now I’m researching the energy industry and trying to understand why some of the world still struggles to have access to reliable energy sources.

Jack of All Trades, Master of One

The key to this strategy is balance. Striving to be generally broad in knowledge while developing expertise in a specific area is the essence of becoming a ‘T-shaped’ professional. This combination of breadth and depth is not just ideal for architects but is also characteristic of many successful entrepreneurs. It encourages creative problem-solving and sharpens the ability to make unexpected connections between different fields.

As someone with an entrepreneurial inclination, I understand that a wide-ranging skill set will be crucial in running a business. Notably, the leverage that broad knowledge provides cannot be underestimated. A software engineer’s deep knowledge, particularly in coding, is not easily scalable, as there is only so much coding one can do in a day. Diversifying my knowledge and skills is crucial to maximizing the value I’m able to provide.

Embracing the Shift

My current phase can best be described as a shift towards generalism from specialization. However, this doesn’t negate the significance of depth. It is important to possess expertise in a certain area and balance it with a broader understanding of multiple domains. As I move forward in this journey, I want to transform myself into a more versatile technologist, contributing value beyond my job title.

Stay tuned to this blog as I continue to share my insights and learnings on this journey from a software engineer to a software architect.

--

--