Job requirements
To be a great Sysadmin, SRE, DevOps at an Awesome Company, you need specific skills and knowledge.
It's not a definitive list, but it's a good starting point:
- Coding: a good scripting language, such as Bash, Ruby, Python.
- Sysadmin: managing systems from a Linux command-line (although nowadays we don't use tel^H^H^Hssh anymore to manage systems).
- Networking: datacenters, racks, switches, routers, IPv6.
- Scaling: load-balancing, sharding, fail-over, distributed computing.
- Databases: relational databases such as MySQL, PostgreSQL, SQLite.
- NoSQL: in-memory and document databases such a Redis, memcached, RethinkDB.
- Virtualization: managing VMs using KVM, qemu, VMware, VirtualBox.
- Containerization: orchestration tools such as Docker and K8s.
- Version control: git.
- Monitoring: see what your servers are doing with Grafana, ELK stack, Graphite, Munin, rrdtool.
- CI/CD: automate builds, deployments, and tests with Jenkins, GitHub Actions, CircleCI.
- Cloud services: offload certain computing tasks to AWS, Azure, GCP.
- Automation: manage your infrastructure as code using Ansible, Chef, Terraform, Cloudformation.
- Backups and DR: there are multiple backup strategies, and I'm grouping disaster management (offsite backups, active/passive DR locations) in here.
- Writing: NO ONE wants a slob who can't clearly document their work.
- Adaptability: the ability to adapt to change.
As you can see, I listed many technologies above, but in our industry things constantly change. Although today you might use Docker, next year it might be something new and exciting which revolutionizes containerization. Who knows? For this reason, it's important to not get hung up on one specific tool. That's why I highlighted adaptability. You need the ability to learn on the job, to adapt to what's new (without necessarily being an early adopter), and the ability to understand the core principles behind the technologies you use.
The above knowledge and skills reflect a subset of what you should know to get a job at an awesome company.
There's another important aspect, the human aspect, which I'll discuss on the next page.
Side-note about GitHub: Assuming you know what GitHub is, you should firstly, and most importantly, know how to use GIT. You might laugh at me for pointing out the obvious, but if you don't know what your future employer does, or why, or how, then you're an idiot and you should not read this book. Seriously.
I don't think you need to be a git-guru, considering GIT has a million command-line arguments, that might be impossible even if your first name is Linus. You should at least know the basics in regards to commiting, cloning, pulling, pushing, branching, tagging, rebasing, and perhaps a few other fancy things.