In an earlier post, I outlined why I think that there is value in enterprise developer specialization. I concluded that there are four emerging classes of developers: User Facing, Mobile, Business Logic and Data, and Operations.
In the past, operations was a separate role and often team working outside the development team. The DevOps movement led many developers to acquire operations skills and move that work back into the development cycle. When this amounted to a build-migrate-deploy cycle, it was reasonable for full-stack developers to do this work. Now, the operations landscape is sufficiently complex that a skill class has emerged. Operations Developers (and yes, they are developers) concern themselves with deployment scripts, infrastructure automation and cloud technologies. They do not maintain build scripts or Continuous Integration implementations; those are the domain of the other developer classes. Instead, they provide “infrastructure as a service” (IaaS) to the other developers and concern themselves with secure and stable scaling of that infrastructure. Puppet, Chef, AWS, Azure, OpenStack and Docker are some of the relevant technologies.
Like the User Facing developers, the technology landscape in this space is relatively new and rapidly changing. Migration from data centers to the cloud has been under way for some time, but still few best practices exist for making that transition. New models including containers like Docker and PaaS offerings like Elastic Beanstalk are moving further from the lift-and-shift into the cloud into a fundamentally new way of managing scaling and deployment. Other emerging techniques, like optimizing for minimum-time-to-recovery over mean-time-between-outage are pushing the robustness of instance creation, deployment and database sharding. Multiple regional availability zones for application performance improve the user experience but greatly complicate handling data.
Success in this space requires a voracious appetite for learning and experimentation. It also requires a thick skin; when things go wrong these developers are often blamed, regardless of the real root cause. These roles are critically important but often undervalued; institutional memory of past inefficient operations groups sets a bias that these roles are not really for developers. Understanding that this is a misconception and that “configuration as code” is a real model is important. This is the easiest developer space for system administrators to transition into, and the future for data center technicians.