Unveiling the Code: Why Developers Must Crack the Domain – Synthesis

By Tracy-Lee Kotze, Senior Solutionist, and Nicholas Driver, Senior Software Engineer at Synthesis

In a recent session with Nicholas Driver, Senior Engineer at Synthesis, his words resonated deeply: “It is important for developers to understand the domain.” This sparked my curiosity and led me to delve deeper into the significance of domain mastery in software technology.

Nick highlighted the pivotal role of Sprint 0 in successful product implementation, emphasising that it is not just for discovery but also a comprehensive exploration of the domain at hand. He stressed that developers must grasp the client’s revenue streams to maximise client success. Understanding how their product impacts the bottom line allows developers to refine their work for increased returns, aligning software development efforts with revenue optimisation goals.

In a recent project implementation, the team’s decision to incorporate domain knowledge understanding was a game changer, taking their effort to new levels of success.

Developers must grasp the fundamentals of the domain to truly understand what they are building. Acquiring domain knowledge allows developers to communicate more effectively with business stakeholders and analysts. Not siloing the development process allows more brains to be put into the overall discussion, which could allow for unique insights.

The client-consultant relationship is not a zero-sum game. The product can and should be greater than the sum of its parts. Fostering collaboration across the team and with the client ensures a better working relationship, which is likely to lead to repeat engagements. There is an added benefit in not leaving the responsibility in the hands of senior and lead developers, giving them time to work on aspects other team members are not able to tackle. Additionally, there is increased peace of mind at the higher levels, allowing the rest of the team to flourish.

In an agile environment where “working software over documentation” is the mantra, finding the right approach to ensure domain understanding is essential. Agile offers flexibility and adaptability, but teams must embark on a journey of discovery to tailor their approach to their unique needs and challenges.

One approach is “meeting in the middle,” which emphasises finding common ground and leveraging the team’s collective expertise. This fosters a flat organisational structure where all team members’ contributions are valued.

Developers should also be encouraged to explain their thought processes and decisions, promoting a culture of open communication and collaboration. Additionally, requiring everyone on the development team to lead discussions on solutions ensures everyone understands the purpose and rationale behind decisions, avoiding misunderstandings and keeping the team aligned. It is crucial that team members do not know beforehand what solutions they will take the lead on, as they will have to deal with the whole system at all times.

Fostering domain understanding among all team members reduces reliance on specific individuals and promotes a flat organisational structure where everyone’s contributions are valued. Key-man dependencies are often the bane of a project’s continued success. With a flat structure and an engaged team, the likelihood of key-man dependencies being created is vastly reduced.

The lead’s role is crucial in ensuring the team understands the domain. Strong emotional intelligence (EQ) is required to identify which team members understand the requirements. Initial internal development alignment sessions should be held so that team members have a safe space without the client to ask questions and solidify understanding.

With domain knowledge and an understanding of the business requirements, developers can write code with relevant comments. The ability to include why things are done a specific way and what the real-life implications of functionality are leads to shorter development time when existing code must be tackled by another developer. This, in turn, allows for a shorter and more comprehensive handover in case the initial team leaves a project.

Speaking at the World Government Summit in Dubai, Nvidia CRO Jensen Huang said, “Over the course of the last 10 to 15 years almost everybody who sits on a stage like this would tell you it is vital that your children learn computer science and everybody should learn how to program where in fact it’s almost exactly the opposite”. With the rapid advancement of AI, the divide between developers and those not trained in the discipline has all but evaporated.

The role of engineers has evolved significantly over the years, transitioning from being mere “code monkeys” to becoming critical thinkers and problem solvers integral to the success of any project or organisation. In his blog post, Jared Toporek highlights a key insight: “The real problems are usually centred around what the software is supposed to do”( Stackoverflow, 2023).

Software development involves a deep exploration of the problem domain, often requiring collaboration between stakeholders, developers, and users to ensure that the software meets the intended goals.

This shift reflects a broader change in the perception of engineering as a discipline and the recognition of the multifaceted skills and expertise that engineers bring to the table.

In conclusion, domain mastery is a secret weapon for developer success. It allows developers to align their efforts with client goals, improve problem-solving abilities, and contribute meaningfully to the team. In a rapidly evolving landscape where AI and automation are changing industries, developers who understand the domain are far less likely to be replaced; they are indispensable assets driving innovation and success.