Training for advanced skills and career advancement - chef-boneyard/chef-summit-2014 GitHub Wiki

Location

Friday, Greenwood, 1300

Convenor

George Miranda, partner engineering, Chef

Participants

Summary of Discussions

When you start down the path of automation, most folks seem to gravitate toward Continuous Delivery. Even if you don't go into a CI/CD model, there seems to be a core set of base skills (beyond "just" Chef) that we need to develop if we want to grow new talent. Unicorns don't scale.

What are those skills? Is there consensus on what we should be teaching people as we onboard them into "DevOps"?

We started by talking about tools: need to talk about git and Jenkins in addition to Chef.

We can't change culture, but we can change behavior. Tools reinforce behavior and behavior changes culture. Tools matter, but the lesson is more about the behavior we want. People, process, tools. Realizing that the tools dictate new process and people.

Learning git is about learning how to collaborate in the community via source control.

Learning jenkins is about learning how to set up build jobs that move artifacts (frozen cookbooks) to your Chef server. Teach people new to Chef that no people should get 'knife upload' access. Have the build pipeline do all uploading. Maybe we shouldn't teach then the bad habit of uploading directly from their laptops.

Learning how to use vagrant to spin up a node, install chef, use virtualbox (or some provider), and run tests via test-kitchen. We are teaching people about Test Driven Infrastructure.

Github link from Tyler Fitch - automation tools bootcamp: http://tfitch.github.io/automation-tools-bootcamp/

Need to teach people to use source control and collaboration skills. Strong pair programing models help here. Look to @LlewellynFalco for guidance on Strong Pair Programming techniques. Chef koans, similar to ruby koans might be helpful.

Back to tools: a git-chef-jenkins process flow is probably the default for most customers who want a prescribed path. Teach people the workflow of steps: how a change makes it all the way to Production.

Teaching TDI is in part teaching Software Development Life Cycle practices. Teach people how to conduct proper code reviews. Why proper linting matters. Non-developers need this background.

Non-Ops folks need a "just enough Ops for Chef" course.

Other topics:

  1. How to deal with provisioning (consensus = none, all over the place)
  2. Patching
  3. Image Management

Softer topics:

  1. Dealing with cultural challenges
  • Scope of ownership stack: how to deal with lack of control
  • How to work with non-supportive departments (e.g. IT that gives you broken infrastructure)
  • Setting a high bar for work if you can (e.g. rejecting any build request that isn't automated)

why is there time to do it twice, instead of doing it right once?

Consistency of training. Chef should call out anti-patterns and pitfalls for students just completing Fundamentals.

Adopt a "Script or die" approach.

Is there still a need for super deep Unix experience if someone else knows the rest? Yes, there's a place for it. But if you can teach junior admins the rest of these skills, that's a great way to get them on their way to being unicorns.

What will we do now? What needs to happen next?

A Learnchef Summit has been proposed. Now that we have consensus on the types of skills that are needed, we can start figuring out how to teach those. Note: most of those skills are more than just Chef.