Interview Pressure

It's not often I find myself completely disappointed in myself like I was right after this interview came to a close. I interviewed with a company and was totally excited for the possibility. They by far have the most impressive architecture I have ever seen a company accomplish, especially as a young company.

So what could possibly leave me feeling so disappointed? I had a practical skills assessment. Now, I have given these myself on many an occasion, that's part of the process when you need to hire someone new for your team.

As a lead, you need to know and understand where their (the candidate's) skills are, what strengths and weaknesses they have, and how those could benefit or hurt your team. You need to tailor your assessment to allow you to get a glimpse into these types of things, but you also need to strive to make it fair.

The assessment I participated in was fair, but it was also very intense. It wasn't intense because of the challenge, particularly, but rather due to the unseen pressure that we as engineers feel during an evaluation.

As an engineer, I have worked on linux, and understand it pretty thoroughly. Unfortunately, as an applicant, I, like many others, freeze. There are so many possibilities that go through our heads about what could possibly be going on with a system.

In the case of this assessment, there were several areas, all of which I know how to solve the problems, but I struggled with them. The one that I felt the most frustrated by was 'deleteme', because it took advantage of a trick that I have used countless times in linux. How do you make a file undeletable in linux? chattr +i filename. I have done this same thing myself countless times. It used to be one of my favorite questions myself that we have even discussed in the #rhel channel. What if a person were to do something like chattr -R +i /. Could you recover from this?

The short answer is no, the longer answer is that it depends. It's not as simple as doing something like chattr -R -i / because you still have to go back and fix all those files that do actually need the immutable flag set. We used to talk about this in pretty good length, in fact.

The second part that left me frustrated, and this is one of my own personal demons -- The scripting challenge. I tend to rely on bash when I need to do scripts. Not because I can't write in any other language, but because I know bash the best, it's safest for me. When I script in python, I get very very 'imposter syndrome'ish. I have never been a developer (well, outside of classic C for muds), and so, when I write scripts, I freak out "What if they find out I am not a 'strong developer'?" I have always told companies from the get go, I am not an SWE. What I don't tell them about is the level of anxiety it causes me when someone is watching me code, because who wants to hire an engineer that gets super self concious about their work? Isn't OCD great? I am never satisfied with the resultant code that I write. I always want to change it, to reduce it, to clean it up more. To the point of I will go back and work on it again and again.

Case in point -- The scripting challenge for this interview. I did not finish it during the interview as I had taken too much time solving the various puzzles, and even trying to come up with a creative but overly complex solution in bash as a 1 liner. I probably wasted 10 minutes of time right there, while someone was watching me do it. Ultimately, I did email them a version of the script that I believe satisfied 90% of what they asked for... Unfortunately, I won't likely ever know.

For amusement though, here is the script, with inline comments about the challenge:

#!/usr/bin/python3
# Given the Apache log file, write a script that returns a list sorted by the most frequently seen (originating) IP addresses with three fields:

#ip
#number of occurrences
#percentage of total requests logged.
#Apache log format is as follows:

#LogFormat "%v:%p %h[%{X-Forwarded-For}i] %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined_with_proxy
import re
from collections import Counter

iplist=[]
with open ('interview.log', 'r') as data:
        for line in data:
                ip=re.search(r'\[([0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?)\]', line)

                if ip is not None:
                        iplist.append(ip.group(1))

counts=dict(Counter(iplist))

for ip,count in sorted(counts.items(), key=lambda item: item[1],reverse=True):
        percent=100*float(count)/float(len(iplist))
        print(ip, count, "{:.0%}".format(float(count)/len(iplist)))
-Villain

Comments

Comments powered by Disqus