Key challenges faced
Our customers are primarily B2B companies which have developed business software solutions for their clients. As their numbers of customers grew, and the feature-set increased organically, the code-base has become increasingly difficult to maintain across a plethora of instances. New deployments are taking longer than expected and are tying up lots of their development teams in configuring and testing prior to roll-out.
Their technology landscapes often combine on-premises hardware as well as cloud elements, again increasing maintenance overhead.
The user interfaces and user experiences can often feel outdated, as they’re based on older front-end development technologies which are constraining the team’s ability to update and enrich the look and feel, and functionality. With end-users demanding that the interfaces they experience in social media and newer products be replicated in their work environment, our customers recognise that their solutions must provide more modern and user-friendly experience.
Addressing the challenge isn’t simple
Easy answers like “re-start from scratch” or “migrate to the cloud” are quickly seen to be impossible when the realities of the scale of existing code and the existence of hundreds of live customers are considered. Questions of how the existing technical team are to be incorporated into building the new solution are also vital. These are the people with in-depth knowledge of customers’ needs and must be retained and given a future learning path within the solution chosen. Finding a method to address all the challenges and come up with a sensible timeline and list of priorities is vital.
The process is as important as the solution
At BoatyardX we believe in partnership with clients. True partnership involves mutual and respectful sharing of knowledge and insights. Our key learnings focus on building comprehensive understanding of the current solution, technology trends, business landscape and end-user needs, to then tease out what a target state should look like, aligning the combined teams on the big picture and the overall direction. Finally, we map out the gaps identified, break down and prioritise work based upon an informed view of what’s required.
We believe in forming integrated teams with clients to deliver the features and functionalities identified. We look to combine subject matter expertise with developers who can translate the needs into EPICs and stories to populate a backlog of features for build.
Lessons learnt
Migrating a monolithic code base operating on a single-tenant basis to a multi-tenant, microservices-based environment with a new UI/UX can be a significant undertaking.
It’s important to build a mutually beneficial partnership. Client developers’ buy-in is vital, as they know more than us at any point what’s under the hood. They ground the scope and estimates. Big risks for such projects include a lack of client engineering buy-in. If developers don’t feel included in the solution, they will push back and dig their heels in, resulting in them being passengers instead of key members of a team that pulls in the same direction.
Measures that reduce the migration workload should also be considered.
Looking to replicate all the existing features, including those not used widely, may be unnecessary. Product owners should consider deeply where the future differentiation lies and emphasise these features, culling “nice to haves” which are under-used or not adding to competitive advantage. The advantages of a new simpler user experience far exceed some old features used by only a couple of customers. Trying to retain all features while also delivering a new architecture and UI/UX may add more time and budget than is necessary.