As I roam around from one interview to another I get to resolve various tests, questions and situations on senior level. Lately I had the best interview I’ve ever had. Or at least I think about it that way. I’m not going to share the name of a company, because I hope I’ll get an offer to work there and don’t want to jinx it. Anyway after that interview I started to wonder what really makes a senior developer. So here are my thoughts. Disclaimer: it’s only based on my experience and observations. I don’t expect you to agree with me.
Many job offers have this caption:
We are looking for senior developer, so you must have at least 5 years of experience.
or something like this:
Perfect knowledge of <put any technology in here> is a must.
My carrier started in small company which has its own product delivered for specific customers. We weren’t pressured by any deadline, although had to put our customers needs on first plan. Over two years I thought I gained a decent level of seniority in area of web development. I was responsible for about four web applications, company’s CMS, hosting services and few other things. Could I think about myself as a senior developer then? I don’t know, but I did. I felt comfortable with my knowledge, successfully deliver one feature after another. Hundreds of happy customers couldn’t be wrong right? Well, I could.
After that I’ve started working for agencies which have had totally different philosophy. Many projects with various level of complexity, ready to start after about two or three months of implementation, sometimes long-running projects with dedicated and complex business logic that evolves with each iteration. Many technologies with even more ways to implement. At some point I’ve started to teach other developers, share what I know, lead teams and introduce innovations into companies I’ve worked for. I was called senior developer. But was I?
You’ve guested it… I wasn’t!
At least now I think I wasn’t.
Running interviews gave me opportunity to sit on the other side of the table. Each time I had to judge candidate’s seniority level and many times the results wasn’t as it supposed to be based on resume. Many times I had to deal with people who claimed to participate in many projects with various level of complexity, etc., had experience with many technologies an so on. But when it came to the interview itself it went very bad. On some point I had to do a standardized test for each seniority level, because other way I wouldn’t hire anyone.
I’ll ask again: when developer becomes a senior?
The conclusion I came up with is quite complex. Even if you think you know something well, technology is still changing so there will always be something you just won’t know. Every time you have to deal with new challenge you have to adapt to unknown. You have to be aware, that everything you’ve learned so far only helps you to learn new stuff. Having decent level of humility and not being afraid to admit you don’t know something instead of considering yourself an ideal will only help you go further. If you think you’re right no matter what, you might lose objective look on what you are doing and if you actually do something wrong, you don’t only confirm yourself in error, but also share it with others. Don’t think that you know enough because it can never be done. Don’t forget that everything is for people, and everything has it’s purpose.
Not being afraid to learn and adapt is, what I think, what makes a developer a senior. If you only have an experience, you are only an experienced developer. With some knowledge.