Five years I have worked in places where I was given weird puzzles in the interviews. I've been asked to implement linked list, red black trees, Fibonacci and various sorting algorithm. Five years I've been confidently waiting for the day I will use these fancy terms in my code. But today, all hope is gone. Looks like they tricked me into thinking I will have the chance to implement bubble sort.
Quicksort Algorithm — wikimedia
Don't get me wrong, bubble sorting and other algorithms are the back bone of technology. They are important to learn in school, not because you will be using it everyday but because it teaches you about problem solving. Like the name implies, computer science is a science, and like any science it is not easy.
However most companies, dubbed technological companies, that basically just build website are confusing terms and think they need computer scientist to build their websites. That is as incorrect as it can get. Let's remember that most websites are not different then a pamphlet. They provide information and make the page pretty to appeal to the reader.
You wouldn't need a scientist to make a pamphlet now do you? But since websites run on a server and can be made more efficient and easier to maintain using programming languages, developers are hired for the job.
“Every time I describe my job to a stranger, he tells me "so you are a web designer". Arguing is futile.”
The web designer has one of the most important job, theoretically, because her work is what the users sees in the end. The developers however are kept in the dark. Most of the stuff they do (I do) is confused with science. But let me try to dissect it for you.
When I am wearing my front end hat,
- I use HTML to create templates for a new widget (creating a website from scratch is rare in a company)
- I use CSS to make it look pretty
- I use JavaScript to make it interactive if I have to
- I fight those who insist upon adding a cool jQuery library to do the work
- I try to convince the managers that the metrics for the AB test are irrelevant to the success of the widget
- The user didn't click on the button because it was blue, it's because he wanted to click on the button to submit the form.
When I wear my back end hat,
- I use a programming language to get relevant data from the database or any data storage and make it available to the front end.
- I write SQL queries to retrieve data (ORDER BY is my sorting algorithm)
- I write validation scripts to sanitize data coming from the user
- I write plug-ins for any feature where the framework does not provide core support (most website use a framework)
- I fight those who think changing the framework or the programming language is the solution.
When I wear my Sysadmin beard
- I check how the new code affect the server
- I setup staging machines to match production so we can test
- I hang out with the real Sysadmin to learn from their tale of solace
When I wear my optimizer hat
- I fight those who think it's not worth learning JavaScript, and just copy and paste jQuery code everywhere
- I fight the business team who wants to add any weird script they saw on the net because they think it does something cool
- Useless analytics scripts are responsible for most slow load time
- I read SQL queries to see if they are really doing what they are supposed to
- I remove crazy stuff from the code
When I wear my consultant hat
- I try to convince teams that they don't have a technological problem
- Instead of trying to make your site "mobile" take a look at it on a phone first, it looks great already
- If you think mobile users don't need to see some information, the desktop users probably don't need it either
- Just because your read something on the net, it does not mean it's true
- I tell people PHP is not the problem
- I dissolve deadlines, why does the font size need to be 14px on production ASAP?! If a manager says something is critical, the first question is why?
- I try to convince teams that they don't have a technological problem
None of this is science. And that's what most people need but they ask for someone with a PhD in neuro-technology as the job requirement.
If there is a shortage of developers today it's not because we don't have enough people that know this stuff. It's the bridge that connect the candidates with the job that's broken.
- Companies ask for 5 years experience plus bachelor degree in computer science for Front-end Engineer position.
- Schools provide the bachelor degree
- Clever companies provide unpaid internships to help with experience problem and free labor
- When student is ready to work at company, he is not qualified because he has never worked with angulatory.js
If you are a student, I am not trying to tell you what you are learning is irrelevant. Here I merely gave an example in the web programming world which is a hot field to date. The problems solved in computer science are highly on demand but you should get your terms straight. If you are interviewing for a web development job, you should work on your web development skills not memorize your sorting algorithm.
If you are the interviewer, you need to stop. We are not here to solve irrelevant puzzle, leave that for puzzle night. If you want to hire great people then you need to have a say on what goes on the job requirement. You need to know what you need first. A technical interviewer should know what the problems he is currently facing are and see how the candidate will handle these situation. That's it.
For now I will continue to wait for the day I write those terms you learn in school in my code:
// here I use polymorphism :B
public function void morph(Code code);
public function notvoid morph(NoCode nocode);
Comments
There are no comments added yet.
Let's hear your thoughts