Something that I would have never imagined that could have happen to me would be to be considered "overqualified", whatever that possibly means.
You see, I have been unemployed since July 2015 and I have been applying for various programming positions, Junior positions to be fairly honest with you, and I consciously did so for obvious reasons which all HRs and recruiters came back with the same answer more or less: I was considered an overqualified candidate.
It seems that their decision was based on a series of factors, such as age, personal years of experimentation, and professional years of experience.
Those of you who have been kind enough and read my About page would know by now that I am a Computer Scientist.
While I was studying to get my degree, I was approached by a company with an incredible opportunity to start off as a computer technician - IT Network Engineer to be more precise - that would eventually allow me to become an Assistant Systems Administrator.
Have I regretted it that I took that job? Yes I have!
Well, back then when I got the opportunity I did not have any other choice as I was doing something completely unrelated to computers, therefore it was like a Christmas gift to me, but right now I do regret it like crazy.
Had I known that in the near future I would not be able to get hired as a programmer, even as a complete newbie, I would have rejected it without second thoughts and I would go for something much more related to programming.
So, why am I considered overqualified after all?
I can sincerely say that I have no idea!
I'm not the type of person that has an active GitHub account with countless lines of code and fancy projects, apart from a minor exception if you consider such naive participation in various projects for fixing innocent typos and reporting silly bugs; nothing more, nothing less.
My character consists of repetitive patterns: I see something I find interesting, I take a brief look at it, and if that particular thing captures my attention, that would be it; I need to fully understand it, no matter how deep I would go or could get into in order to master it.
I'm extremely obsessed with organization, a tight environment, and discipline, in no particular order.
Yes, I am an OCD person and I could not be happier about it.
I love solving problems; actually I live to solve problems and that makes me more than happy, because it makes me tranquil when I do so.
Before I knew what UNIX philosophy was, I was actually applying it in my daily routine without even realizing it.
To give you an idea, let me tell you a story.
Back in the '80s, my family bought a VHS so we could watch movies. After a while, no more than 6 months we bought it, it stopped functioning properly and would more than often chew -- literally chew -- the video tapes' film.
My father took it to a technician that was "expert". He supposedly fixed it for us and not only our warranty was used, we had to pay an extra fee as well for a spare part that was supposedly broken and had to replace it.
Within 2 weeks, the same issue reappeared, but this time was much more aggressive than before. This time, it would not only chew the film, it would actually cut it in half.
Without second thought I, a 6-year old kid, had to solve this problem!
It really intrgued me as of why it was causing this problem and why this technician could not solve it in the first place.
Mind you I did not speak a word in English at the time, let alone read manuals that are written in such language. Now, imagine my surprise when I opened the manual and could not understand a thing as it was written in Japanese!
But no worries, that did not stop me from solving the problem. I had to figure out what was going on and had to find any plausible methodology to produce a final result somehow!
My parents were both outside doing house chores and I took the VHS out of its place, laid it down on the floor, dismantled everything to tiny pieces following a visually geometric process: from left to right, big parts to tiny parts, in that linear order.
My parents came back in the living room and witnessed what I was doing; they nearly faint when they saw me on the ground operating on my sick patient, but managed to maintain their parental posture somehow.
My mother asked me in a very calm and harmonic tone: "what are you doing my love?", even though I could see her awe into her eyes.
I replied back in a tranquil voice, "I'm fixing our VHS", full of confidence that I can do this as if this has been my profession for ages and resume with my investigation without letting them disrupt my concentration on this amazing adventure to solve this critical issue.
My mother threw a quick look at my dad and they withdrew themselves in the kitchen, probably to discuss how could they handle a similar situation in the foreseeable future.
Within minutes I have had detected the problem: seems like some guests of ours that came for a visit and brought their toddlers with them, somehow managed to find coins and inserted them inside VHS's door as if it were a piggy bank!
Not only that, I have also figured out that the "expert" forgot to plug back important fuses that would activate the film motor's speed controller that would drop the rotation back to idle mode as soon as the motor head warmed up.
That was an important experience for me that changed my entire life ever since.
So, how does it relate to the UNIX philosophy you would ask?
Well, I did exactly as the philosophy says, without knowing anything about computers or operating systems, let alone owning one back in the '80s.
I was doing one thing at a time and I was doing it well.
I was correlating the parts between them to figure out which one depends on what so I could test the working parts and distinguish them from the problematic ones.
If that is not debugging combined with QA, Reverse Engineering, and Test-Driven Development (well...kind of), I don't know what it is.
Now, back to my current situation.
If I am this kind of person that knows how to solve problems, but cannot get hired for some reason, does it mean I'm incapable in any way?
If I cannot express myself accurately and in detail during an interview due to Obsessive Compulsive Disorder, does it mean I'm an incompetent?
I don't think so. Then, why are they trying to make me feel that I am such?
I understand their concerns and I do feel them when they say "but we need to see an actual portfolio of yours".
The thing is, they have to start giving people an opportunity to gain such experience so they can start getting motivated to build any kind of project that could become part of their portfolio.
To give you an idea how things really are getting out of hand, I was approached by a couple of old students of mine (before I got redudant from my last work, I worked as a Technical Support Officer for a quite well-known private university for 7 years).
They asked me whether I have applied for any programming position at that well-known software development company that came in Limassol not so long ago.
I said yes and told them that after the interview they told me via email that I'm overqualified.
They laughed out loud and told me that they went for an interview as well, the one person without a degree, but with experience and the other without experience, but with a degree.
They were both rejected, the one because he did not have a degree and the other because he lacked the experience.
So, my main question is: who the hell are they actually hiring?!
If I am considered an overqualified person due to my years of professional experience and of my CS degree, and those guys are not suited for their standards, then who the hell is?
To clear things a bit for you, I will share here what languages I am familiar with and tools in general.
- I feel like at home with C and C++
- I have been experimenting with Python for a few years now
- I have read quite a few important Python books by great minds out there, by incredible Pythonistas and have learned a bunch of things from them.
- I learn new things every single day I have do admit.
- Lately, I have been reading more about Django, because I really want to start implementing ideas as soon as I gain experience around it to make me feel comfortable using it.
- I know shell scripting, bash or POSIX-compliant.
- I have played with Perl and would really want to know more if I
ever get the opportunity.
- For some reason, this language makes me feel so comfortable, believe it or not, the same way I feel when I use my native language. Don't ask why, I have no idea, it feels natural to me!
- I have played a bit with Lua; an amazing language that earned my full respect.
- I have played with Java until I have attempted to know more about Generics. Boxing - unboxing values got me confused and stopped reading about it.
- I have tested C# and I have to admit it's a lot easier to follow
comparing it with Java.
- The only reason I'm not taking it seriously is because of Microsoft stack, but now with its availability under Linux, I might give it a try.
- Yes, I have played quite a lot with Node.js and got bitten by callback hell. No, ES2015 a.k.a. ES6 does not fix things yet; it's getting there though with ES2016 a.k.a. ES7, fingers crossed, time will tell. UPDATE: As of 11/07/2017 the latest ES2017, a.k.a. ES8 has been released. Time flies :S
- I have an extensive experience with PHP, but don't ask me to build a website from scratch. I use WordPress for simple stuff, but eventually this will change in the near future with a Python CMS, preferably something that is built with Django.
As you can see the list is quite extensive and could get bigger and bigger with things I know of and how to use, but what it's obvious is my lack of specialization.
The reason is quite simple: I was never given the opportunity to be part of a team that specializes on certain set of technologies and topics, so I can finally gain experience on that set of tools companies are after from various candidates.
If I had an opportunity to speak openly at a company or a group of companies that hire people, I would have suggested the following things:
- Do not shut the door to people that lack the expertise you are
looking for, because you have no idea what this person could bring in
to the company along with him.
- Just because someone cannot express himself, does not mean he is incapable or incompetent to meet the company's criteria, let alone fixing serious problems within company's development team.
- Lower your standards a bit so newbies can finally get the opportunity to get hired and gain that experience you are after.
- Stop causing so much pain over interview procedures.
- If you don't plan to use data structures or algorithms, do not even bother showing off during the interview procedure, because I can honestly say you and most of senior engineers do not know algorithms either. Trust me on that, I have witnessed it with my own eyes.
- I have the books and when it's needed, I will open them, take my notes, implement those algorithms, and provide you with a prototype so we can build new ideas around it and improve it afterwards.
- Fix your hiring procedure.
- Don't hire incompetent HR that have zero knowledge about technology that announce open positions for programming languages that have just got implemented and want a 2 year or 4 year experience. No, I'm not making this up, search it and you will see for yourselves (Easter Egg: Swift positions, hint: was released back in 2014 and this job announcement took place 6 months after the official release of the language).
- Start sending emails to people that took the interview to let them know whether are suited for the position or not. No matter what the decision is, let them know about your final decision so they won't be left in the dark hypothesizing they might have a chance.
- Start transforming your interviews by making candidates feel like having a coffee with a friend than feel like they are about to get executed by a firing squad. The stress is unbearable that more than often gives people panic attacks. I had happened to me and I'm not proud at all.
- Embrace people with willingness to learn
- More than often people are eager to learn something they may find interesting, intriguing. This kind of people are the ones that will transform your company, don't let them leave by any means. Consider them as your geese that gives birth to golden eggs.
- Train your people periodically and let them know you are interested in their willingness to learn new things by sending them at various conferences and hackathons. If you don't want to send them at such, organize them yourself, as simple as that.
- Embrace quality over quantity
- Your people should become qualitative if you let them be so. It takes years for a wine to develop character, aroma, and flavor. If we pay thousands of dollars for a single glass of an old wine so we can appreciate its taste, its flavor, its perfume, and the senses it leaves on the back of our throat, why aren't we doing the same thing for a person that has years of personal experience, of personal fermentation if you will?
- Who won after all, the Hare (the quantity, the speed) or the Tortoise (the quality, the consistency)?
No further questions, your Honor.
Feel free to comment.