I graduated with a BS degree (such a fitting acronym) in 2006 with a composite Computer Science Major and a Spanish Minor. Because I took off two years for humanitarian service in Peru for 24 months, it took me six full years to graduate. That's a whole lot of money spent, and a whole lot of slave work given to "those who can't," professors. Other than the ridiculous piece of paper I got in the mail, the entire process was a complete waste of time. I graduated in my field not knowing how to run a "grep" or even how to concatenate two string variables. The last semester of school, the financial department made a mistake and billed me an extra $600 or so, which they had promised a few months earlier wouldn't happen. To add insult to injury, the first six weeks of my first web developer job had nothing, NOTHING, to do with the garbage education I received in college. It took a lot of blood, sweat, and tears to learn to code. But even then, I learned more about programming in just a couple months than all my education time put together.
Since then, I've been a full-time web developer between two different companies and have done quite a few side projects along the way. I feel pretty proficient at this point, something I've obtained almost entirely on my own accord. The entire educational system is terribly flawed, in fact, it's really become nothing more than a propaganda tool. No, I'm not a government conspiracy believer or anything like that (more of a conspiracy "agnostic"), but I feel that the system has turned into nothing more than a way for a bunch of lazy, dumb people to feel good about themselves by torturing students. Seriously. I once took an elective from the non-tenured (read: bottom-tiered) robotics teacher who taught me more in one semester about C programming than I had gotten from all of my PHD "Computer Science" teachers combined in the rest of the six years. He was the single bright spot in my education.
So "standardized education" segue-ways into standardized testing and what brought me to rant about this today. I have recently been on the lookout for a new job in my field. I've been with my current company for 5 years and feel I've far outgrown it. Now, first of all, I totally get employers wanting to weed out the wheat from the chaff. In my current company, I often participate in interviews with potential candidates to "test" them with some simple code questions. When you're sitting in the room with them, "feeling them out" so to speak, I don't see anything wrong with getting a general idea of their capabilities from them. That's fine. But the problem arises from employers treating potential employees like college students and handing out these robotic tests.
So I have been asked by a few employers to take some of these online tests to judge my skill in the field, one of which I took very recently. I don't even know where to begin with how idiotic this thing was. First of all, at least 50% of the questions could be answered almost precisely by doing a basic Google search on the topic. The test uses Javascript to detect if you're trying to open other browser windows to cheat which can be defeated by simply turning off Javascript or simply using a separate computer. Nearly all of the rest of the code can be narrowed down pretty easily by the same method.
Now, you might be thinking, "well an employer probably knows you'll cheat and adjust the test accordingly". Wow, that's scientific! Give these guys a cookie, I've just got to work with such geniuses! Except it's not. Some of us may feel that because they're adjusting the test for cheaters, we won't cheat or we will purposefully answer incorrectly to put our score in realistic territory. Or perhaps, the employers will believe that we're overcompensating and expect us to do this...and...and...and...someone shoot me if I have to take one of these things again. So that's #1. The test proves practically nothing other than the fact that someone may not know that Google exists.
Secondly, many of these questions are just awful, and many are designed to trick you. You see, in this test, nearly everything I came across were ultra-obscure methods, functions or operators, not only unnecessary, but some were outright terrible coding choices. So what happens is you begin to over-think everything, wondering if this is just another mind trick.
For example, PHP has a function called, eval(). This came up and was used in one question. Now, this function technically CAN work if used carefully, but it is an extremely poor choice to use when executing code. In other words, there is honestly no situation on planet Earth where you need to use this because it can create so many other problems. So among the answers there was the correct result (if this was used right) and a "syntax error" result. So it gets you thinking, are they trying to hint that the correct answer is "syntax error" because this is a terrible choice of a function to use? Or are they literally looking for a correct answer and actually think this is a good function choice?
So this brings up another thing about these tests. In the real world, if someone brought up some code like that to use, I'd tell them to throw it in the trash and buy me lunch for a week for even attempting to pass it off to me. But obviously you can't say that to the computer! You've got to play their stupid games to give some developer who wrote the cursed thing, his kicks and giggles. And that pisses me off more than anything else. I'd love to punch the guy in the nose who came up with this stuff.
So most of this test had crap like this sprinkled throughout. Another question used global variables. Now I've been doing this stuff long enough to know that globals are amateur code, they NEVER EVER need to be used in any sized project. They are instant security loopholes, they are spaghetti code, and they are messy things. Am I supposed to take this question seriously? Or are they trying to hint that this is a poor coding choice and select the "syntax error" answer again? Who knows!
It's really insulting to me that before I'm even allowed to talk to anybody, I'm required to take these joke tests that does absolutely nothing for the employer. There is pervasive culture of egomaniacs in the programming community. People love to talk a big talk about all the obscure frameworks, libraries and functions that exist in the field that they feel they are good at. Trust me on this, most of these things are completely unnecessary for good software design, be it desktop or web. So you have the OOP fanatics who will "epeen" all day long about how this method or that method is so incredibly superior to procedural code when the arguments are pure hogwash. I wrote this up just as a small example to illustrate much of the idiocy in OOP. Good procedural design is proven to be faster than OOP, and can be just as expandable, modular, and accessible as the latter. Don't let anyone tell you otherwise.
It's pretty common knowledge that the IT field is full of social rejects. I worked with several teams of guys who lived with mommy, left their workstation full of mountain dew cans and pizza boxes. They could never complete a project on time, were always late or absent, but BOY could they code when they felt like it. Guys like this would ace these tests, if he got off his butt to actually apply for a job in the first place. So you have the perfect framework for people who feel the need to overcompensate or "prove" something to the world. Their social lives are messed up, so they get praise for their jargon and making sure you know they are smarter than you (even when they really aren't).
I believe that many employers in this field are filled with guys like this from top to bottom. They'd probably like to hire a few programmers, but wouldn't have a problem bringing guys in to "show them up" just for fun. That's where these absurd tests come in. These are tiny people, who are lacking in so many areas in their life that they have the need to bring others down to their level to make themselves feel better.
I worked for a couple years with a guy like this. Socially retarded, but brilliant when it came to actually coding. After months and months of taking his (undeserved) superiority complex, I had finally had it. I found some of his code was full of errors and jokingly let his superior know about it. When he heard that I had accused him of poor coding practices, he was crushed. He missed work over the next couple of days and refused to speak with me for several weeks.
This is the key with dealing with these kind of people. I've learned some important lessons in this field. 99% of programmers I've met are mostly faking it, in fact the same could be said for nearly every "successful" inividual. Oh, many have got the lingo down real well. They use this as a bully scare tactic, or, "don't even dare questioning my superiority". They use this as a facade to hide their weaknesses and it is absolutely amazing how many smart people fall for it. Visiting web forums, I encounter guys like this all the time, many of which have BSd their way into moderator positions and have half the community supporting their garbage. When one of these kind of people tries to push you, you've got to hit them where it hurts most - where *they* feel they are strong. You've got to stand up to them or they'll walk all over you with their phony jargon.
Employers are not much different. Oh, they try to put on a show that "this is serious", and "this is professional business". The reality is that a bunch of developers are snickering at your application in the break room seconds before you walk in the door thinking of ways to trip you up. I had an employer interview me once who asked me what a certain highly obscure Python function did. I saw this coming and said, "I'd look it up on Google". His answer was something to the effect that, "well it's good to know these things on your own". My answer was, "it's better to know how to use every tool at your disposal. Nobody knows everything. A poor programmer relies only on his memory".
Another time, an employer asked me to write a MySQL query with a simple task. My query was a little long, but it did the job. He immediately criticized it and made edits to show me how mine was more inefficient. I refused to back down, and told him that both got the job done and that it was clearly something that I wrote up on the fly and would be cleaned up before production. These jokers memorize a list of questions, with the planned and perfect answer, then use it to lambaste your own answers if they aren't perfectly up to snuff with their planned list. "Oh, but they are just testing your response in a adverse situation" you might say. Bull. Nobody needs to be an utter prick just to test your skills. When I see that kind of stuff happen in an interview, red flags go up - time to give the bullies the proverbial finger and smile while walking out the door. Let's test them to see their reaction to an adverse employee.
Another time, an employer asked me to write a MySQL query with a simple task. My query was a little long, but it did the job. He immediately criticized it and made edits to show me how mine was more inefficient. I refused to back down, and told him that both got the job done and that it was clearly something that I wrote up on the fly and would be cleaned up before production. These jokers memorize a list of questions, with the planned and perfect answer, then use it to lambaste your own answers if they aren't perfectly up to snuff with their planned list. "Oh, but they are just testing your response in a adverse situation" you might say. Bull. Nobody needs to be an utter prick just to test your skills. When I see that kind of stuff happen in an interview, red flags go up - time to give the bullies the proverbial finger and smile while walking out the door. Let's test them to see their reaction to an adverse employee.
These phony tests do nothing to really test people, unless testing means pissing them off. I trained a brand new employee several years ago who knew zero about coding. Nada. But he was a good guy, he came to work on time, he completed his assignments, and he was teachable. Within a month he was a decent coder, and I could rely on him for many projects both large and small. I'd hire a thousand janitors to code for me if they had the right work ethic. Why do so many employers not see this simple fact? Because they're phony morons. They've bought the "standardized education" garbage hook, line and sinker. It's pretty simple.
I'm done being treated like a robot college student. I don't have to anymore, I can and do confidently submit my resume to several employers around the country each week. I have the "piece of paper", I have a great job a wife and kids. I don't beg for a job, I make them beg for me. When I get bullied by these people, I bully them right back. I deserve to be treated with respect, not treated like some greenhorn fresh out of college. You should too.
No comments:
Post a Comment