Apologies in advance for the long post. If I could find a way to shorten it, I would.
So I have posted here before about the difficulty I have had getting traction moving into professional Linux admin. Over the last two months, thanks to a combination of additional study, heavy revision of my CV and seasonal change (end of summer) interest has really picked up but I am bewildered as to how to demonstrate the 'in depth knowledge' that employers seem to expect in technical tests given the apparent fondness for testing on stuff that isn't on the spec or on my resume and the truly vast range of software out there. Given the breadth and the rate of innovation and churn I don't really see how anyone could. It is this that I am seeking advice on.
I am completely candid about my actual levels of skill and experience on my CV and at interview. A number of people have advised me to 'embellish' my skills but I have declined to do so. Everything I present is something that I have really used and I am clear about how, where and for what I have used it. I am getting a lot of phone calls from recruiters and employers and at the moment averaging one face-to-face interview a week with about half inviting me back for a second interview/technical test. This tells me that the skill set and presentation on my CV is reasonably attractive and that my interview technique is 'sufficient'. The thing is that the employers then present a technical test on stuff that I have never used nor claimed expertise on and typically has not even been discussed or advised in advance, it just seems to be expected that as a potential admin/engineer, candidates know about 'all the software', have some sort of telepathy that can understand exactly what has been set up and how and what the person who did that was trying to achieve. Everyone's stack is different, even for the same type of role and I am at a loss trying to identify where to focus my efforts to sharpen my skills.
Skill set given on my resume:
Candidate Summary
An IT trouble shooter, consultant, administrator and user trainer with experience gained from conducting assignments for private clients. After transitioning from a largely non-IT related role to the IT support industry in 2015, I am now looking for new opportunities in the commercial sector to offer infrastructure support services with a focus on Linux based environments.
Skills / Technical Summary
- Ubuntu Linux (desktop & server) 11 years experience
- Red Hat Linux (desktop & server) – 5 year experience. Familiar with all parts of RHCSA syllabus (RHEL7) Scored 170/300 (pass mark 210) in RHCSA exam May 2016
- Debian Linux (desktop & server) 7 years experience
- Strong interpersonal and communication skills – see ‘<$Previous employer>’ below
- SSH/SCP/SFTP server and client setup inc. cross-platform
- LAMP stack local build and in cloud with FTP/SSH access
- Virtualisation: KVM (including virtualised networks); VirtualBox; VMWare; Amazon EC2
- WordPress consultation, design; setup; integration; implementation for public facing client sites– e.g. see <$Client website> ; <$Client website> (independent subdomain)
- Apache – set up and configuation lcocally and with various cloud services in support of http file server; WordPress; Webmin; PHPMyAdmin etc
- nGinx – as reverse proxy for Apache
- selinux – see paper published on my LinkedIn
- lvm
- LDAP client configuration
- CUPS print server set up and administration
- SAMBA server and client setup and administration
- YUM repository setup and configuration
- User documentation and dissemination (see ‘eBook creation’ immediately below)
- ebook creation (ePub/Mobi/azw) – see paper published on my LinkedIn
- Comfortable using terminal interface (‘Shell’)
- Basic BASH scripting- see example on my GitHub linked below
- Basic Python – currently studying to improve
- Basic familiarity with Puppet
- Git/Github - https://github.com/<Github Profile>
- Basic familiarity with Docker
- MySQL/MariaDB setup and administration
- Basic familiarity with AWS, especially EC2
- Linux custom kernel compilation and packaging to incorporate ‘problem’ drivers
- Debian packaging and conversion with rpm
- Regular attendee at ‘Linuxing in London’ Meetups – see https://www.meetup.com/Linuxing-In-London/
- Microsoft Windows XP; 7; 8; 8.1; 10
- Microsoft Office 2010; 2013; 365 to advanced level and trainer in 1:1 and corporate environments – see below under both ‘Freelance’ and ‘<$Previous employer>’
- Bespoke applications trainer in corporate environment to staff at all levels – junior admin to director– see below under ‘<$Previous employer>’
- Software systems integration pilot and facilitation
- Microsoft Internet Explorer; Mozilla Firefox; Google Chrome
- RSA token administration (IronKey) and training
- LibreOffice
- iPhone/iOS user and profile administration
- User accountability monitoring setup using Mobicip (iOS) and Refog (Windows)
- HP / Xerox personal and shared printers setup; installation; administration
Employer example 1:
From Job spec:
Systems Administrator
Duties The systems administrator/developer will be responsible for various administration and support tasks on the WordPress and Ruby on Rails websites we host, as well on their supporting infrastructure.
The systems administrator/developer must have the following skills:
- Ability to discuss and describe technical problems in simple, lay terms
- Deployment and management of virtualised infrastructure; for example, Amazon AWS
- Familiarity with unix/linux systems
- Familiarity with popular open source software such as Apache, Varnish, MySQL and Nagios
- Familiarity with fundamental internet protocols (HTTP, TCP/IP, DNS, etc)
- Sufficient development experience to be able to diagnose problems in any programming language and make simple fixes
- Experience using source control systems; in particular, git
- Experience using Chef, Puppet or similar configuration management systems
- Excellent written and spoken English
- Ability to approach problems methodically Bonus
The following skills would be useful:
- Familiarity with Ubuntu/Debian Linux in particular
- Experience with containerbased approaches, eg Docker
- Experience working on projects involving online payments and PCI compliance
Technical test
Debug a completely banjaxed server stack with Varnish in front of nginx as a reverse proxy to Wordpress on Apache. I wrote about this here. Test machine was an ubuntu VM in VirtualBox. No use of many of the skills listed in the spec. At the time of applying to this employer (with an earlier version of my CV) I had never claimed any experience whatsoever with either Varnish or Nginx (the latter which wasn't even mentioned in the job spec). Sure I can google them etc but yeeah... I have subsequently familiarised myself with nginx.
Employer Example 2:
From job spec:
DevOps engineer to join our existing team and help us roll out, monitor, scale and optimise our systems.
- Design, set up and maintain deployment systems
- Design, set up and interrogate system monitoring
- Improve and optimise existing system infrastructure
- Implement bestpractice access control and system security
- Work with development teams to identify and resolve uptime, performance and scalability issues
- Communicate with multidisciplinary internal and external teams
- Take ownership of problems and get stuff done
- Stay up to date with the latest technology developments and be prepared to present them internally and to clients
Requirements
- Demonstrable investigative and problem solving skills
- Amazon Web Services (especially EC2 & RDS)
- At least one scripting or system orchestration language
- Linux (preferably Ubuntu)
- Relational database admin (preferably PostgreSQL)
- Some knowledge of TCP/IP Networking
- Working iteratively with regular delivery (especially continuous delivery)
- Git (or another DVCS)
Would be great if you knew about these:
- Python
- nginx
- NewRelic
- memcached
- Vagrant (or other virtual machine tools)
- Jenkins (or other continuous integration tools)
- Sentry
Technical test:
Here's our preproduction server farm on AWS, the ssh login for all of them, a pen and paper. I'll be back in an hour, tell me what you can find out about all of these machines.
I identify that the machines are serving a custom python app via nginx supported by gunicorn and coordinated using rabbitmq and celery. There were 16 machines in the farm (8 or so unique) so obviously limited time to explore the custom configuration on each one. They had told me in advance that their whole operation was currently all managed via bash scripts so there were no playbooks or recipes to refer to, these are all 'pet' machines. They all had plymouth (ubuntu graphical login manager) installed on them for instance, on AWS... I have recently used nginx a little and state basic python on my resume but I have never used or claimed any knowledge of Rabbitmq, Celery or Gunicorn. Yes I googled them on that occasion but I could not tell you offhand much about them. I'm not a dev and have not claimed to be. Again, not listed in the job spec and not discussed previously. Recruiting manager seemed disappointed that I had not gone in depth with their manually installed/served custom applications run by a company with 150 staff. Yes, I had asked after the previous employer test 'anything I can prepare?' and the recruiting manager just said 'oh, just how to ssh into an Ubuntu machine'.
How on earth do I prepare for my next technical test?
I am one person, not a whole company. I can only prepare for specifics that aren't listed on my resume or the job spec if I am told what these are and with the resources of a single individual. Obviously if I fancy myself to any level on a given software then I list it on my resume. I do not have a 'test-buddy' to set up a server farm for me to play detective with or set up a borked stack for me to debug. Even if I did you could bet that the next employer would then want to test me on something else that was neither in my CV, their job spec or discussed in advance. I am not pretending expertise that I don't have but I cannot believe that every candidate automatically knows how to do everything. How do I deal with this?
Thanks