In April, 2013, we published a blog post about Enterprise Scala Adoption Tips, but the time has come for an update. Not only that, we need to focus on how to help enterprise organizations adopt Scala and also the Typesafe Reactive Platform in general. Many enterprises make the decision to leverage Akka and Play Framework from the Java API, which we fully support.
As more enterprise organizations adopt Scala/Akka/Play, we find it important to help them engage the community effectively. This involves providing them with information about where they can find resources to empower their developers to learn as much about these technologies as possible, as well as to directly engage with the community on a daily basis. By following these steps, the likelihood of successfully adopting these technologies is much higher. Here is a quick review of the steps:
Our whole mission is to get you and your Reactive application to production, and while this article provides many of the ways the community can help make you successful, we can help in several ways:
By hosting a local user group meetup, you are publicly announcing that your organization is joining the community from whatever perspective you choose. It also lets the community know that your organization is looking for ways to help promote and sponsor initiatives around the ecosystem. If one doesn’t exist, have someone in your organization take the lead of starting one, showing how committed your company is to the community. This will make your organization's new direction very clear to developers in your area and help generate recruiting leads. If you're interested in having Typesafe help host your meetup, please email email@example.com.
It is important not to overwhelm your development team from the outset; you want them to be excited about the new direction your organization is taking. If you have the luxury to start the learning process on an existing application, that is usually easier than asking a team new to a technology to completely develop a greenfield service from scratch while they are learning. If you are moving to Scala, consider writing unit tests first for an existing service or application, just to get a feel for the syntax of the language and the power of its collections library. You can then move to integration tests, and then write some simple Case Classes for your domain.
Once your team has grasped the basics, they are ready to start building real applications and services with the language. It may help to make sure they are fully enabled via training, which can level the learning curve across a group. Typesafe offers trainings ourselves and through our partner network, and there are more resources further down in this post.
Whatever you do, make sure that your team is using the language/framework/platform uniformly. One common misstep in the adoption of any new technology is to allow certain developers on a team to begin working in more advanced ways than the rest of the group, leaving the team unable to maintain their code while they are on vacation. If someone wants to adopt a new approach, library or practice into your code base, they should justify it to the group and make sure everyone else understands it. Furthermore, they should leave bread crumbs in the form of wiki information and/or a video so that new hires and team members can get up to speed more quickly. This will help your team scale. Check out this developer story from Kevin Webber (before he joined Typesafe) about bringing Scala to Walmart Canada:
Make the following resources available to developers on your team, and organize study groups around them to share knowledge:
There is also a burgeoning ecosystem of online training providers, including:
Start an employee book purchase program, and if possible, do it such that no expense reporting by individuals is required so as to remove roadblocks that might keep developers from making the effort. Ideally, when an employee asks for a book on an internal wiki, it should show up on their desk or eReader shortly thereafter. Start a weekly lunchtime book discussion group, where employees either bring a lunch or have it paid for by your organization, and discuss a chapter of a specific book each week. Recommended books include:
JVM and Build Information:
Have developers follow daily happenings in the developer community via Twitter. Twitter is the best source for real-time information about what's happening in the Scala community and elsewhere. Note that, like any social network, some Twitter posts from even the most respectable tweeters can be NSFW or personal in nature.
Suggestions of Twitter accounts to follow: @_jamesward; @adriaanm; @akkateam; @apachekafka; @apachespark; @bantonsson; @brianclapper; @bruceeckel; @bvenners; @corruptmemory; @d6; @dcsobral; @deanwampler; @debasishg; @derekwyatt; @dickwall; @djspiewak; @dmarsh; @drewhk; @dustinwhitney; @eed3si9n; @etorreborre; @gclaramunt; @h3nk3; @havocp; @heathercmiller; @helenaedelson; @higherkinded; @hseeberger; @huitseeker; @hywel_evans; @ijuma; @jaguarul; @jamesiry; @jamie_allen; @jaykreps; @jboner; @jorgeo; @jroper; @jsuereth; @jteigen; @kmizu_en; @ktosopl; @mabrewer7; @marius; @matei_zaharia; @milessabin; @mircodotta; @missingfaktor; @mjpt777; @mkelland; @mpilquist; @mslinn; @n8han; @nehanarkhede; @nescalas; @nraychauduri; @odersky; @patriknw; @philippkhaller; @pk11; @playframework; @pnwscala; @psnively; @rayroestenburg; @retronym; @richdougherty; @rolandkuhn; @runarorama; @scalaide; @ScalaByTheBay; @sirthias; @sky1uc; @springrod; @stefanzeiger; @strangeloop_stl; @tbjerkes; @tlockney; @theotown; @twittereng; @typesafe; @vaughnvernon; @viktorklang; @xeno_by
Have developers subscribe to prominent blogs, so that they can find out information about what cool new things developers have learned. They will likely hear about these posts via Twitter, Prismatic or some other aggregator, but a great way to begin getting more Twitter followers yourself is to be among the first to post a link to a great new blog post. Encourage your developers to start their own blogs talking about the challenges they've faced and how they've overcome them.
Great Individual Blogs:
Inform your developers of Gitter Channels and mailing lists where they can directly interact with top developers in real time, including the creators of the technologies themselves. Eventually, they will find themselves able to answer questions from other people or participate in the podcasts themselves and thereby increase your organization’s presence in the community.
Meta-site for Meetup.com:
Many companies have had great success by starting a blog to talk about how they are using the Typesafe Reactive Platform, especially with orthogonal considerations such as microservices and devops. This gives them tremendous exposure as the community picks up on their advancements and innovations. Prominent enterprise organizations who have done this include:
Encourage employees to regularly attend Scala/Akka/Play/Reactive/Spark meetups, as well as meetups on other topics. Ask them to speak on your company's behalf when they feel comfortable with the subject matter. This will help generate excitement in the community about what your company is doing with these technologies, and help in recruiting new developers interested in what you're doing and the tools you're using. Just about every major city around the world has a meetup group growing around these technologies, especially Spark.
Attend conferences with relevant content where you can network with other developers and enthusiasts. When you feel comfortable discussing specific topics, submit talk proposals for consideration at these conferences. Even conferences not directly related to Scala are clamoring for talks about these technologies, so the rate of acceptance is relatively high. If your team has never spoken at a conference, consider having them enroll in a program such as Underscore’s New Speaker Training. Important conferences that focus on Scala and the broader ecosystem include:
Regular Scala-specific conferences:
General conferences with lots of Scala content:
As your developers become stronger with the technologies, have them fork the GitHub repositories for Scala/Akka/Play/Spark and see if there are features, fixes or functionality they can contribute back. GitHub repos for each project can be found at:
Other companies have had great success by creating open source projects of their own around Typesafe technologies. Examples of large enterprise organizations who have open sourced projects include: