DEV Community

loading...

How to create software architecture culture in your team

Apiumhub
Tech Hub from Barcelona specializing in software, web and app development.
Originally published at apiumhub.com on ・4 min read

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

Based on our experience in Apiumhub, 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.

Nurturing software architecture techniques

  • Focus on business-optimised software architecture

    The true value of software architecture is building software systems that are optimised 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-optimised software architecture. Regularly spending time with domain experts is important.

  • Be part of 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.

  • 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 visualise their work, especially when working remotely. Great tool that I recommend to try is Miro, great for collaboration, organization and visualization.

  • 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.

  • Explore options & assessing trade-offs

    Exploring options and assessing trade-offs is the key to producing better software architecture. Actually sometimes this obsession on the small details make the code and infrastructure easier to continuously improve and deploy.

  • 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. Actually, you may find remote software architecture workshops in Apium Academy.

  • Take into account early adopters

    Early adopters are people who are more open to new ideas and techniques or they have already seen the benefits of a particular software architecture. These experts might be a great push towards innovation and improvement.

  • Take into account early adopters

    Early adopters are people who are more open to new ideas and techniques or they have already seen the benefits of a particular software architecture. These experts might be a great push towards innovation and improvement.

  • Hire industry Influencers

    Hiring people who are known in the industry, can create excitement and willingness to grow.

I hope you found these techniques useful! And if you need any help with your software architecture project, count on us! We have renowned software architects in a team!

Discussion (1)

Collapse
codereviewpad profile image
Reviewpad

Very interesting post. On the "Encourage collaborative mindset" point we'd also recommend the collaborative graphic tool Figma. We started using it pretty much for every design element, it's easy to use by everyone, and empowers every one in the team to "wear the colors" of the team.