As programmers, we love to write code. As software engineers, we want our code to be useful to our users. It can be tricky to bridge this gap.
Delivering valuable software to users is so much more than just slinging code. It takes deliberate specification, careful testing, effective intra-team collaboration, and plenty of automation.
In this workshop, we learn how a Scala development team can work collaboratively to specify, build, test, and verify their software, automate much of their development workflow, and continuously deploy their software to get it into the hands of their users quickly, frequently, and reliably.
Using a balance of training, lectures, and hands-on exercises, students will learn how to build a foundation for repeatable, efficient, collaborative development processes so they can focus on the good stuff -- coding.
Topics covered
- Local rapid development
- Test-driven development
- Collaborative development
- Continuous integration
- Continuous deployment
Tools covered
- sbt and sbt plugins
- git and GitHub
- Jenkins and Travis CI
- Coveralls
- Artifactory and Bintray
- Tomcat and Heroku
Instructors
James Earl Douglas and Alexy Khrabrov are Scala meetup organizers, trainers, and presenters with years of experience. Alexy and James were the first two coding co-founders at Versal, an edtech startup, where they implemented an all-Scala API and all of the underlying devops processes. They espose a rigorous devops philosophy for Scala backends inspired by FP rigor and Scala pragmatism about it.
Alexy and James presented the Scala DevOps foundations at Scala Days 2013 in NYC.
James reviewed the Scala DevOps workflow at Scala By the Bay 2014.
Agenda
The workshop is divided into two days, which can be done separately or as a combination. The first day covers introductory topics, and the second day builds upon it to advanced topics.
Introduction to collaborative development with Scala
In this introductory workshop, students learn how to establish repeatable and reliable development processes that scale up from a single local developer to a distributed team of developers working asynchronously. Students are exposed to a palette of freely available tools and services that can be both used individually and introduced to a team.
- Development environment configuration
- Rapid development with sbt
- Test-driven development
- Iterative development processes
- Scalable collaborative development
Advanced development operations with Scala
In this advanced workshop, students build on their skills as collaborative developers and learn how to manage releases and automate their development workflow to deliver software quickly and frequently. Students learn how to integrate both cloud-based services and self-hosted tools into their deployment workflows.
- Continuous integration
- Release management
- Continuous deployment