Senior Developer versus Junior Developer
What does it take to advance from junior to senior developer? The most obvious answer is experience. But is it only that? Or maybe number of years of experience is completely irrelevant?
According to “What makes a programmer ‘senior’?” post, years of experience are not so vital, senior developer should have following qualities:
- You know more than one (programming) language
- You regularly code outside of work
- You’ve built software from conception to implementation to support
- You innovate
- You apply software to solve real problems
I definitely agree that practical knowledge of more than one programming language gives broader perspective. I also agree that experience from each step of project life cycle is absolutely essential. Especially beneficial is spending a bit of time on support and learning on your own mistakes. That is supposed to be a time where you learn what is needed to design code in a way which is easily maintainable and open for extensions.
I can’t fully agree with the second point … not everyone has time to contribute to some open source projects, I can agree that this is nice to have quality but not essential. But is that all? Or maybe something else can be added to the list? Personally I would add two things:
- Senior developer should have skills and knowledge on techniques and tools required to guarantee satisfactory application performance. This is not only ability to use load testing tools and profilers but it’s also about finding application bottlenecks, making sure that application scale properly etc.
- Second thing is about right attitude – I expect from senior developer to be proactive, to be able to think about the work on a high level, to constantly strive for high quality solutions and at last to take a lot of professional pride in his work.
Each project, each experience should be an opportunity for each developer to learn something new and in that sense number of years of experience helps. But bottom line is … to advance to senior developer you can’t just focus on coding, you need to constantly develop your skills and seek ways to wider your experience.
If you liked this post, you might like these, too:
I would add just one that he should be good listner both to client ,colleagues and juniors
Ratn
15 Jul 10 at 8:29 pm
The second point (“regularly code outside of work”) doesn’t specify open source projects, and in fact the original post specifically rejects requiring work on open source projects as a requirement. This is *any* kind of coding outside regular work… he mentions “consulting on the side, moonlight for a startup, build your own product or mISV”. Even beyond this, I’d consider other things “working on code outside of work” – doing code examples from books, blogs, etc., throwing together a little proof of concept game/application/etc. even if you have no plans to release it as open-source or otherwise, code katas, taking courses outside of work, etc. The reason is, this indicates a passion and interest in programming outside of your 9-5 job. Plus, how are you going to start learning those “more than one programming language”?
Nate
15 Jul 10 at 8:39 pm
A passionate programmer would always have his own ideas outside of work
Ratn
15 Jul 10 at 9:00 pm
First of all thanks for constructive comments!
@Ratn
+1 on “good listener”
@Nate
“how are you going to start learning those “more than one programming language””
It’s not always easy but most software development companies use more then one language so usually there is an option to experiment and join different team for a while.
“regularly code outside of work”
I agree that codding outside of work of course indicates a passion and interest in programming. I just don’t think that one has to have only one passion, beside programming (probably) there are also other interesting things in life.
Marek Blotny
15 Jul 10 at 9:19 pm
Ability – Without it, you can have all the years of experience you want but you will never be more than junior. I see it all the time. 1 years experience 20 times.
Good mentoring – without it, you more than likely will never grow even if you have ability. Can you? Yes. but it will take much longer.
Mark
16 Jul 10 at 1:03 am
totally agree with your post.Apart from all the qualities you mention I would add that a good senior programmer should act as a “permanent junior developer” in the sence that he/she should always be eager to learn (from his mistakes,his colleagues etc), to find new ways to do things.
nikos lianeris
16 Jul 10 at 8:33 am
@Marek Blotny
There are other interesting things in life, and I would certainly suggest other interests outside of programming – people aren’t one-dimensional after all. And doing no coding outside of work pretty much indicates that programming *isn’t* one of them.
Nate
16 Jul 10 at 2:56 pm
You can be a senior developer at one company and a junior at another because of industry knowledge. I am a senior developer now but if I take a job in an industry that I don’t know I would start out junior but quickly work my way to senior as I gain the specialized knowledge that company needs.
I agree that listening is really important, only way to learn what the overall company needs. Working with others, especially QA and mentoring of other developers, is of huge importance.
Coding outside work could be writing something that helps your kids with home work, experimenting with AJAX, setting up a home server, it does not mean you are actively contributing to an open source project. Coding has to be a passion and not just a job.
I have in-laws that code for a living but have no real passion for it. I have friends that code with passion, there is a huge difference.
Kevin
16 Jul 10 at 3:02 pm
6. does not use window$
phoet
16 Jul 10 at 5:08 pm
I would like to add a couple of softer skills
“communication skills” and “ownership”..
It depends on the company setup I guess but generally
A senior developer needs to be able to talk to clients
confidently, clearly and be politically savvy enough
not to cause problems..
They also need to take ownership and responsibility
for the product/codebase.. In order to do this they need
to get the business side as well as the tech side..
Stu dean
31 Jul 10 at 2:47 pm
The difference between a junior developer and senior developer can be summarised in one word: management.
Virvo
13 Aug 10 at 1:15 am
Phoet, in your 20s, yes?
Funny thing is, going by your blog you’re using OSS frameworks I wrote in Ruby.
But my day job is Lead Engineer at a startup developing .NET software.
James
14 Aug 10 at 3:34 am
Developer skill sets is a multi-faceted issue: http://www.sandywalsh.com/2010/03/developer-skill-sets-there-is-no-such.html
@TheSandyWalsh
16 Aug 10 at 4:24 am