For software developers, more often than not, job titles don't really mean that much.
Take for example these:
- Software Developer
- Software Engineer
- Web Developer
- Full-stack Developer
These titles could potentially represent the exact same position and duties!
It usually comes down to the actual job description itself and how the company views it's different tiers of developers.
But when it comes to "senior" and "lead" developers, there usually is a difference.
P.S. This article is originally from YourDevCareer.com where you can check out more articles and resources to help accelerate your career growth!
Senior Developer
A senior developer, in my view, is not marked by his title (of course), but by these traits:
- Very competent in the core technologies used in his/her organization
- Understands high-level architectural design and patterns
- Experience building "full" solutions
- Actively mentors intermediate and junior developers
The most important of these is the last.
You can be an expert with, let's say, JavaScript and building NodeJS apps.
But, if you can't take your experience, expertise and knowledge and transfer it to your team members then I wouldn't say you are really a senior developer.
What's the best indicator of being a senior dev?
Do you regularly have other team members coming to you for advice and help?
Sometimes you may find yourself thinking:
"Why does everyone keep asking me questions! Just go learn it yourself!"
Instead of being upset - you should be thankful and encouraged!
You're someone who your team trusts and considers the go-to for knowledge and expertise!
Lead Developer
A lead developer has the abilities and skills of a senior developer. But more 😊
The lead developer can act as a senior developer - mentoring, providing general design guidance and puts work into the foundation and early stages of a product's development.
But more importantly, the mark of a lead developer is:
They are a bridge or connector between your development team and the other business-oriented departments in your organization.
Lead developers often:
- Aid in planning product development and timelines
- Provide feedback to marketing or sales teams
- Discuss and aid the CEO or top managers to make sure that the development team and technologies being selected are aligned with the business' goals and vision of the company.
This means lead developers require:
- Good communication skills
- Good understanding of the product
- Good understanding of the business problem the software is solving
- Good understanding of the field the software's users are part of (medical, HR, etc.)
- Understanding of other disciplines like management, product development, marketing, etc.
Summary
I suppose the short way to say this is that senior developers are leaders who are mostly "inward" facing - towards their development team.
Lead developers are more outward facing - bridging the gap between the development or technical team and all the other departments in the company.
Becoming a lead, therefore, is much more about knowing how to think about the "big picture" and being able to translate business terms into technical terms.
It also involves translating technical solutions into language that non-technical co-workers will understand 😊
What do you think? Let me know in the comments!
Keep In Touch
Don't forget to connect with me on twitter or LinkedIn!
Navigating Your Software Development Career Newsletter
An e-mail newsletter that will help you level-up in your career as a software developer! Ever wonder:
✔ What are the general stages of a software developer?
✔ How do I know which stage I'm at? How do I get to the next stage?
✔ What is a tech leader and how do I become one?
✔ Is there someone willing to walk with me and answer my questions?
Sound interesting? Join the community!
Latest comments (50)
RIP yourDevCareer.com
Very true and not said often enough
I do all a lead do but don't currently mentor as I am the only Unity developer of the team, however I do actively plan on how the app will work/which SDKs should be used etc. What does that make me? A sole lead developer?
lol I don't know for sure 😋 The terms are very fluid in a sense... I personally would consider a "lead" primarily as someone who's mentoring others, but then in a sense "leading" the app etc. in another sense might work 😅
Gilfoyle?? You’re even from Canada!
I believe this is pretty good description of responsibilities. Leads tend to understand all aspects of the business. I see a lead as more of a general managing position—not as someone who is more technically competent in all cases.
All this while i have been a Lead Developer 😃
So! am I a senior now? I should get a promotion
In the end, the whole article is pointless if person to person, country to country and org to org the definition varies. And this is the case everywhere right now. I believe title should strongly reflect the salary and work you are being assigned. Most cases this doesn't happen, because interviewee and interviewer lie. It is all about supply and demand.
I have seen so many linked in profiles where people have long list of positions in just five years career, mostly show off. On the other hand, I have seen very few brilliant programmers simply say "I am just a passionate developer". No bullshit of senior, tech lead etc. These guys can build databases, UI, architect, communicate effectively with top brasses, have website, write articles and teach their juniors life long skills. I have one mentor few years back like this. I can't find another one.
In three years, he never said "I did it". I have witnessed that he built three huge systems for my company without anyone's much help. Still these systems are in use. His title was "Software developer". I doubt a team of lead architect, senior software developer, database administrator and project manager could have done it. They better fight for their titles and assigned duties.
In the US VP, Director, Senior Senior VP positions are sold like a candy bars.
I would have to disagree that the entire article is pointless 😋
I specifically said in the article:
Given how I started the article off with this comment, I think your first comment is addressing a straw-man.
I do agree that there is a lot of confusion due to job titles not reflecting actual roles - which was the reason why this was written.
I also agree that there are many super skilled programmers/developers that no body knows about. But that's not a reflection of the "evil-ness" of our industry, that's a reflection of the fact that doing good work alone will not get you noticed.
Again, it's false to assume that simply doing good work will get you noticed. Whether that's a good thing or bad thing is a different discussion 😉.
I've written some articles around these ideas here:
How To Stand-Out Among Your Peers As A Software Developer
James Hickey ・ Feb 20 '19 ・ 4 min read
How To Brand Yourself When Switching Careers Into Software Development
James Hickey ・ Mar 25 '19 ・ 4 min read
You said:
That's the problem. If someone is doing good work then they need to own their own career and tell people how they brought value to the company. Expecting everyone to simply notice how good you are generally doesn't happen and is naive.
In fact, it actually shows that you aren't taking initiative, perhaps don't understand the true business value you bring to a company (being able to build a big system, in itself, doesn't tell a business what value a person can bring in terms of making more money, reducing costs, etc.) Those are all things that we have to be intentional about and take ownership of.
I was once bitter about this - not having my work noticed. Once I realized that nobody owes me anything, I started to simply work hard at being responsible for putting myself "out there", promoting my work, talking to my managers about how I brought value to the company, etc.
Thanks for your comments!
This comment is pretty interesting to me, can I ask for your opinion in this question? --> dev.to/delbetu/how-to-become-a-mor...
An important highlight is that it's pretty easy to make that transition from "Senior Developer" to "Lead Developer" regardless of age. One's got to pay attention to the environment...
I think my main question would be this; how would a senior/lead developer in one technology transfer to another one and stay current? For example, if you are a React Native developer in terms of knowledge depth, and need to switch to either another tech or even from frontend to backend how would that work and what would it look like? I'd love to get your input on this, thank you for reading!
It's just the new tech that's the issue. Pick something concrete and start learning it.
Perhaps, even build a real project with that tech stack focusing on the "new stuff".
Once you are in the space of being a lead dev. soft skills, general principles matter the most. 😁
Thanks! The reason for asking it is less of prioritisation but more "how do we put that into our career". For example right now, I have solid experience with React Native. To do, for the sake of the argument, ML what would be the step? Even if I learn and do some projects, I am mostly curious as to how will getting a company say "Yes, come be the senior/lead of ML here".
It is a huge question mark since it will be needed for most of us and knowing how to transition allows us to be more flexible & secure.
Thanks for the kind reply by the way!
I think devs who can demonstrate that they are quick learners and thrive in an environment where they need to learn things and get-up-and-running fast are necessary.
If you can somehow showcase that on your resume, cover letters, or whatever then def. helps!
This is a great article.
It's really important this distinction because there's a lot of developers that are really good (Senior Level) but are introverts and, that doesn't let them communicate well up the chain of command or clients.
This distinction places them in a really nice spot with the option of learning communication skills and move up.
However, I do believe that management and development are very different, so I don't see a lead developer replacing a PM anytime soon (Unless the person is an overachiever, but that is a special case)
Agree, a lead developer is still doing some technical stuff like code reviews, architectural design, pair programming, and even just building stuff from time-to-time 👍