I lead programmers. Why should I hire you? Do you think I should hire you because you can write code? No, I do have many candidates who can write code, I am not going to hire most of them. The fact that they can write code means little to me. I need more!!
As a software manager for a R&D team I am not interested in raw coding ability. My goal is not to produce as much code as possible in the shortest amount of time. My goal is to produce a high quality robust application for the smallest cost. There is a big difference between those two; and that difference means that I don’t care nearly as much about your coding ability, as I care about your professionalism.
…Do you really know what your job is ?:
Your job is not to get code to work. Your job is to communicate with other programmers. I don’t want you to get code work. I want the you to write high quality source code that make the application that the customer expects.
Therefore, I don’t care if you can write lots and lots of code that works. I care that you can write code that other programmers can understand. That is the skill I need for my team. In order to build high quality robust systems for the least cost, I need programmers who can communicate, and write code that everyone on the team understands and approves of. In fact, it is more important for me that you write clean communicative code, than you write working code. If you write clean code that others understand, those others can help you make it work. If you write code that only you understand, only you can make it work, and that is useless to me
What does it take to write code that communicates to other programmers? Care. That is all, just care. Instead of rushing to create some horrible mass of code that works, you carefully craft code with the other members of the Team. Rather than keeping your code all to yourself and preventing others from reading and improving it, you share it with others, you write it with others, and you allow others to review, criticize, and improve it. Instead of creating long, convoluted, 100 line functions with many levels of indent, you create many, tiny, well-named, five line functions with only one or two levels of indent. Instead of creating classes that are thousands of lines long with dozens of variables and hundreds of methods, you create well-named classes with just a few well-named variables and under a dozen or so well named methods. Instead of just telling me that your code works, your team proves it by running unit tests that cover nearly every line of code they wrote.
You see? I lead programmers. But I don’t need just programmers. What I need are professionals, and professionals care. Professionals care enough to work on a team, to write code that communicates well with the team, to write tests that prove the work of the team.
So do you think you fit into my team?