Friday, May 7, 2010

How I would hire

If you open up job ads, you will see a bunch of things listed as requirements. Bachelor degree, certain year of experience, programming in a certain language, and certain open source libraries etc.

Let me tell you this: bachelor degree (even a masters) does not tell you much, unless you are fresh out of college. Anyone willing to take enough requirement classes get a bachelors. For experienced individuals, college is just too long ago. Go to a low requirement school you can even get a masters without much studying or a writing thesis. Years of experience is good indicator of good skills but may not tell you much either. In some laid back, lazy environment you can have someone with 5 years experience in programming and can't write a simple class, and gosh not even a for loop (no kidding).

Many ladies want the latest styles in clothing and shoes, and so do programmers in latest buzzwords. "Architects" want to use the latest things (popular open source things, buzzword things) they have heard of without full understanding: which generates non-sense over-engineered approaches to simple problems that generate buzzwords on their resume and they quit (or get fired) and pretend they have implemented certain buzz things.

Recruiters look for exact buzzword matches on resumes and jobs. No experience no talk.
Some bothers to call you to talk to you a bit and just to point out you don't have certain buzz things and won't give you an interview (then why the heck call me in the first place)

Look, those open source things are new and the documentation is wide open. Given a couple days, good documentation, and that the library actually works, the real programmer is able to figure things out. So what if he/she hasn't done it before from previous work.

In job interview or some "screening" online tests, you may need to recall the exact nuts and bolts of things, such as what's difference between ArrayList and a Vector. Got a couple seconds? boom, look it up in google. The guy who tells you Vector is thread-safe isn't necessarily smarter. All programmers, however, SHOULD know the basics: know OOP, know Design Patterns, know how to make a web app.

I would look for problem solving skills, enthusiasm, rather than recalling exact API. If you can tell me some AOP features of Spring and some details of Spring MVC I consider you know the basics and can figure out the rest. If you have some idea about object-relation-mapping and able to tell me pros-and-cons versus JDBC I consider you able to do hibernate.

The only jobs out there are super-duper-senior software developers. With bad economy and outsourcing there is no room for anything less. People with less experience/skills will have no work, need to move to 3rd world countries in order to get work by out-sourcing, or entirely switch career. OR, BECOME a super-duper-senior software developer: its the survival of the fittest.

But with no experience no talk, this is the ultimate deadlock example: job to get skills; skills to get jobs. Waita minute, I can't give you this deadlock example unless you ask me in an interview.

Here is what I see in real life: CRAPPY stuff written by so-called title-inflated so-called senior developers. I can write better codes when I was in high school. How the heck did they get job? By bluffing through an interview. Sure: communication skills is important. But coding is communicating to the computer and many are not able to!

How do people solve crappy code? By posting ads for super-duper-developers.

No comments: