GithubHelp home page GithubHelp logo

stefan-cook / devops-homework Goto Github PK

View Code? Open in Web Editor NEW

This project forked from slavaaaaaaaaaa/devops-homework

0.0 0.0 0.0 20.48 MB

License: MIT License

Makefile 3.68% HTML 8.55% HCL 48.14% Python 39.63%

devops-homework's Introduction

DevOps Homework

This is a set of assignments for gauging learning and operational skills of a potential Jr. Site Reliability Engineer or DevOps candidate. Questions are expected to be asked, no resource is off-limits - except, naturally, other folks. Please put in your best effort to do the work yourself.

Purpose

The outcome of this is for both the potential applicant and the potential hirer to gauge how much of a fit one would be for the industry. Here are the values we seek:

  • quick adaptation to environments, new tooling, new technologies
  • ability to clearly analyze things when something went wrong: post-mortem
  • ability to write excellent code
  • ability to ask questions when needed, and in time (before too much time has passed trying to figure something out)

Assignments

  1. Google Kubernetes Engine
  2. Continuous Integration, Continous Delivery
  3. Configuration Management
  4. Infrastructure as Code
  5. Cloud

Notes

No resource is off-limits, that includes the potential hirer who sent you this. Asking questions is a must, some even set a timer for figuring something out: usually, thirty minutes. The only limitation we ask for is to avoid asking others to do the work for you.

A strategy everyone is fond of is talking an object through your problem (this has classically been a poor rubber duck). Walk it through the entire problem, beginning to end: usually, one stumbles into whatever they've missed. My personal strategy has been to imagine how I will explain the problem when it comes time to ask questions to my coworkers. This is a combination of both of the above.

Finally, it's worth noting that these won't be helpful to everyone. Specifically, I and many extremely effective engineers I've worked with learn by doing - these kinds of assignments are real cases of work I've been thrown at to figure out on the spot. Not everyone learns this way: many other effective engineers I've worked with learn by reading books and preparing for a specific subject by generating deep knowledge, not trying things out. It's okay to be on either side of the equation as long as you know your limitations and are a useful part of the team!

Expectations

The assignment lengths and depths are planned to take two to three days of research and work, but something that would take minutes to put together in a work environment.

Communication

It would be preferred to communicate over something other than SMS or email: use a simple chat medium to communicate such as IRC, Slack, Discord. The simple requirements for a friendly platform are ability to:

  • perform code formatting and
  • run on a computer

Excellent Code

I saw this in a manager's handbook once, and never again, so I must attempt to redefine what this means:

  1. Use an appropriate programming language for the given task:
    • The largest tasks should be planned, designed and thought out before any code is written
    • Medium-sized tasks call for a programming language rather than a scripting one
    • Simplest tasks call for scripting and interpreted languages
  2. Write self-documenting code:
    • Comments are words to describe code. Aim for the code to be self-descriptive instead of having to dumb it down for others: describe the why of your code, not the what. That isn't to say that no comments or documentation are allowed: on the contrary, they must be present as a guide rather than a tour.
  3. Use code versioning:

devops-homework's People

Contributors

slavaaaaaaaaaa avatar stefan-cook avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.