How higher ed can deliver the future DevOps workforce
As digital transforms the economy, so DevOps and Agile continue to transform information technology. Demand for related skills like release engineering, infrastructure as code (IaC), and team-based, product-centric development is apparent in job postings around the world. In short, agile and DevOps are now a workforce issue.
So, how’s the educational system responding? About 18 months ago I attended a conference of IT instructors working in the Minnesota State Colleges and Universities system. There was an opportunity for a fast pitch and I took it; I put a few slides together on the fly and got up and challenged the attendees to start thinking hard about agile and DevOps. (The original deck is available on SlideShare.)
Aligning academics with industry needs
We got a few academics together who were currently teaching in software and computing, studied "The Phoenix Project" and Don Reinertsen, and then in Spring 2016 a grant proposal was submitted, proposing that the project “improve the MNSCU IS/IT program service to the Minnesota workforce through developing instructional content (with faculty support) that better supports current industry needs,” and cited various trends such as cloud, agile methods, DevOps, and so forth.
The proposal attracted a team of 11 teaching faculty from across the system to develop a report, and we also were fortunate to gain the support of a distinguished group of industry advisors, including Gene Kim (author of "The Phoenix Project") and Dr. Nicole Forsgren (CEO of DevOps Research and Assessment, and a former faculty member herself).
From the report:
Digital transformation requires new approaches to curricula and instruction. New delivery approaches such as Agile development, Lean Product Management, Site Reliability Engineering, DevOps, and related trends require an updated educational response. A survey of educational and business professionals on workforce needs related to Agile, DevOps, and other topics inform this report, which identifies five competency areas IT, IS, and computing educators should consider in designing next-generation curricula:
- Dynamic infrastructure and operations
- Continuous delivery
- Product management
- Resource and execution management
- Organization and culture
The report proposes a set of competencies and learning objectives based on well-accepted industry principles, extensively cited with over 100 references instructors can use in developing and adapting courses.
We’re very excited about the report; it will be sent out to hundreds of technology faculty across Minnesota and draft copies have already been requested by institutions around the world. It is, to my knowledge, the first systemic educational response to the new world of digital delivery.
There, of course, have been many questions and concerns raised. Perhaps the biggest concern is that “technology moves too fast” and “academia shouldn’t be about just teaching the latest tool.” I concur! But as the report notes:
“We are not faced today with merely another ephemeral technology cycle. Rather, we are experiencing a generational change in foundational models of IT-related delivery and execution, in response to accelerating digital transformation.”
The agile movement’s roots go back decades. But it’s only in recent years that its principles and approaches have clearly emerged as dominant. There still is a lot of waterfall being taught.
There are good and bad reasons for this. Change is expensive, and, speaking as a teaching faculty member, we can’t radically refactor our courses every semester and still give good service to our students. So academia will always lag industry. But there is a difference between moving at the same speed, a few miles back, versus moving more slowly and falling further and further behind.
DevOps is revolutionary, not evolutionary
The problem today is that the gap is increasing. Academia has not had a complete understanding of the interrelated changes to the digital economy. It’s no longer enough to teach a little Agile as part of project management courses.
And I’ll challenge the idea that "things will always be changing too fast." We are seeing a tectonic shift in fundamental principles and I don't think it's always "flavor of the month." For example, I don't see infrastructure as code going away anytime soon. I'm quite comfortable baking that into my courses. Nor do I think we're going to go back to the bad old days of waterfall, or strict stage-gated project management, or disregarding culture. The important changes are here to stay and can be engaged with by academics, even if we're still teaching on VMs and not Docker yet (which is where I’m currently at).
DevOps and related approaches are clearly how the highest performing digital shops are running nowadays. Software education stopped at “code complete” for many years, especially when software was being stamped on CDs for delivery. Now it’s delivered as an operational service, the customer outcome is experienced that way, so covering the full lifecycle is essential. Of course, there are deeper reasons as well, like the need for fast feedback in product management, and the move away from big open-loop batches of work.
How we approached the report
The report is clear that it’s not taking on fundamental questions of computing education. Discrete math, compilers and operating systems, automata, all that good stuff—we’re not covering any of that. The new guidance is about what could be called contextual courses: requirements management, project management, testing and QA, analysis and architecture, and so forth. As above, we chose five competency areas (see above), and we named them carefully to avoid religious debates (like “what are cloud, agile, DevOps”). One of the biggest gaps we identified was product management.
Currently, product management lives over in the business school marketing department, while the developers are over in computer science, and this feels similar to the old “business-IT” divide—you’ve got students very distant from each other, in terms of the academic disciplines, and yet when they get into industry they are going to be on cross-functional collaborative teams where software and marketing folks work very closely together. We can and should, as educators, better prepare them for that.
We also put in organization and culture as a primary area of concern. The research is clear at this point, culture matters.
As the report says:
“Educating students in cultural aspects is important so that they can recognize if the employer’s culture supports high performance. It is also critical for computing professionals seeking to advance along a management track.”
In other words, we need to prepare the students to recognize when they are in an organization with a toxic culture, so they can get out of there (to be blunt) for their own career’s sake. And culture is not a fuzzy, subjective thing, as research performed at Google and in Puppet Labs' State of DevOps report shows.
Full-lifecycle, full-stack experiences within reach
One of the report’s components I’m particularly excited about is the section on virtual labs and simulations. If we accept that full-lifecycle, full-stack experiences are important for students in preparation for the workforce, we run up against reasonable faculty concerns. How do you give a full-lifecycle, full-stack experience? Classes either wind up focusing on one lab technology (e.g. an Algorithms and Data Structures course using a standard C compiler and manual compilation and building), or they wind up theoretical (PowerPoint slides showing complex distributed systems, but no direct class experience).
But as I’m fond of pointing out to my colleagues, “You can emulate systems today with free virtualization software that would have required millions of dollars in capital just 10 years ago.” I can run an 8-VM continuous delivery pipeline on a laptop. With containers, you can achieve orders of magnitude more. It’s amazing what we can do nowadays. Now we just need to start putting it together a little better for our students.
Share your thoughts on how higher ed can deliver the future technology workforce in the comments below. Are there any great programs you can share?