There are some qualities that differentiate average from high performing software development companies and attitude towards the software architecture culture is one of them.
Software Architecture Culture
The culture is better and the results are much better in teams where software developers and architects pay particular attention to software architecture quality. In teams where it’s all about delivering tickets as quickly as possible, the culture and results are poorer. It is proven! However, it is very important to highlight that where there is too much focus on software architecture and not enough on delivery is hugely counter-productive as well. Both valuing software architecture and striving for continuous delivery are critical.
Actually, we read Martin Fowler’s blog on a regular basis and we really liked what he said:
“Internal quality of a software system enables new features and improvements to be delivered more sustainably. Design, how things are named, structured, organised and so on, is a fundamental part of internal quality.”
Also, In Accelerate, Nicole Forsgren shows a link between well-designed, loosely-coupled architecture and more frequent software delivery.
8 Nurturing Software Architecture Techniques
1. Focus on Business-Optimized Software Architecture
The true value of software architecture is building software systems that are optimized for solving business problems and are easy to evolve over time as the business needs change. When architectural boundaries align with domain boundaries, changes will be easier to make, and dependencies between teams will be fewer. A good understanding of the business domains is the key enabler for software architects to create business-optimized software architecture. Regularly spending time with domain experts is important.
2. Be Part of The Software Architecture Community
Encouraging and rewarding software architecture requires effective communication channels where information can be shared and can reach the intended audience. There are many opportunities to spread software architecture ideas and success stories including blogs, newsletters, Slack channels focused around software architecture, events (like Global Software Architecture Summit), software architecture workshops, podcasts, books as well as company-wide software architecture meetings.
3. Encourage Collaborative Mindset
It is great when you have people who enjoy constructively reviewing and providing feedback. Visual collaboration techniques also help. They help to spread domain knowledge, and they enable everybody to participate in continuous improvement. Domain Storytelling and EventStorming are great techniques for bringing domain experts and engineers together to collaboratively model business flows. Also, Example Mapping is a good option for collaboratively crunching domain knowledge to define requirements. It’s important that teams have tools that enable them to constantly visualize their work, especially when working remotely. A great tool that I recommend trying is Miro, great for collaboration, organization, and visualization.
4. Take Time to Think About Good Architecture
When software developers feel that taking time to think about good software architecture is acceptable, they are more likely to do it. Technology leaders need to be clear that quality architecture is just as important as delivering lines of code. Investing in software architecture should be rewarded. Technology leaders may look for case studies of good architecture and broadcast them to the whole software development team, calling them out as examples of great engineering practices for all to aspire to.
5. Explore Options and Assess Trade-Offs
Exploring options and assessing trade-offs is the key to producing better software architecture. Actually, sometimes this obsession with the small details makes the code and infrastructure easier to continuously improve and deploy.
6. Invite Architecture-Minded Professionals to Give a Workshop in Your Company
There are a lot of interesting people in the software architecture communities who are passionate about architecture. Inviting them to speak at your company or give a hands-on workshop and interact with your teams is a great way to get people excited and introduce new ideas into your team. It can be a cost-effective approach.
7. Take Into Account Early Adopters
Early adopters are people who are more open to new ideas and techniques or who have already seen the benefits of a particular software architecture. These experts might be a great push towards innovation and improvement.
8. Hire industry Influencers
Hiring people who are known in the industry, can create excitement and willingness to grow.