Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Possible Duplicate:
Whats the difference between Entry Level/Jr/Sr developers?

I'm curious what senior developer means because apparently the definition doesn't mean what I thought it would. I keep seeing these teens at 22-23 years old who call themselves senior X developer or senior Y developer. To me, a senior must have 10 years or so experience in programming to call himself 'senior'. I've seen a lot of these teens here (hence the question). Am I wrong? Why?

share|improve this question

marked as duplicate by HLGEM, gnat, Walter, Matthieu, Thomas Owens Nov 15 '12 at 21:22

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

14  
@Kev I'm 28 now, and I was programming at age 6. BASIC on Tandy/TRS hardware. At age 21 I had 15 years of BASIC experience (from TI-BASIC to QBASIC to QuickBasic to Visual BASIC), 10 years of C experience, and 5+ years with a half dozen other languages and assembly variants. I had mentored other programmers, and taught classes on the subject in and out of school. Was I a "Senior Programmer" then? –  Sparr Dec 11 '10 at 20:30
57  
While I agree that at 22-23 you should not be a senior devloper, they are not teens. They are adults. Thinking of them as teens is a bad habit. It encourages them to not grow-up and it encourages the older person to treat them like they are less than a real adult. –  HLGEM Jan 20 '11 at 23:16
15  
@Sparr: Accountability. Count years of experience as those spent coding for money. –  Josh K Jan 22 '11 at 0:36
20  
@Sparr: You could be a genius, I have no real way of knowing. If someone came to me and claimed 21 years of experience when they were 28 I would thank them for their time and show them the door. –  Josh K Jan 26 '11 at 15:18
14  
Hey moderators ... shouldn't all this junk be in a chat room somewhere? –  Joel Etherton Feb 24 '12 at 15:57

20 Answers 20

up vote 167 down vote accepted

You can call yourself a Senior when:

  • You can handle the entire software development life cycle, end to end
  • You lead others, or others look to you for guidance.
  • You can self manage your projects

Software development is a curious creature unlike other fields.

Sometimes, a fresh punk out of college can run circles around veterans who have 20+ years of "experience". Programming is a bizarre world where code is king.

Some achieve the above in 2 years or less, others take 10 years.

share|improve this answer
42  
I would add you have had at least one project fail under your leadership... –  mattnz May 17 '11 at 3:45
14  
I would disagree with the second bullet point. The ability to lead others does not define "senior". It defines the "lead" portion of a title. I know senior developers who I'd rather push off a cliff than follow them over it. I love your other 2 definitions though. +1 –  Joel Etherton Feb 24 '12 at 15:39
6  
I would also add, after 10,000 hours of real programming (not just sitting in front of a computer). –  kadaj May 27 '12 at 16:31

"When should you call yourself a senior developer?" - When I started to mentor junior developers.

share|improve this answer
37  
that would have been...in high school. –  Steven A. Lowe Dec 11 '10 at 14:27
3  
@Rudi: Senior implies there is something beneath, rather than "have been doing it a long time". As they say in a popular film, "Always two there are, a master and an apprentice." - granted master's are a bit thin on the ground, so there are usually a few apprentices. –  Orbling Dec 11 '10 at 14:56

I've noticed the same trend. One of the questions the other day was about a senior developer with 2-3 years' experience moving up to architect.

You can call an acorn a tree, but that don't change what it be.

The only logical conclusion is that "senior" means something else:

  • relative rank, as in "senior to the guy just out of college"
  • poor Spanish spellers, i.e. they meant to put señor
  • southern spelling, as in "senior butt-crack, pull up them pants"

These days, it's just a job title, and may or not say anything about relative industry experience.

share|improve this answer

10 Years ?? You must be Kidding. Ok, how do you define 10 years ? Let us say someone started programming at the age of 15 but became proffesional at 25 ?

The industry doesn't work that way. I think different companies let people call them Senior Dev X or Y anytime between 5-8 years. A lot of seniority in the Organization doesn't come with ability alone, it has a lot to do with the initiative an individual is taking and the kind of responsibilites he is willing to share. Most of the time people with reasonable skill and strong motivation do become senior Pros.

BTW 22 years is not teen ;-)

share|improve this answer
3  
10 years of enployment of course. –  Rook Dec 11 '10 at 14:43
1  
I was doing GWBasic graphing of quadratic equation solving on a casio PB-700 when I was 14, with zoom-in/zoom-out features (to better see intersection with axis, which had autofraction for axis unit numbering at zoom). 28 years later, I program in python on my HTC android, and have been a "professional developer" for 12+ years. Does that make me Señor? Think not. Still a hacker at heart (play with SLA4 for a bit on your android phone to see how far computer still has to go). We're all teens in this business. –  Christopher Mahan Jan 20 '11 at 22:05

Maybe wait until someone else calls you Senior :)

share|improve this answer
10  
Easily short circuited with latex, makeup, a walker and a horn. –  Tim Post Dec 11 '10 at 14:40

It could have something to do with money.

Some companies follow a set salary plan. They can't put you in the middle of the 'Developer'-ladder, because of some given rules. But they can put you in the bottom of the 'Senior Developer'-ladder.

Personally, I find it strange if a person is given a senior title right out of college, but on the other side - who cares? I have been an 'developer' for some ten years now, and even though I get a 'senior' title when I change workplace now, it doesn't mean anything. I will still be a freshman in the new domain - at least for a while...

share|improve this answer

I think the best answer was given by Darknight.

I feel the need to point out the following.

2-3 years of programming experience (working + personal together) is just not enough for one to have seen sufficient number of projects and have dealt with a sufficient amount of problems. Just won't work. You need time to let things go through your head, to reflect on your experience and to move mentally to a higher level of thinking. Doesn't happen overnight.

I'd say under 5-7 years of practice (again working + personal together) a miracle is not to expect. One might get a lot of experience with certain languages and frameworks, but not yet jump to a new level of thinking.

The other thing is the overall maturity of an individual. In my opinion it first comes closer to 30 years old. Prior to that our brain may be working at a higher clock rate, but it would be processing junk, because it lacks sufficient data in the memory to see a bigger picture. Our general life experience adds something subtle but real to the way we think and work, so to programming as one other kind of work as well.

My personal acceptance of a senior: somebody at least 27 y.o. with at least 7 years of practice. Prior to that I'd personally be skeptical (but still open-minded, it'll just take more proof to me).

share|improve this answer

When you have mentored many, and most thanked you for it years later after disagreeing with you at first, feel free to append 'Senior' to any title that you may command.

Until then, 'lead' is probably a more descriptive term.

To me, the term 'senior' denotes a culmination of practical experience AND wisdom when dealing with people and their arbitrary expectations. Take this scenario into consideration:

16 programmers on a team, each with exactly 1 year more experience than the rest. This means, the 16'th programmer has 16+ years of experience. Eight of the most experienced members are tragically killed when a bus slams into a store. Would the guy with half the experience now be considered a senior developer? I'd hope not, I'd hope the company quickly replaces the voids with people of equal or more caliber than they just lost.

I hate to bring the term 'journeyman' into programming, but some of it applies. The term 'senior' isn't something I'd hand to anyone with less than 15 years experience, because it goes way beyond technical knowledge.

share|improve this answer
6  
+1 Journeyman, and indeed the entire old guild system is totally valid in our engineering led profession. –  Orbling Dec 11 '10 at 15:00

When you look back at your previous work and realize what crap it was. And you understand that you've gotten better but there are miles to go, and that learning is forever.

share|improve this answer

When other call you senior developer. There is no one definition. Its changes from company to company. In a well settled company freshers are given less work, and their learning curve is slow. In the startup company a fresher can take many responsibilities and learns many things in less time. I have experienced this first hand. Unfortunately it's only the other experienced people which can calculate the depth of your knowledge, by looking at the quality of your code or work. And I am sure everyone gets their title when the their time is up.
And if you don't you change the company. :-)

share|improve this answer
1  
-1 for And if you don't you change the company. :-). And as a side note can you please put more effort in improving the quality of your English ? It has become a stereotype you know, Indian == bad_communication_skills. For your country's sake man, cmmon ! –  Wildling May 18 '12 at 6:23

It's a title like many other titles. These "teens" on here might even have a PhD, that doesn't necessarily mean anything. But it will clearly get them a higher salary. The same applies to the Senior Developer or Senior Architect. Or the Senior Project Manager, etc.

Considering that fact, it is better to be called "Our Senior Developer" by your workmates, rather than adding that title to your own card after whatever many years of experience - which I did when I had the opportunity. :-)

Other than that, I'd say 10 years is a minimum (including college or other education).

share|improve this answer

Sometimes I look at other professions and wonder why software programming doesn't standardize itself. There would be no use for this question because there would be an accepted standard to obtaining certain levels. Then I come to the realization, "Who died and left them king?"

We all know that experience, education, certifications, and titles are for everyone else to get a very basic glimpse of a programmers ability. You either know what you're doing or you don't. You can either smell your own kind or you can't.

share|improve this answer

"WHAAAT.... UNIT TEST !!!! I'm a senior programmer... I don`t need to test my code any-more"

Heard that before.... Thus he lets the "Juniors" fix his bugs and test it.

"We are going to hire an architect... no, not Mr X, we want someone that is much more senior, someone that is no longer coding"

later in the interview :

  • so what programming languages are you familiar with ?

  • ahem... I've used COBOL and FORTRAN but now mostly it`s Ms Word, Excel and Powerpoint.

  • Excellent... when can you start ?

Really senior is just a question of perspective, a Title as would say Steven. However, I wish that I could say that in the end it`s the code you write that matters but unfortunately in many cases the suit and tie makes a bigger impact, especially when you are no longer measured by concrete achievements (code) but how well you convince hierarchies of your essentialness.

share|improve this answer
1  
haven't seen a software developer wear a tie in 5 years, let alone a suit! –  Michael Durrant Mar 9 '12 at 14:44

The first time you get a job based on at least one interview session that is not "classic technical interview" in nature (i.e., talk about architecture, concepts, design, view of the company, experience, etc.)

My (limited) experience is that junior developers usually get hired based purely on performance in the standard battery of interview questions, and senior ones based on a variety of other interactions.

share|improve this answer

I have seen some job posting recently looking for a CS graduate with less than a year of experience. This seems like insanity to me, even if it is just a title. For one, it suggests a watering down of the title. I’m sure the couple companies I saw with those postings have some other “super-senior” title to denote the real seniors. It’s not a bad hiring strategy I suppose. Title isn’t everything, but all else being equal between two jobs, I would probably take the one with the “Master Chief Developer” title.

The point when the “Master Chief Developer” (or whatever that high position is, “senior” or otherwise) is actually justified though is tricky to pin down. I do not think we can get too objective about quantifying it. As a rough formula, I would say they should be called senior if they are usually the best in the room and the room contains at least 8 professional developers. That would suggest that a senior is in the 87th percentile at a minimum. Although I would say that these devs will likely be the ones with the most experience, I would definitely not say that experience == “senior”, or even close. At the same time, while I am skeptical that the number of true seniors with less than 7 or 8 years must be exceedingly small, it is not impossible for someone with less than that to be a master.

Being 22, I certainly fall into the “unlikely to be a master category”. Although I am around some of those “10(or 30) years of 1 year of experience” types, and am honestly tempted to think I’m better, I try to remember that those people, even if they have put zero effort forward in decades to learning, still have probably gained more knowledge than me on a wide variety of subjects through pure osmosis. There is simply no way I could know as much as them about the full project life cycle. I work with one person who’s project is older than I am! It would be pretty presumptuous of me to really think that I knew more about maintaining a project of that scope than he does.

The other thing to keep in mind is if you start calling yourself a senior at 22, what will you be at 32? It’s a bit of a disservice to your future to assume that you are already at the top. A lot of people look to the 10,000 hour rule to determine when someone is an expert. In Malcom Gladwell’s book where the idea is proposed, it’s pretty clear that experts are not simply the best, but they perform a certain role. Novices are not the worst in any way, but it is a description of method even more than ability. Novices can learn the wacky stuff quickly but often have trouble doing some of the most common stuff as quickly as someone who is an expert. Experts can do the routine things with extreme precision and speed, and know which things to look for that could denote problems, but often have trouble reacting to change, or learning things that are outside their comfort zone. With that in mind, I do not even want to be an expert yet. I would like to soak up as much new information as I can, for as long as I can before settling into a stable domain.

share|improve this answer

I find this "Junior/Senior Developer" title wrong and misleading because there's no real measurement unit for this. We're all Software Developers with less or more hands-on experience. Don't try to create a hierarchy for Software Developers, there's no point and it can harm the main focus point: a great-software development team.

share|improve this answer
1  
+1 Agree with your comment I think there is no such silver bullet here, I believe technical as well as people skills are important –  MalsR Mar 5 '12 at 14:26

you're missing the point.

Senior means nothing. Junior means nothing. Titles mean nothing. My title - Associate Business Systems Director. My responsibilities - managing all things IT from in house software development through to infrastrucure, through security, through to customer web sites. My software development experience - self taught. My network experience - self taught. My overall cabapilities in the IT field - worse than yours.

My ability to manage and direct - debateable, but my character and personality got me the job and makes me succesful at it.

Titles mean nothing ability and effort means everything. I'm not the best - and to believe so would be arrogant.

Forget your hang ups about titles and prove your worth!

share|improve this answer
2  
I don't think he is missing the point. Any sensible person knows that it means nothing. Wearing clothes is pointless too is the temperature is right. Isn't adult life a big lie after all? –  Jubbat Nov 20 '12 at 14:53

Age is just a number; a young kid is getting smarter and _insert number years-experienced programmer is just getting old... Nowadays, a kiddo can write cleaner, better, faster codes in a smart way. An old pal can just get jealous.

share|improve this answer
1  
I understand what you're getting at, but if age is just a number, why are you referring to people as "kiddo" and "old pal"? Seems a bit ageist. –  StuperUser Oct 31 '12 at 17:21
1  
Age is just an unsigned integer. –  user61852 Oct 31 '12 at 20:30

There was a good blog post by Martin Fowler recently. Things that I took away from it are:

  • It has nothing to do with how long you've been working for somebody. You work for three years and you become a senior developer. What happens after six years? Do you become a senior senior developer?

  • Senior developers don't look down at you or think that they are better than you. That's very important. Once you let your ego get in your way, you are in trouble.

  • Senior developers don't pass the blame. They anticipate problems and they address them in a positive manner.

  • People want to work with senior developers. This is a key for me. I want people to work with me and I want them to enjoy working with me.

  • Senior developers are not the smartest engineers. They don't work on the most complex problems. Their skill set isn't all about programming. Their communication skills play equally important role.

  • Senior developers are good at estimating.

  • Senior developers always care about what they do. They understand that boring tasks must be completed to the same quality as any other, potentially more interesting tasks.

Just to clarify

Skills that I have listed above is what I believe a good senior software engineer should have in addition to fundamental software engineering skills and practices.

share|improve this answer

When I hear “Senior Developer” I think of someone who has mastered programming. I think of a person who can design, code and test a system. They can talk to system architecture or component design. They understand and use design patterns. This person can anticipate the performance bottlenecks, but knows not to pre-optimize. This person will leverage asynchronous programming, queuing, caching, logging, security and persistence when appropriate. When asked they can give a detail explanation of their choice and the pros and cons. In most cases they have mastered object oriented programming and design, this not an absolute other languages such as Javascript, F#, Scheme are powerful and are not object oriented. They are adept in risk management and most important of all they can communicate the before mentioned to their peers.

What is mastery? There is a generally accepted idea, that to master ANY one skill it takes 10,000 hours of repetition for the human body and mind to grasp and internalize a skill. This is written to at length in Malcolm GladWell’s book Outliers.

Some examples of in Malcolm GladWell’s Outliers are:

Mozart his first concerto at the young age of 21. Which at first seems young, but he has been writing music since he was 11 years old.

The Beatles were initially shunned. They were told they did not have the mustard and should consider a different line of work. They spend 3 years in Germany playing about 1200 times at different venues, each time being 5 to 8 hours in length. They re-emerged as the Beatles we know and love today.

And lastly, Bill Gates at age 20 dropped out of Harvard to found Microsoft. To some this might seem foolish, but considered at 20 he had spent nearly half of his young life programming. In 1975, only maybe 50 people in the world had the experience he did. His experience gave him the foresight to see the future in Microsoft.

Peter Norvig also discusses the 10,000 hours rule in his essay “Teach Yourself Programming in Ten Years”.

In the book Mastery by George Leonard, great detail is given on how to master a skill. One must practice the skill over and over and over again. The more the repetition, the more you become aware of the differences in each repetition. Only with this insight can you become better.

The software industry’s titles (Junior, Mid-Level and Seniors) are misleading and inconsistent from organization to organization. I’ve worked with companies, who defined a Senior Developer as someone with 5 years or more of experience. There is no mention to the quality of the experience, just that they sat in front of a computer for 5 years. In working with these folks, many of them had not yet grasp object oriented programming -- yet they were considered Senior Developers.

There must be a better more objective way to measure the skill set of a software engineer. John Haugeland posted a computer programmer’s skills matrix. It’s an objective way to measure a programmer’s skill level, which otherwise is left to gut feeling.

When looking at software engineers I see 4 tiers of skills: Luminary, Senior, Mid-Level and Junior.

Luminary (10+ years) is one who has mastered a skill and has set about improving their respective discipline. Some examples include: Ted Neward, Uncle Bob Martin, Donald Knuth, Oren Eini, Peter Norvig, Linus Torvalds. Luminaries change based on your skill-set.

Senior (7 to 10+ years, Level 3) is one who has spent the last 10,000 hours programing in a specific genre. There is a strong understanding of design patterns, They leverage asynchronous programming, queuing, caching, logging, security and persistence when appropriate.

It’s very possible that a Senior will never reach Liminary. Liminary’s are often found speaking and writing. They are actively trying to impact their discipline.

Mid-Level (4 to 6 years, Level 2) is one who understands day to day programming. They work independently and create robust solutions. However they have yet to experience creating or maintaining large or complex systems. In general Mid-Level developers are great with component level development.

Junior (1 to 3 years, Level 1) is one who understands the basics of programming. They either have a degree in software engineering or computer science or they are self taught. Their code is continually reviewed. Guidance is given in regards to algorithms, maintainability and structure.

share|improve this answer
2  
This response makes me wish i could favorite an answer! –  Steven Magana-Zook Aug 16 '13 at 20:39

Not the answer you're looking for? Browse other questions tagged or ask your own question.