Lessons Learned as a Senior Developer
At the end of 2015, I was promoted to the role of senior developer. For the year and a half leading up to that point, I had been meeting with my manager and working on things to make that promotion happen. It was something I aspired to, because I looked up to the other senior developers and had a lot of respect for their quality of work.
I thought that by getting promoted, it would mean that I was in some elite group of developers. I thought I would automatically be considered one of the best, someone that others looked up to and came to for advice. I knew the title came with more responsibility, and that was something I thought I wanted. Most of all, I thought that I would feel fulfilled, that I had accomplished something I had worked really hard for nearly two years to attain.
In reality, some of those things happened, but most of them did not. I felt some sense of accomplishment. I did work really hard to get to that level. But when my manager told me they were promoting me, I almost felt guilty. I thought, “Do I really deserve this? Am I good enough?” I was pretty close with my manager — we were peers as developers, and he moved into a management role as our team grew, so we had a great working relationship. Part of me worried that we had been talking about this promotion for so long, he almost did it as a favor to me. I had so many concerns at that moment that I wanted to ask him to not do it, to keep me at my current role longer. We were restructuring our organization at the end of the year and he wouldn’t be my manager anymore (sad face), so was he just doing this preemptively so I wouldn’t have to go through this again with someone else next year?
As the new year rolled around, I was keenly aware of these feelings of insufficiency. It was in the forefront of my mind every time I made a pull request, every time I spoke up in a meeting, every comment I made on a code review. Is this code good enough? Is my suggestion good? Am I right in challenging here? I thought that I shouldn’t be allowed to make mistakes anymore, I’m the one people are looking to for the answers, right?
I was that way for a long time, probably way too long. It was a struggle for me to always be wondering if I really should be a senior dev. I had a few validations along the way that helped, and then ultimately led me to understanding how it really is. I had a few senior developers and architects say things like “congrats, you really deserved it” which helped a little, but I also kind of thought, “they’re probably just being polite”.
Then one day I had a one on one with my current manager, who was also my peer in 2015 and he was a senior developers before being the team lead. I don’t really remember how it all came up, but I mentioned to him how I was having some of these concerns, and I explained my thoughts and reasoning, how I was looking at the situation. He reassured me that when my old manager told him I was promoted, he was not surprised one bit. That made me feel a lot better than the other people’s remarks because he had been working alongside me for about a year, and had been my manager for about half that time, so I trusted that his opinion was much more rooted in experiences working with me. He sent me a couple of links to articles (which I really should try and find, but I’m too lazy right now) that talk about the differences between developers and senior developers, and I began to notice some of the things that I did that were mentioned in those articles that set senior developers apart from mid-level developers. That brought me some comfort and helped me realize that the promotion really was merit-based.
That was a few months ago, probably just before mid-year. Sometime after that I was thinking about this and once again found I was comparing myself to other senior developers from a skill perspective. I wanted to know why it was I kept doing this, and I realized a few things that I wanted to share.
First of all, any job title has a broad range. When you are a developer who was just promoted from associate, there is still a big gap between you and a developer who is about to be promoted to senior, despite having the same title. The same goes for me — I was comparing myself to these talented developers but they had been senior level for a long time. Many of them have been in the work force since I was in high school! I’ve only been working as a developer professionally for 5 years (summer 2011 is when I started). All things considered I advanced to this role quite quickly, yet I was still comparing myself to people who had been doing this for 10+ years. Why in the world would I expect to have the same level of knowledge, wisdom, or insight they have? It’s something you acquire over time, and unfortunately there’s nothing you can really do to speed that up. Time spent on job is one area where you just have to be patient. Eventually you will get there, and you will look back and think “oh geez, remember when I thought this was so challenging? I was such a newbie.” But until then, just be patient.
The second thing I realized and wanted to share is the importance of learning. I look at these developers who I respect and admire — both co-workers and prominent developers in the field that I follow — and I see how much I still have to learn to get to the level they are at. And that excites me. I love learning new things, whether it is a new language or a new pattern to solve a problem. It’s important to always be learning, and to always challenge yourself to get better. Here’s why — and this is the big one — you should never be the smartest or best at your job. This gives you people to look up to as mentors and teachers, and helps keep you striving to always learn more so you can be better. Probably the most important lesson I’ve learned over the last few years is that the biggest detriment to a developer (and really any profession probably, I’m just speaking from my experience) is ego. If you think you are better than you are, people are going to be able to tell and will not respect you for that. But on the other hand, what I have noticed is that the best and smartest developers I know are also the most humble, and I’m positive that’s not a coincidence. They know how much they don’t know, and sometimes that’s just as important as knowing a bunch of stuff (which they also do).