views:

466

answers:

9

Suppose that you have a student who went through the traditional path of an IT/CS degree without significant experience beyond school projects and maybe an internship. That person graduates, goes to the industry for an entry-level developer position, and is considered a novice.

What is the learning curve from there? How long is the person still a novice who's making novice mistakes, etc?

I'm asking because I'm writing some paper on problems that novices face, and I'm wondering for how long in their career I can expect them to have those sort of problems. I don't really know from personal experience since I was only in the industry for a short time and already came in with significant programming experience.

+6  A: 

From what I've seen, it depends.

Some companies define the difference between junior and senior level developers by years of experience (6-10 years usually to reach "senior" level depending on organization).

Personally I think the number of projects a developer has had to deal with from start to finish has a major impact. A developer could just be doing maintenance for years, which may not allow him/her to really learn from past mistakes and get the experience they should have. If a developer gets involved with major projects from start to finish they start to understand the thought process, the design choices, and the decisions that need to be made, as well as the architectural choices (what worked, what didn't). It's hard to define the number of projects because it really depends on the person.

I've worked with programmers who have almost no experience and, for the most part, they can out do people that have been working 5-10 years longer. I've also seen programmers who have been writing software for 15 years and still make novice mistakes.

I think there are too many factors involved to really put a number on it.

Dan Herbert
+4  A: 

Some people stay a "novice" their whole career, always needing someone else to help them see more than just the basic things. Others seem to be able to grasp things pretty quickly. I know a guy who's a student with just the sort of experience you describe that is already beyond novice. I think it also depends on whether they have to learn from their own mistakes or they have a mentor who can show them the ropes. I'm not sure that I can give you a number, but as an upper bound if a person isn't able to work independently and/or take on his own (small) projects after 2-3 years, he might want to think about a different career. This is only my experience, though, so take it with a gain of salt.

tvanfosson
"if a person isn't able to work independently and/or take on his own (small) projects after 2-3 years, he might want to think about a different career" - sadly these types seem like the people who are LEAST likely to look for a new job... and make the rest of his/her coworkers want to.
TM
A: 

I think the feeling of being a novice can depend on the surrounding environment once you start working. I know the people I was surrounded with in my first job weren't really the nurturing kind and didn't really teach me anything (or on a positive side of things, I found out how not to run a team/company). Not until I left for my second job was I surrounded with people who were passionate about developing and developing correctly did I learn new and exciting things. It's the feeling of going home from work every day and feeling as though you've accomplished something new or learning something new which makes days fly by.

So for me, I probably didn't feel like a novice anymore until I actually left that company and went to my current company where I feel in control (in the sense I knew how to deal with problems and how to tackle it even if I didn't know the answer straight off the bat) and that was all thanks to the people I had at my last job to give me the confidence and knowledge to take to my new job and to be able to contribute and bring strong ideas to the table. (That isn't to say I wasn't contributing at my previous jobs, but I suppose at the start I was more out to please people and work hard, whereas now I can still do those things but in a way where I can also suggest different ways of doing things and then proving that these so-called different ways can actually be better than the ways they are doing it right now...as hard as it is to convince them sometimes)

So in short, it depends on the individual (just like tvanfosson said where some might just always need help) and who they surround themselves with.

digiarnie
A: 

I think he will remain novice until he had to solve real life problems.

When a developer is faced with a really hard problem and have to spend hours and hours of debugging, documentation reading and at the end the works get done, I think he may be considered out of the novice level. Enter into beginner level.

It may happens years or decades on this. It may not ever happen. It may happen the very first month of work.

Is like hunting in prehistory. The young keeps being someone to be treated as a child until he hunts his first buffalo by his own. :P

Of course, there are people that manages to skip this phase and goes directly to management. That's fair, some people have better organization skill and leadership as to manage a group of developers. But he is still ( and perhaps always be ) a novice programmer. There's nothing wrong with that.

OscarRyz
+1  A: 

It's totally subjective, but I'd say it's when you start knowing enough to stand on your own two feet and when you start to know more about the subject than others (or at least appear to). So it has a lot to do with who you are working with. The people I work with no longer view me as a novice since I have been able to get a lot of products out. And so I don't consider myself a novice there.

But look at my reputation. It's nothing compared to others here. So I'd say I was a novice overall in the universe of Stack Overflow'ers.

Jared
A: 

for most "novice" can last for 3 months to 2 years with 6 to 9 months being average. If they are still acting like a novice after 1 or 2 years they tend to leave the career field, not always voluntarily.

Just because they are no longer a "novice" does not mean they are "experienced", it just means they can do useful work.

Jim C
+1  A: 

I don't think that "novice" is really the correct way to describe someone, rather depending on how experienced someone is. You can really only ever gain mastery over certain aspects of the field, and will never be in expert in all things development related - doubly so, with how the tools, products, and platforms are continually changing and advancing. It is even hard to become an expert within a person's given language of choice in some cases, because of the immensity of the platform.

There is no number in terms of experience, in my opinion, for when a "Junior Developer" becomes a "Mid-Level Developer" or "Senior Developer". Instead it is the ability to learn from experience, focus on weaknesses, the desire to improve, and the general aptitude of the person in question.

I had a very wise friend who worked for IBM in the 60s, primarily doing a lot of COBOL work at the time. Something he said has always stuck with me and remains true. "Anyone can take programming courses and learn about a language, but people are either logical or they aren't. The people that aren't logical and do not have problem solving abilities can remain a Junior all their lives and be complete content with that."

For that reason, when I am interviewing candidates (on top of the experience I have gained from talking to a variety of candidates) I do not qualify or disqualify anyone strictly on the basis of how long they have been doing something. Instead, I look for how well they have done something and what they have learned from doing it.

joseph.ferris
A: 

From what I've seen over the years, it takes a couple of years experience to get past the novice/junior label. However, it is worth noting that if the organization has few developers then the new guy may always be a novice if there aren't any others hired straight out of school.

As for making novice mistakes, I'd think almost anybody with a new technology is bound to make what may seem to be amateur or novice mistakes until there is some proficiency in it though this can be a moving target, e.g. how many versions of ASP.Net are there that change syntax or add new classes that may require one to go back and learn some things from scratch like the Gridview that replaced the Datagrid class among others.

JB King
A: 

If you're studying the problems of novices, then an "it depends" answer isn't going to help you. I would suggest one of two approaches.

Either pick a number of years of work experience - either total experience or experience since graduation (experience before graduation is sometimes not as useful, as students are not always given 'real' jobs). Or select people in an entry-level grade.

Most companies have a junior/intermediate/senior grading, and it typically takes 2-3 years to get to intermediate, though it can vary enormously.

Some answers here talk about "people who always stay novices" but that isn't really true. Those people don't stay novices - they just aren't very good. They will have problems in the workplace, but they won't usually be the same problems a true novice has, and they won't be solved the same way. Likewise some people get to be effective and productive programmers in a couple of months, but even though they may be very good they sometimes have some of the same problems other novices have.

My recommendation is pick a number of years, and study people programming for less than that number of years. 2-3 sounds good.

DJClayworth