Sunday, November 9, 2008

Interviews!!! - God Save Me

It has been a hectic three weeks of interviewing at my office. We have been hiring a lot for design and development of some new products in Fixed Mobile Convergence. We have been looking for people who are very good programmers in C and C++ with some telecom background in the experience range of 1-8 years. To me personally, I dont stress much on what protocols people have worked. If a person is a very good programmer and has good design skills he can learn any protocol and can design scalable solutions for telecom. But sadly the industry around us in Bangalore, especially the bigger services companies, doesnt seem to think so. Here are my observations of people from big companies who claim fancy things in their resumes.

1. Almost all of the resumes that we receive have the candidate projecting himself as having worked in design, development and deployment. You ask them to design solutions for simple problems, they cant even understand the requirements. I am not talking about big system requirements here. I am talking about small programming problems with some scope for design challenge.

2. The more experienced a candidate is the worse his programming skills are. People rejoice in claiming to be "Leaders" / "Managers". Its been a nightmare for a smaller company like us to find good developers. A small company survives because of good software they write and market and not because of excellent people managers they have.

3. Almost all attach the word C++ if they know C programming. People think that C++ is just an enhanced syntax of C. Having said this I am ready to hire a person if he is excellent in programming in C and can independently develop software even if he doesnt know object oriented design principles and programming. A person who can think through programming logic can easily pick up object oriented design concepts.

4. Anyone who has seen a TCP socket program (forget about writing TCP client/servers) claims he is an expert in TCP / IP. No one cares about how a TCP server is designed for concurrency and scalability, how queue sizes can be optimally designed etc.,. What good subjects like "Operations Research" that one learns in their engineering do?

5. Designation matters to them most than how good they are at solving problems.

6. People who claim to have used a particular tool or framework are only API users. They fail to understand the internal design of those tools. For example I came across a few resumes that boasted of expertise in ACE (Adaptive Communication Environment). I am not an expert in ACE myself and neither am I an expert in design patterns. But I atleast know some of the design philosophies of ACE. But these self proclaimed ACE experts cant even understand what a factory pattern is.

7. This is especially about Java developers. Somehow our Java textbooks teach it all wrong. Almost everyone who has done only Java programming thinks "Thread" is a feature of language.

I desire to go to teaching profession one day and teach software development and design to college grads. Such fruit less interviews are driving my desire more. I know we severly lack quality teachers at undergraduate levels that teach good programming skills. But apart from that what I feel is we as a society somehow attach greater importance to status and designation rather than what effective work one actually does. I would love to teach the young grads the importance of learning and problem solving rather than how to get designations.