Having experienced nearly all of the pain and desire one could have in trying to scale out applications, operations, and infrastructure, I have become a huge proponent of blending efforts between Development with Operations. Additionally I think the blend should include lower level stuff like facilities as well. The entire online paradigm fundamentally changes how the problem space should be viewed.
With Concepts like NoOps, DevOps, and the like becoming fashionable in the Development community its probably no surprise that these issues are being addressed from people’s own comfort spaces. To a development engineer – those Ops folks are crusty and cranky. To an Operations engineer those darn developers don’t really code for long term operations. Its always the ‘throw the code over the wall’ and the Ops folks will make it work mentality. In reality both sides are right.
The simple truth is (in my opinion) that the University System is to a large degree failing the industry especially when it comes to developing for future platforms. Graduates are coming out by the thousands versed in the development of Java, Ruby on Rails, and insert your favorite flavor of high level web platform here. The amount of graduates who understand the underlying systems, and more basically how things work are becoming rarer by the year. Add to this mix an understanding of developing for code to RUN, and the infrastructural and operational requirements associated with it you are dealing with a very rare set of skill sets. Many of the big companies who do build for the RUN of software (read as SAAS, large scale online services, etc) actually go through a bit of “re-education” with new hires to either teach them these skill sets for the first time, or “re-program” the bad stuff they learned out.
I had a series of related things come through my inbox and a video shared with me from last years Velocity conference. I think they are powerful thought provokers to read and watch.
The first is the video from Velocity by Theo Schlossnagle, a founder and principal at OmniTI. It is somewhat skunk-worked under the heading of Career Development. Theo takes this from the perspective of the individual, but it is easily applied to organizations at large. Its 13 minutes, but well worth the time.
The second is a post by Adrian Cockcroft from Netflix talking about the development and evolution of DevOps/NoOps in the culture there. The approach is right on, although I think to a large degree some of the real “ops” stuff has been outsourced to the cloud provider. That being said I think the mindset shown here from a broader “Development Responsibilities” is definitely in the right way to think about the problem space. I have often talked about the NetFlix Chaos Monkey approach and just how powerful that paradigm is:
The last is actually a response to the Cockcroft post by John Allspaw who used to run Flickr’s Operations and is now at Etsy. Who while arguing the benefit of a stronger Ops presence and involvement also highlights the benefits of having Development and Engineering more aware of their surroundings.