I'm considered a senior developer in my workspace. Lately, I've been thinking about what it means to be a "Senior Software Developer"
I thought it might mean that I write better code, which might be true (I'll revisit my code in a few months and let you know) but I've seen junior developers who write amazing code and senior developers who write unmaintainable code.
I thought it might mean that I know the latest and greatest, but that is a neverending task.
I thought it might mean that I finish tasks a lot quicker, but I don't think that is the case.
I thought that it might mean that I write code that has no bugs - but we all know that all codes have bugs, it is part of us being human who writes code to run in an unpredictable environment.
Recently I've been working a lot with "Junior" developers, which are still looking for their place in the pecking order. It is clear that when working with a junior developer that most of them are looking for reassurances (like we all) and then it hit me. In my mind, the job of a senior developer is to enable a supportive working environment for junior developers, where they can ask any question without being judged, where mistakes are ok and discussed and not knowing something is ok.
Whenever we encounter unfamiliar code or style of code that we don't like, we think (maybe even say) something in the lines of "Who wrote this s***t...".
Use git blame ( I hate the name "blame" ) way too much - git blame is a dangerous tool - which could attribute half-truths to an existing situation.
When giving a code review - "telling people what to change"
I need to change my mindset - if a code has tests - then it is awesome code which might need to be refactored! (if it doesn't have tests, well...)
Turn off the auto git blame. I don't need it all the time, I'll probably need it if I want to ask the person who wrote that line of code a question about it.
When giving a CR - always, but always find at least one good thing to write - even if it is something which seems trivial or meaningless. The person on the other hand might need it more than you think.
When giving a CR - I'll try to encourage a discussion on what I think needs changing by asking questions and not providing solutions.
I want to be able to leave a piece of code a little bit better (for the next developer which will work on it) than how I found it.
And the most important - when someone asks me a question I want to try to make them feel like it was a question worth asking.
In my opinion, a senior developer is not the person who writes the best code (it could help), but it is a developer who is not judgmental, a developer who is willing to explain with patience when is being asked a question and most importantly is someone who remembers what it means to "feel stuck" or "lost"