Why Software Architects Should Get Their Hands Dirty
As a software architect, I've observed that the role is often perceived as a high-level, strategic position, detached from the daily coding details.
As a software architect, I've observed that the role is often perceived as a high-level, strategic position, detached from the daily coding details. The prevailing perception is that architects focus solely on big-picture considerations. However, I felt compelled to write this blog because of Oskar Dudycz Creator Architect Manifesto, which challenges this narrow view, and I wholeheartedly agree with his perspective.
I cannot move forward without mentioning one of the motivations that came from Hassan Rezk Habib, who, in his video titled How to Become a Successful Software Engineer emphasized several key elements on how to become successful in this business field. As Hassan points out, in the technological world, continuous learning is key. Reading technical books, blogs, and articles allows developers to stay up to date with the latest trends. This is very important as it helps engineers develop themselves and, in turn, assist others with their knowledge and skills.
Take a look at the video that perfectly encapsulates the fervor that's behind it, tailored to guide those who aspire to excel in software engineering or any other discipline.
Moreover, my stint as a software architect in a team setting, alongside my colleagues Haris Hercegovac and Edin Jašarević, has gifted me with a unique chance for Live Tech Games, as I've been integral in designing the first game. Apart from my architectural duties, I'm deeply involved in coding and am always ready to provide support to my team members as required. We frequently partake in pair programming sessions, which allows us to quickly address complicated tasks and deliver streamlined solutions.
By taking part in coding and making myself available for assistance, I've managed to gain a profound comprehension of the complexities tied to putting architectural designs into practice and have augmented my technical skills. It is through these joint efforts that we can overcome challenges rapidly and effectively, guaranteeing the successful completion of our projects.
Getting Their Hands Dirty
When you first come across this idea, it's natural to raise an eyebrow. Is it really necessary for architects, who typically focus on the big picture, to immerse themselves in the daily coding grind? However, upon closer reflection, the concept becomes undeniably intriguing. It's like architects donning hard hats and stepping onto the construction site — an analogy I can appreciate as my wife is a civil engineer. She has been following this concept over the years, which has also been an inspiration to me. ❤️
Through such hands-on experiences, architects obtain precious understanding and direct knowledge about the difficulties the development team grapples with— the very issues their architectural blueprints are designed to tackle.
Let me illustrate this with a personal anecdote. During my tenure in a software architecture team, I was given the responsibility of designing a system that had no set pace for tasks. Upon becoming part of this team, I was met with numerous challenges — enhancing the system to accommodate a substantial user load, rectifying performance issues, and ensuring flawless integration among diverse system elements. Nonetheless, it was through these tribulations that I learned priceless lessons, which ultimately strengthened my designs, rendering them sturdier and more effective.
Connection between Blueprint and Building
This principle further emphasizes the significance of remaining in sync with the reality of software development. It's vitally important! For instance, consider a scenario where we have a deadline to meet. Are we going to abandon our team in the struggle against time? Absolutely not!
Alternatively, by getting involved in the development of business functionalities, architects have the chance to observe how their designs transform into actual products. They acquire direct experience of how their blueprints affect both the development journey and the final product. This understanding can serve as a potent instrument, guiding future architectural choices to engineer a system that's not just theoretically robust but practically efficient and conducive to developers as well.
In a sphere that's progressing at an incredible pace, architects can easily drift away from the present state of technology and development methodologies. By actively engaging in feature development, they can stay abreast of the latest tools and technologies, ensuring their architectural decisions are always pertinent and effective, instead of solely depending on theoretical premises.
In the end...
In conclusion, the tenth principle of the Architect Manifesto illuminates a vital aspect of the modern architect's role: the cultivation of empathy. By actively immersing themselves in business features, architects gain an intimate understanding of the challenges and triumphs encountered by the development team.
This empathetic perspective empowers architects to fashion designs that not only excel in theory but also demonstrate genuine appreciation for the engineers who breathe life into those designs.
In the swiftly evolving realm of software development, it is imperative for architects to remain engaged, well-informed, and brimming with empathy. This principle serves as a poignant reminder of their evolving responsibility, underscoring the significance of addressing high-level strategic design matters while remaining attuned to the experiences of the development team.
As the wise Robert Ingersoll once proclaimed, "We rise by lifting others." By steadfastly adhering to these principles, we can endeavor to craft superior software and elevate the entire software development community.
Once again, thanks to Hassan Rezk Habib and Oskar Dudycz, who have produced such quality content that can inspire others to move forward.
Cheers and Good Luck! 👋