Scaling Up Scala: Why We Started a Bootcamp for New Developers - InformationWeek
IoT
IoT
DevOps
Commentary
3/14/2017
10:00 AM
Toby Matejovsky, Senior Director of Engineering, Tapad
Toby Matejovsky, Senior Director of Engineering, Tapad
Commentary
50%
50%
RELATED EVENTS
Moving UEBA Beyond the Ground Floor
Sep 20, 2017
This webinar will provide the details you need about UEBA so you can make the decisions on how bes ...Read More>>

Scaling Up Scala: Why We Started a Bootcamp for New Developers

When it's tough to find developers with experience and training in a specific programming language, consider doing an in-house boot camp.

Last summer we had a problem. Growing fast and building out a complex adtech product that handles more than one million requests per second, we needed to hire more engineers than ever before. However, since our core programming language -- Scala -- was still up-and-coming relative to incumbent languages, there wasn’t a deep market for developers with that background.

Not only did we have to onboard more than two dozen developers, but we also had to figure out a way to train them all in Scala. Assigning individual mentors to help these software engineers and data scientists translate their experience with C++ and Java into working in Scala was far from efficient. Training them fast, as a group, was our best option. So, we set up an internal bootcamp with a goal of giving our incoming class a jumpstart on their Scala skills.

Welcome to Scala School

Your company may face a similar challenge, especially if you’re running engineering at a start-up. Why? Developers have limited time to learn multiple programming languages, yet there are hundreds of such languages to choose from. Apple has Swift. Facebook has Hack. Google has Dart and Go, and could introduce more any day. With such a bounty of languages it’s all but guaranteed the developers you hire won’t have the precise skills your company needs on day one; if they do, it’s likely that your hiring funnel is far too constrained. We’ve seen first-hand that, with the right set-up and know-how, bringing the bootcamp experience in-house can alleviate these problems and open new doors for your engineers.

Toby Matejovsky
Toby Matejovsky

Starting your own Scala School

Since last summer, we’ve conducted three bootcamps for dozens of engineers. Four core lessons we learned may help you in the design of your bootcamp:

  1. Determine a realistic curriculum. Our first curriculum included six two-hour sessions covering a wide range of Scala-related topics, such as object-oriented programming, functional programming, type-level programming, and concurrency. In doing so, we introduced developers to Scala’s capabilities and traps, while also providing tools for them to continue learning independently. After the first week of three classes, we learned the pace was too fast for students to absorb the new programming concepts while also ramping up on Tapad’s business and systems. Internal "professors" like me had just as many deadlines. To balance the workload and still maintain the curriculum, we scheduled more classes over a longer period and assigned two senior engineers to attend: a leader and a contributor. Some would lecture while others would lead exercises and be available for questions.
  2. Work with your developers’ busy schedules. Unlike privately-run bootcamps, Scala School runs concurrently with the developers’ regular schedule; it does not take up 100% of their time. This provides time for them to put into practice information learned in the classroom. Adding online resources also gives developers freedom to go deeper and learn more in their own time.
  3. Recognize teaching is its own skill. I've been teaching programming for four years, most recently several courses in the computer science master’s program at New York University. Developing a curriculum and delivering information in such a way that students will learn isn't foreign to me, but it may be to some of you. Reach out to peers who have set up bootcamps. Look at other courses and study the design and resources made available. (For a practical example, here's a link to the Information Technology Projects course I help teach at NYU.)
  4. Use exercises and practical code samples as often as possible. Just as writers learn by writing prose, developers learn by writing code. If you do nothing else in setting up your bootcamp, write out the challenges you've faced in developing software, pull some sample code, and then turn the problem you solved into an exercise for your students. Not only will it help them better understand abstract concepts, they'll also have something to look back on when they're faced with similar problems outside the classroom. We also recommend building a library of training materials that students could use at any time to brush up.

And the report card says ...

A well-designed bootcamp can also become a fringe benefit for the participating developers. At Tapad, every engineer who’s joined us can add Scala -- and the functional coding skills that come with learning it -- to their resume without having to pay hundreds or thousands of dollars for similar training. We’re attracting better talent (and delivering better software) as a result. In the words of one of our participations, the program “provided a solid foundation that afforded me the skills needed to grow quickly and make a productive impact on our team.”There’s no reason your company can’t do the same.

Toby Matejovsky is Senior Director of Engineering at Tapad, where he has helped scale the ad-tech company to its current state. His other experience includes four years of teaching software development courses in professional settings, including NYU's Courant Institute of Mathematical Sciences.Connect with Toby on LinkedIn or follow him on Twitter, where he posts as@tobym.

The InformationWeek community brings together IT practitioners and industry experts with IT advice, education, and opinions. We strive to highlight technology executives and subject matter experts and use their knowledge and experiences to help our audience of IT ... View Full Bio
Comment  | 
Print  | 
More Insights
Comments
Newest First  |  Oldest First  |  Threaded View
YuliaY807
50%
50%
YuliaY807,
User Rank: Apprentice
3/17/2017 | 5:36:59 AM
Development languages
Development, programming nowadays is very popular. Look at this research of most popular programming languages  -

 https://www.cleveroad.com/blog/research-of-most-popular-programming-languages-for-2017 
[Interop ITX 2017] State Of DevOps Report
[Interop ITX 2017] State Of DevOps Report
The DevOps movement brings application development and infrastructure operations together to increase efficiency and deploy applications more quickly. But embracing DevOps means making significant cultural, organizational, and technological changes. This research report will examine how and why IT organizations are adopting DevOps methodologies, the effects on their staff and processes, and the tools they are utilizing for the best results.
Register for InformationWeek Newsletters
White Papers
Current Issue
IT Strategies to Conquer the Cloud
Chances are your organization is adopting cloud computing in one way or another -- or in multiple ways. Understanding the skills you need and how cloud affects IT operations and networking will help you adapt.
Video
Slideshows
Twitter Feed
Sponsored Live Streaming Video
Everything You've Been Told About Mobility Is Wrong
Attend this video symposium with Sean Wisdom, Global Director of Mobility Solutions, and learn about how you can harness powerful new products to mobilize your business potential.
Flash Poll