Importance of meaningful conversations
Emergent Design is one of the critical practices for Continuous Delivery. The idea is to evolve the architecture and design over time. We struggle many times with it because of not having enough clarity on “why”.
As Simon Brown mentions, engaging with the problem is the first step towards Evolutionary Design [Emergent Design].
There's a great post by Joshua Kerievsky titled The Day We Stopped Sprinting that itself references an older post…www.codingthearchitecture.com
One of the challenges of professional software development is that programmers aren’t necessarily experts in the areas for which they write software. For example, I’ve helped write software that controls factory robots, directs complex financial transactions, and analyzes data from scientific instruments. When I started on these projects, I knew nothing about those things.
It’s a conundrum. The people who are experts in the problem domain — the domain experts — are rarely qualified to write software. The people who are qualified to write software — the programmers — don’t always understand the problem domain.
James Shore — The Art of Agile Development
Ubiquitous Language helps everyone in the team, including the stakeholders, to speak the same language. And for that too, communication is the key. And that is the foundation for Domain Driven Design. And the team can not arrive at the Ubiquitous Language on day one. The language, the design emerges along with the product.
Great architecture evolves through active listening and by asking the right questions. And that is what the programmers hesitate — hesitation to talk to humans. But software can’t be built just by talking to computers. Talking to humans require empathy and humility, heroism won’t help.
Mark Richards refers to this as the three Cs of Software Architecture.
- Communication —effectively communicating the idea, concepts, issues, and solutions to stakeholders.
- Collaboration —getting stakeholders involved in the architecture process. And solicit ideas and feedback early and often.
- Clarity — articulating architecture solution in clear and concise terms each stakeholder.
Clarity is all about articulating your architecture solution in clear and concise terms as appropriate to each…www.wmrichards.com
Recently, I was reading an interview with V Kalyanam, Mahatma Gandhi’s personal secretary during the last few years of Gandhi’s life. The interview talks about Gandhi’s last day. And also about how unhappy Gandhiji was about the partition and its aftereffects.
The partition could have been avoided if the leaders listened to Gandhiji. Instead, their egos were higher than patriotism. Maybe the incidents like Kathua could have been avoided if the partition hasn’t happened.
Our egos and lack of humility can jeopardise a lot of lives. It may not be as bad an India/Pakistan partition. As software developers, we are expected to bring in positive changes in the lives of our users. But by not investing in understanding the users can result in building the wrong product which can be very costly for the users and the business. It can be done only with communication and collaboration across the team.