Throughout my career, I’ve been in a few interviews. There are several questions that I expect to hear and a few unusual ones. Some of the unusual ones tend to raise a red flag. However, when you hear those red flag questions often enough, it really sticks with you. Here are two of my favorites:
- What does this company get from a senior developer, for the extra cost?
(or) What do I get from a senior developer that I don’t get from a mid-level developer? (It was asked as-if, the interviewer really didn’t know the answer.)
- It looks like you have a lot of experience with leading and being in-charge. We don’t need that. We already have that covered. What we really need is a hot-shot developer. Can you just be a developer, and not get involved in any decision-making, leadership or direction influence?
Let’s start with the first one: What exactly does a company get from a senior developer for all of that extra pay?
At first, this seems like an easy answer. However, when someone asks you a question (like this) that has an easy/obvious answer, it should give you pause, to wonder why the person doesn’t know the answer. Maybe this was meant to be a conversation starter, or just part of some interviewing exercise. However, this could also be an indicator that this person/company honestly doesn’t know. But how could that be? Have they never worked with a senior developer, or maybe they have had problems with “senior developers” and therefore don’t think they are worth it. Now you are being asked to convince them otherwise.
First, lets put things in perspective. Let me start with a simple description of the qualifications and expectations for each tier of developer:
- Junior programmer – New to programming (less than 1 year, professionally). Needs a lot of help and supervision to get past frequent hurdles. Often, does not know where to start or what the next-steps should be.
- Mid-level programmer – Experienced (2+ years of programming) (no age or career limit). Knows how to program, is resourceful, knows several technologies. Occasionally gets stuck, but not very often. Probably has not been-in-charge-of more than two people, ever (including himself).
- Senior programmer / dev lead – Knows how to start a project, wrap it up and everything in-between. He has a repertoire of technologies and dev approaches. Has a library of code. Rarely ever needs to ask others for help solving problems. Knows the difference between a good idea and a bad one. Knows when a project is on-track or not.
Once you reach the title of “senior developer”, people just stop coming up with elevated titles for you. There really is no Über-senior developer or Vente developer or fifth-degree senior-belt developer. Those titles would be nice, but nobody uses them. So, the term “senior developer”, sounds a lot like “college graduate”. It just means that you have left the nest. Beyond that, there is so much room for interpretation.
Once someone earns the title of “Senior developer”, he/she may gain increasing levels of skill, above the minimal qualifications. Here are some common milestones (from lowest to highest):
- Can begin/complete an entire project single-handedly
- Obtains varying IT/technical certifications
- Handles server and/or database administration
- Leads and teaches/mentors other developers
- Can design documentation templates
- Can identify multiple software development methodologies and occasions where each is better/worse
- Handles information architecture and understands a variety of options
- System integration
- Can tell you when each technology is right to use AND wrong to use
- Knows when it is advantageous to out-source parts of a project and which parts will benefit (and which, will not)
- Can train and organize other IT people: server admins, db admin, testers, business analysts, project manager
- Understands the steps and benefits involved in ascending to higher CMM levels
- Understands a wide breadth of technologies and systems, how they work, how to obtain resources to leverage them, when they are the right/wrong choice. Also is constantly adding new technologies.
Somewhere within this (extended) continuum, lies each senior developer. Of course, there are other (ancillary) titles that go along with many of these, such as: Project lead, Software Architect, Information Architect, System Engineer, etc. Generally, a senior developer may possess the skills for many of these titles/roles.
So, back to the original question: what value does a company get out of all of this fancy stuff? Well, that really depends. If you empower the senior developer, work with him and encourage growth, you can get a tremendous value out of him. He can even teach you what he does. He can design (or help you design) systems that are easy to maintain, are stable, perform well, are secure, are cheap, and/or several other benefits. Basically, your company can get a really great value because you can do more with less. Everything will just *work* and it will seem easy.
In contrast, if you feel compelled to tell the senior developer how to do his job, disregard his recommendations, omit him from planning sessions, and assign him tasks that should go to a mid-level developer, then you will get a terrible value out of him. In fact, you will probably get a terrible value out of all of your people. Essentially, if you stand in the way of skilled people, then you will only get the value that you allow from them. If you can’t imagine what to allow from them, then their value will be limited by your imagination (or generally speaking, by you).
So when someone asks “What do I get from a senior developer that I don’t get from a mid-level developer?”, you might want to turn the question around on them and ask “What do you want to get from a senior developer?” and also, “What do you expect to get from a mid-level developer?” Once you determine if there are any barriers or bottle-necks, then you can confidently (and accurately) answer the question.
… continue reading in Part 2