In preperation for my new book I have been interviewing senior developers globally, from the tech firms of Canary Wharf to the higher ups in Google and everywhere in between. Whilst I was expecting to get an awful lot of suggestions and advice (which I certainly did) what I wasn't expecting was any sort of concensus. These are completely disperate people of different ages and experience. Yet surprisingly when answeing what the main difference between a Junior and Senior dev was, or when talking about how they realised they'd become senior, the answer was universally the same.
They became mentors.
Every single response spoke of how they now all spend a lot more time working with other developers, sitting at their desk and pairing with them, doing code reviews, sitting around white boards, or just generally going for coffees and a chat with the juniors. As each persons career has progressed, they've spent a greater portion of their time working with other developers and trying to provide help and training.
I'm pretty confident that senior developers reading this will also echo the sentiment, and I know I certainly do. In many ways the role of a senior developer is as a leader, not just of design and code, but also of people. This doesn't necessarily have to a formal leadership structure either. I personally strongly disliked my time as a "manager", because I love to code and I don't like politics. However, as a senior developer I am absolutely still in a leadership role in my teams and it's my job to help and influence the juniors that I'm working with.
The important thing to realize as a junior developer is there is no single moment when you are knighted as an experienced developer. While your title may at some point officially change, it's not like your role will magically transform overnight when that happens. It's up to you to display the qualities of a senior developer off your own back.
Many junior developers may balk at this: "But I'm a junior developer, how can I possibly mentor other people?". From the moment you start your job you will know more about something than other developers. Perhaps there's someone more junior on your team, or maybe there's someone in another team you could spend time with. Remember that mentoring isn't bossing someone around or telling them what to do, but simply helping them, and showing them new ideas and concepts that you've learned from your experience. Perhaps on your most recent project you were really successful in running your Scrum retrospectives. That's something that you can teach someone! So go and do it.
In our roles we must constantly be learning. For me personally one of the ways I learn best is by teaching. This is why I love writing for DZone, as I get to learn out a bunch of new technologies and libraries by writing articles to teach other people.
I would also recommend that any junior developer should also spend as much time as possible as the mentee. One of the fastest ways of progressing a career is to simply learn as much as possible. The easiest way to do that is to spend time with the developers who've been on the scene for much longer. They've done more projects and have seen a lot more mistakes happen, and you can use these to learn by proxy. If you have 5 senior developers in your department, each with say 15 years of experience, that's 75 years of designing, developing, debugging, and breaking systems that you can leverage without having to do the work yourself. As you can see, this is a no brainer decision.