I want to start by prefacing this article that it is more of a rant then anything else. Maybe it applies to you or maybe it fits someone you know very well.
I Have Experience, I Swear
For the past few months now I’ve been looking for a new job. Something that would be different then my current routine and something that could help my career by thinking differently or trying out a new stack. Figure that I have 7 years professional experience; that I shouldn’t have trouble looking for something new. That’s when I started to question my abilities.
When I started I wasn’t getting many calls. Figured it was due to being late December and people are out on vacation so I wasn’t expecting much. Starting from January the phone calls started coming in. Calls from the Big 4, financial firms, companies in the public sector, and some fun and interesting startups. First phone screens seemed to go well. My nervousness quickly subsided once we started talking and discussing what my role was, my greatest accomplishments, and what obstacles I had to overcome. Then they wanted to schedule a more technical interview, either through HackerRank or their own in house interview software. This is where I was getting kicked down over and over again.
Things like Data Structures and their time and space complexity, being able to design systems from scratch with APIs that I’ve never even worked with, false descriptions, or losing track of time and not finishing the coding exercise.
Data Structures (and the lack thereof)
Over the course of my career I’ve used third party libraries like boost and Qt for my development needs as we would be using versions of C++ that were missing features (shared_ptr I’m looking at you). A lot of features and functionality that had to be designed had to work around limitations of our framework as the framework was designed to handle quick data messaging between modules running on different systems. Unfortunately, we had to scrap our current product and create something new. Problem is that the frameworks short-comings were now showing with the amount of data getting loaded and processed and we just had to keep pushing as there was no time to revisit the issues and that we need sales…. but I digress. We used the frameworks functionality and tried our best to work around it. Because of that my exposure to other data structures were limited and to keep up with them was getting rough with the team constantly working to push out new features or fix bugs that were cropping up.
Without keeping up-to-date with the latest or even keeping with the existing data structures, I would go into interviews completely unprepared or even stepping over myself. I would be asked to implement a breadth first graph traversal and instead find myself implementing a depth first graph traversal. You would see me over-complicate implementing an insert function for a circular linked list with all possible edge cases. Sure I understand the concept, but when there is someone watching me while I’m implementing the code I freeze up and confuse myself. To which I started going into interviews stating that I would be implementing a brute force approach and if time allotted that I would optimize it. After the coding portion I would get asked how efficient in time my data structure would take and how much space it would use up and unless it’s O(1) or O(n) I would stumble with the O(2n) or the O(2 log(n^n)).
I Can’t Be That Incompetent…Can I?
After almost 3 months of this I felt like I had hit my lowest point in my career. At this point I’ve been questioning myself if I was even fit to be a programmer, but then a good friend of mine spoke to me and told me to ignore those nay-sayers. Sure my Data Structures were weak, sure I’ve been working in the same framework that prevented me from being exposed to something new and different, but I was still kept at my job for the past 7 years and no matter what was thrown at me I was able to tackle it. Now I must take upon myself to improve my Data Structure knowledge. In the mean time I need to remember that because I still have a job I must be doing something right.