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 (hear him, hear him: my professional experience forced me to do so), which all HRs and recruiters came back with the same answer more or less: I was considered an overqualified candidate.
It seems that they based their decision on a series of factors, such as my age, my personal years of experimentation, and my 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 by major.
While I was studying to get my degree though, 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.
If I knew 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 with hand on heart 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 human nature 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 up to the last bit of it, no matter how deep I would go or could get into in order to master it.
I'm more than 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 gives me tranquility 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 short 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 for a spare part that was supposedly broken and had to replace it for us.
Within 2 weeks, the same issue reappeared, but this time it 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 then, 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.
I did not speak a word in English, 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 working outside the house doing 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?" she said to me, even though I could see her awe into her eyes.
"I'm fixing our VHS", I replied back in a tranquil voice, full of confidence that I can do this as if this has been my job for ages and continue doing my investigation without wanting to lose my concentration on this amazing adventure to solve this critical issue my family was currently facing.
My mother threw a quick look at my dad that could be translated to "is this our boy?!" and they withdrew themselves in the kitchen, probably to discuss how could they handle a similar situation from now on.
Within minutes I have had detected the problem: it seems like some guests of ours that came for a visit and brought with them their toddlers, 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 was 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, it's quite simple I would say: I did exactly as the philosophy says, without knowing anything about computers or operating systems, let alone having one back then 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, 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?
No, I don't think so. Then, why are they trying to make me feel that I am such a person?
I understand their concerns and I really understand 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 this type of experience so they can start getting motivation to build any kind of project that could be used as their personal 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 work, I used to work 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 that after the interview they told me via email that I'm overqualified.
They laughed 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?
I know by now you are wondering what kind of languages do I know.
- 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 has 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 could 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.
- 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 chance 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
into 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 in 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 have 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 shot by a firing squad. The stress is unbearable that more than often gives people panic attacks.
- 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 become good, to develop its character and its aroma. 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 sense 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.