Why being a Teacher was Good Training for a Career in Ops (2013)
(Originally published on 11/13/2013 on my WordPress blog)
(Originally published on 11/13/2013 on my WordPress blog)
Teacher Flashback
While helping my wife with her Sunday School class this morning and redirecting a particularly unfocused boy on his “craft,” I had flashback to when I was a public school teacher.
Twenty years ago, I was finishing up an annoying and generally unhelpful teacher certification program at Texas A&M University. The additional classes you had to take beyond your degree (and the bureaucratic hoops you had to jump through) served to effectively weed out folks who wouldn’t be able to deal with the comparable pain of the public school system, but didn’t actually teach you very much about how to teach. I did have a couple of excellent education professors (Ed Psych and Social Studies methods) but overall, the education faculty was mediocre compared their counterparts in history, or philosophy, or English.
But A&M’s education program didn’t weed me out, because in the early 90s (during the start of the first George Bush recession) I wasn’t sure exactly what I could do with my double major in English and history. Being uncreative, I decided to put off entering the workforce and pursue Texas Secondary Certification in Language Arts and Social Studies. How hard could it be teaching kids?
I completed my student teaching an 11th Grade American History class under the supervision of a football coach (of course!) at Bryan High School. I went on to teach for three and a half years at an affluent Middle School in Northwest San Antonio, but student teaching did not in any way prepare me for my real teaching job. For a year and a half, I taught reading and the other two academic years, Texas history — mostly to 7th graders, which i greatly preferred to 8th graders.
A few years into teaching (and after barely surviving an extremely harrowing first year, which was harder than anything the military ever put me through) I began to grow restless and questioned my career choice. Why had I become a teacher? How could I get out? One of the only other male teachers at the school (another not-terribly athletic guy who had also gotten roped into coaching middle school tennis) and I mused after a few beers how depressing the thought of a lifelong career in Middle School was and would be. Horrible.
Obviously, I did get out through a connection in my Army Reserve unit and was fortunate enough to join the budding InfoSec community in San Antonio in the late 90s, but that is another story.
In hindsight, I don’t regret my decision to become a teacher at all — or my Liberal Arts education. I’ve benefited greatly from both during my career in the private sector and in technical and management roles. For better or worse, it was a formative and positive experience professionally and I’ve run across a surprising number of Ops folks and UNIX admins that have liberal arts degrees over the years. Also, my first civilian boss was one of the strongest leaders (and probably some of her blunt management style rubbed off on me) I’ve ever worked for. She communicated a clear vision for our school, had high standards, and continuously shook things up.
Comparing Ops and Teaching
Some of you that have been done DevOps for a while, might jokingly answer the question in this blog title, “That’s easy. Developers are like children! They don’t share. They fight with each other. They make messes and don’t clean up after themselves. They don’t color within the lines.”
That characterization is probably the exception more than the rule for the developers I’ve worked with over the last few years, and certainly isn’t the point of this blog. But there are a number of aspects where teaching is remarkably similar to Ops and I think might have helped me prepare for what I do now.
Effective Coaching and Experiential Learning
As a senior operations engineer or an Ops manager, your job is to help train your team and guide those with less experience and expertise (or weaker technical judgment) towards success. Scaling your own experience to others is hard. Most of the time you can’t tell people how to do things right. Especially overconfident 20-somethings with a few years of experience under their belt who think they know more than they know and don’t know what they don’t know and often don’t listen. They have to figure it out on their own and learn from their mistakes and failures the way you did when you were that age. Much of my day is spent asking questions. Why did you do that? What problem are you trying to solve here? Why are you asking that? Have you looked at X, Y, Z when troubleshoot or to get something to work. The goal is to steer them to that “aha!” moment like when a student finally gets that abstract concept or understands something deeply and personally in the context of their life. This isn’t terribly different that the Socratic seminars I led (occasionally successfully) with middle schoolers around a complex text or one with multiple interpretations. Teaching history or literature is not about memorizing facts but exploring and groking ideas. Who cares if you can blindly run netstat or tcpdump (or have memorized the options) if you don’t understand TCP/IP. So what if you can AWS Web Console to build an environment you don’t understand the architecture or are blindly going through the motions?
Implement Pragmatic Processes
My first week as a teacher went surprisingly well, but it was a short honeymoon period that didn’t last long. By Halloween, I knew I was screwed and there was no getting out. By Christmas break it was, “what have I done to deserve this” and “how can I possible make it to summer.” In mid September I came came up with a completely new (and overly complex) system of classroom rules and consequences to reign in the chaos that had taken over my classes. The system I tried was unenforceable and impossible to implement. When do I call a parent? How do I measure behavior? How do I grade performance based assessments meaningfully? Unlike many of the more seasoned teachers, I was not structured or inherently consistent the way I am (more so now) and the way I’ve had to become as a parent of 3 kids. It just wasn’t in my personality at that point and I didn’t have the experience to know what would actually work. I came up with complex assessment rubrics that were impossible to implement that sounded so good on paper but failed to stick. These same lessons apply to Ops for change management or monitoring or deployments. Keep processes simple and lightweight and that will match the way you or your team works. You can’t come in and try to bring in Enterprise process to a startup. You will fail like a naive first-year teacher when the students can sense when you don’t know what you are doing and most certainly will rebel.
Sticking to It and Digging Out
Teaching is unlike anything, except maybe Ops. Early in the year if you screw up, if you class gets of control, there is no going back. At best you can tread water and keep it from getting worse. You simply cannot regain the respect and control that you lost. This is like the technical debt of a poorly implemented application or deployment. It will most certainly suck until it is re-engineered or re-architected and blown away and rebuilt. The best you can do is apply Band Aids to make it suck less. At my last job, I made the mistake of letting an overconfident sysadmin work closely with a senior developer to redo the build and port the app to a new Linux distro without reviewing his work. There was a lack of clear standards or conventions. Everything was a hack and of course went badly when it rolled out into production. Disks filling up. Logs didn’t rotate. There were inconsistent partitioning schemes. Shit was broken and it did not get better until we changed OS’s again a year later.
Continuous Improvement and Never Settling
One of the most rewarding aspects of teaching is the experimentation and tweaking and improving your lessons and activities for different audiences and times of the day. Calling audibles when something fails (or succeed) unexpectedly. Each class is a complex mixture of boys and girls and personalities and skill levels that make it work — or not. A lesson might click the first time you teach it and fail miserably the second and third time only to succeed at the end of the school day when you and the kids are exhausted an you just wing it. A lesson you spent hours preparing might bomb and one you spent five minutes thinking up will be the best one ever. There are so many factors outside your control. You must improvise and adapt those levers and knobs you can influence. But every day and period by period you try to improve things. This is just like sprints and releases and deploys. You are continuously monitoring and measuring and making sure each time you do something it is better than the last. Notice failures fast and change course accordingly.
The Heaviness of being Live and On Call
Until you’ve been fresh out of college responsible for 100+ kids throughout the day, teaching 5–6 classes, ensuring they run smoothly without getting calls from parents or ending up the in the principals office yourself, you don’t know what stress is. There is a reason teachers get the summer off. You are so psychologically and mentally drained that you have to recharge. When I left teaching what I remember most what the sense of relief that this burden was lifted. A month after I left teaching, I remember looking out my office window out at the I-10 traffic and feeling so light. This is what a normal job was. During the day you are “on call” with the kids. At night you are constantly preparing new lessons four or five nights a week (Sunday through Wednesday depending on your schedule). You wake up in the morning thinking about what you have to teach running through the. How similar is this to being in Ops? You wake up wondering will break or what as broken and will need to fixed. Will your systems get hacked? When will PagerDuty go off? Did your alerts fire. What will go wrong? You spend much of day supporting others only to have time on your own at night to do your work only to start over again. Just like teaching.
Break it Down Simple and Make it Real
One of the hardest things you can do is take something complex and make it simple that everyone can understand. That is, without oversimplifying it to the point of triviality. That is the job of a teacher. You survey and scope the content (a given unit, or time period, or concept or text) and extract the essentials and reformulate. Even though I was teaching kids. I read above and beyond the text to fill in the details and understand deeper. I used college level texts which went deeper than the dumbed-down official state textbooks. I read Americo Paredes and I had my kids write plays about the life of Gregorio Cortez to make it concrete and real. This is also just like Ops. Implement, build, and scale out the lofty ideals of the architect who came up with something that may or may not work when it is actually deployed. Ask the dumb questions when developers talk about how they think things will work. Clarify so that multiple development teams actually understand the the interactions between their two components. The job of Ops is to think ahead and inform the solution early on to provide that sanity check and connect the dots and put everything in the context of a real functioning system, not how it SHOULD work but how it actually works with real users.