Inside bet365: The rise of the Multilingual Development Environment
Bet365 has moved from a Java dominated hub to a multilingual development environment, adopting languages such as Erlang, Go and Elixir, says bet365's Andrew Deane
For much of my career, IT recruitment has felt a bit like a game of bingo. You set out your tech specs and go out into the market to find experienced pegs to fit each hole. Get all your techspertise in a row and ‘house', you've got a winning team.
It's a logical approach. Systems development is a complex business that involves complicated tech. As a system evolves, complexity increases, so it fits that the need for specialist skills and experience would also increase.
At one time, this was most certainly true for bet365. However, our investment in new languages, driven by a mantra of finding the right tool for the right job, has in some ways reduced the complexity of our development and in so doing has changed the priorities of our recruitment.
To see how, it's important to first offer some context.
bet365's Multi-lingual journey
When I joined bet365 4 years ago, the company was in its second wave of Erlang development.
Scaling the Java system had become problematic. The codebase too complex for real innovation to take place. Java is verbose in terms of object, interface and hierarchical definition. This verbosity breeds complexity and cognitive load, which in turn means increased development time through the need for deeper understanding.
As these complex hierarchies touch the complexity multiples. It is this compound complexity which leads to inflexible systems. With each forward step, future innovation was becoming harder to achieve.
So, to meet the demand of 100,000s of concurrent users at peak times, the company was moving away from Java's jack-of-all-trades code and investing in new technologies that were more suited to specific jobs.
Grounded in telephony, Erlang had been chosen because of its strengths in distribution, concurrency and resilience.
What's more, the simplicity of the syntax had enabled the development team to quickly build a new, hugely scalable platform and with it an environment where new features could be added at pace.
This is because, unlike Java, where complexity creeps in later, the challenges with Erlang are confronted upfront.
Its functional paradigm is unlike any other language and requires the developer to adopt a different approach to coding. Time is needed early on to adjust to the new mindset. However, once you've grasped the fundamentals, you start to move very quickly.
Having proved the model with Erlang, the door was open to explore other languages. Continuing the mantra of the right tool for the right job, we've found use cases for Google's Go in our notifications systems and testing tools and more recently for Elixir in our application tooling.
[Please turn to next page]
Inside bet365: The rise of the Multilingual Development Environment
Bet365 has moved from a Java dominated hub to a multilingual development environment, adopting languages such as Erlang, Go and Elixir, says bet365's Andrew Deane
In stark contrast to Java verbose semantics, Erlang, Elixir and Go are fiercely economic. The codebase for each new application lightweight. Rather than adding complexity, with each new iteration we can maintain simplicity.
They do this by taking us back to a system's fundamental "unit of work" - the function. Removing the baggage of a hierarchy allows the developer to focus on the required logic and not the decoration. All extraneous cluster is removed, leaving the straightforward logic behind.
This in turn allows us to develop modular and reusable software components. These components all conform to standard form input / output. This then allows us to follow the unix philosophy of, writing programs which do one thing well, work well together, and can be used to compose larger more complex systems and process flows.
The result is a chain of applications coming together to form a fully functioning whole. The system remains complicated but the individual components retain their simplicity.
It means that, despite the scale of our operation, we can keep an open mind and approach our development with a similar sort of flexibility enjoyed by a start-up.
The impact of multiple languages on recruitment
When we recruit, we don't look for people who are proficient in each specific language. Apart from the fact that it would severely limit the pool of talent on offer, it's just not necessary.
What we look for is good developers. We want people who are inquisitive, curious and willing to dig around to find out how something works. Mindset is key. We want people who are open to new paradigms and approaches to solving complex problems.
It's why we don't have a written test as part of our recruitment process. It's more of a chat. We'll spend some time with each interviewee talking through a problem and get an impression of how they think and the flexibility of their approach to problem solving. By the end of the interview, we typically have a good feel for whether they will fit in.
This is an important message for the development community. In the past, there was a feeling that if you diversified away from Java that it could harm your career. However, today people realise they not only need to be multi-lingual but also multi-paradigm.
When it comes to tech, there's no silver bullet language. No one tool to rule them all. As more businesses move away from one-size fits all development, diversity will become more widespread and as it does the multi-lingual/multi-paradigm developer will be the norm.
Andrew Deane is bet365's Systems Development Manager for Middleware