Getting started: Building the core dev team
by Francesco Cesarini
This is an excerpt from The route to the successful adoption of non-mainstream programming languages by Francesco Cesarini and Mike Williams.
On one end of the scale, we often hear complaints about how hard it is to find Erlang developers. Java, C++ and Web developers are everywhere. They are easy to recruit. Not all might be top notch, but at least we can recruit them. Despite that, look at Ericsson who use Erlang in projects with over a hundred developers in each. Members join and leave the team, move to other Erlang or non-Erlang projects and can easily be swapped around.
Ericsson had to start somewhere; in the early days, everyone on the internal Erlang mailing list knew each other personally. Today, their Erlang programmer count is in the thousands and those using it daily are in the hundreds. But they are not alone. The reason you might not hear from companies such as Klarna, OpenX, AlertLogic, WhatsApp, Cisco and bet365 (to mention but a few) is that they just get on with it. They are too busy building teams to complain how is hard to find Erlang developers.
We have seen Erlang used by teams of a hundred developers who produced successful products, we have also seen teams of two or three developing, deploying and maintaining a huge code base. Not to mention companies who adopt non mainstream languages through acquisitions, successfully introducing the technology in the wider organisation instead of making the crazy decision to rewrite the product or service in Java.
But before you start thinking of hundreds, start small.
Start with a few experienced leaders
Like all programming technologies, you must have one or two experienced, good software developers who can lead the way. Like everything in life, even a programming language can be used and abused. You need people who will stop you from making the wrong decision and avoid mistakes others have done.
Create a small team for the project initiation. Fill it with a few highly experienced experts who will work to shape a plan and get the change sponsors to a common level of understanding.
They have to be enthusiastic, but also make sure they understand and embrace the programming model.
Those who were around in the very early days at the time when C++ and OO was all the hype might remember that we spent a lot of our time convincing people that doing OO programming with Erlang was not a good idea, and that, if unwilling to make the move to functional and concurrency oriented programming, they were better off sticking to C++ or Java. No technology (or varying levels of enthusiasm) can replace experienced software developers who know what they are doing.
While you’re cherry-picking these leaders among men, see if you can seed one of them as a representative on the steering board. Their experience and enthusiasm will be an asset when it comes to changing hearts and minds across the organisation.
Developer vs programmer
We use the term “software developer” rather than “programmer”, because software development entails much more than programming. When building your team, you need people who understand and can support the product life cycle, combined with subject matter experts who understand the industry vertical you are active in. In small teams these may well be the same people.
Software development entails much more than programming.
You need to ensure you have developers who can define, program, build, test, deploy, document, package, write user manuals, and maintain your system.
You do not want to rely on a lonely hero programmer who does not understand the value of delegation and knowledge sharing, believing that DevOps means being woken up in the middle of the night to address customer complaints about the system not working (and then receiving the employee of the month award for cleaning up the mess they created themselves).
Your operations team should be the ones noticing there is a problem through automated alerts, not your customers!
While you might need at least one hero programmer in your team setting the pace, they should never be left alone. Pair them up with a finisher. If you are struggling to find experienced Erlang developers, pick the Erlang champion in your organization and pair them up with a contractor or consultant.
Together with a very small team of two to five, get them started on a prototype. It will allow you (and them) to validate their ideas on a small scale and make mistakes which will not result in the project failing.
Interested in learning more about the fundamentals of building a team that will last? (You should be). Learn how to successfully deploy new technology and teams for the long term from myself and Mike Williams, a seasoned Erlang veteran who has introduced to language into numerous industries, including online gambling and betting.
Go back to the blog