Sales and Marketing Tool Case study
Challenge:
Our customer’s B2B sales team needed help managing their complex sales process, getting useful feedback and insights about their activity and expected sales results. Existing off-the-shelf tools were assessed but did not meet the expectations of the sales management team so White Box Technologies was asked to build a custom solution to fit their needs perfectly.
Solution:
Custom-built Sales Management Tool, covering the whole sales process and keeping track of salespeople’s activity and results.
User Group:
Sales and marketing professionals (managers and agents)
Context:
Our customer, a large multi-national company in the field of Telecommunications, was in need of a tool to assist with their sales and marketing activities, managing the whole sales process from marketing Leads to closing successful sales Opportunities.
After the evaluation of multiple of off-the-shelf Sales Management solutions, our customer decided to entrust us to build a custom solution for them, perfectly tailored to their complex sales process – which gives them an important competitive advantage.
Project:
The project involved a team of 6 software engineers from White Box, testers and Operations team, working together with the Product Owner and Business Analyst from the Customer. The team used Scrum framework to organize its activities and managed to deliver the initial version of the software in 8-9 months, working in 2 week sprints.
Years later, the product is still being evolved by a similar size team from White Box, delivering new features and changes to existing processes, with ease and low risk for unexpected bugs.
Our team is responsible for the whole development life cycle, from analysis of new requirements, development, testing and Level 2 support, handling incidents and solving all issues that may occur in a production environment.
Maintaining Flexibility
This relative flexibility of the solution after years of evolving requirements following ever-changing business needs, was made possible by taking constant care of the quality of design (using principles such as: Clean Architecture, DDD, Modularity, low coupling, etc) as well as the quality of the code (making constant use of SOLID principles, OOP paradigms, design patterns, etc).
Good architecture is key to the future flexibility of any software product and our team took great care to keep the architecture clean at all times. Architecture is not just what the team decides at the beginning of the project, architecture is what evolves out of the code written every day by every developer, so it is essential that all team members are aware of their role in keeping the code easy to maintain and to understand in the future, as well as delivering the current requirement from the sprint backlog.
Technology
Stack
The technology stack we considered most suitable for this project:
- Java in the backend, using Spring for dependency injection, Spring Security, Spring Transactions, JPA, Hibernate, Elasticsearch for fast fuzzy queries, Relational database for persistence and data querying, Kafka message broker for integrating with other software systems, Redis for cacheing, etc.
- Angular in the front-end, with Angular Material design components
- Deployed in Docker containers in a Kubernetes cluster on prem
- Continuous Integration / Automated builds and deployments using TeamCity
- Thousands of automated tests (unit, integration, API) checking the integrity of our system at every commit and providing feedback in under 20 minutes (for acceptance testing pipeline cycle)
Architecture
The architecture of our solution was designed using principles from: Hexagonal Architecture/Ports-and-adaptors (concepts first introduced by Alistair Cockburn), DDD (Domain-Driven Design, developed by Eric Evans), with a rich domain model containing all of the business logic (handling the essential complexity) and isolated from the infrastructure details (handing the accidental complexity of our system).
Success Factors
The team had a high level of autonomy, choosing their own tools, technologies and way of working together to achieve the business goals of our customer.
Passionately discovering all business details needed to fully cover the complexity of our customer’s sales and marketing proprietary processes, in a way becoming sales and marketing experts ourselves, striving to talk the language of our users and become trusted advisors also in aspects related to the business side, not only technical.
Constant evaluation and improvement in the way we work, interact with our customer, communicate among ourselves and with all other stakeholders.
Continuous improvement for us as software professionals, keeping up to date with the evolution of technology, best practices and learning from the best in the world in order to bring the most value to our customers’ projects. We read books, attend conferences, watch training videos and share our passion and knowledge among us, in order to be sure we are near the top, not only compared to our local competition, but in the global context.
Our job provide us the unique opportunity of being world class software engineers, regardless of our location, it is only up to us if we make use of this opportunity, by channeling our passion for software and our determination to improve.