Sign up ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free.

I have a little over 10 years of development experience. For the past few years, I've mostly been working solo and although it has its perks, I feel as if it has been limiting my growth. I'm looking to pick up a contract job to get back into a team environment.

I've been weighing a couple of opportunities:

Company A is using the latest tools (.NET 4, VS 2010, ASP.NET MVC). The interview was fairly technical and I definitely felt rusty and didn't do as well as I had hoped. But I did get the offer. Their development process seems pretty mature. I felt like I could be the "dumbest person in the room" at this job, which I think can be a good thing, from a personal growth standpoint.

Company B is a step behind platform wise (VS 2008, .NET 3.5, ASP.NET WebForms). After working with MVC, I find WebForms pretty painful. I also got the sense they have a fair amount of technical debt and they're still working on figuring out a good development process. But at least they're aware of it and working on it. That's an area of interest of mine and I feel like I could come in and provide some good ideas both in terms of development process and paying off technical debt.

So these seem like two opposing kinds of jobs: one where I have more of an opportunity to learn technically, and one where I might have a better opportunity to come in and effect change.

TL;DR - Which job situation is a better: the one with the biggest opportunity to be a student, or the one with the biggest opportunity to be an agent of change?

share|improve this question

closed as off-topic by MichaelT, Dynamic, gnat, Dan Pichelman, psr Jul 16 '13 at 2:06

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions seeking career or education advice are off topic on Programmers. They are only meaningful to the asker and do not generate lasting value for the broader programming community. Furthermore, in most cases, any answer is going to be a subjective opinion that may not take into account all the nuances of a (your) particular circumstance." – MichaelT, Dynamic, gnat, Dan Pichelman
If this question can be reworded to fit the rules in the help center, please edit the question.

Regarding company B... you'll either be looked at respectfully as an experienced developer that can help the company grow and everybody will cooperate willingly, or be resented as some new guy that thinks he knows everything and wants to change the whole system, and be the target of a smear campaign by your co-workers. Unless you being hired specifically to implement the proposed changes, with the full backing of management (like, they make you a manager, or pay you $1,000,000 for the project, so they'll back you because of money spent), you probably won't be received very well. –  Joe Internet Apr 1 '11 at 1:34
working with lot of talented developers in a team environment definitely pays. –  Aditya P Apr 1 '11 at 6:15
Voting to close not because the question isn't important, but because the answer depends entirely on the person asking the question. Which job do you want to do? Which one will make you excited to get up and go to work every day? Choose that one. –  Caleb Mar 7 '12 at 16:11

7 Answers 7

Ideally, both!

In a perfect world, you want to land a job where you provide assistance and guidance with your existing expertise, and learn a great amount from those working alongside you.

However, if it's a black-and-white choice between the two, I would opt for being selfish and learning. Although, trumping that, would be gut instinct and feeling which one was the 'better' choice, gauged on the work environment, the people interviewing you, and the type of work you'll be doing on a day-to-day basis.

Disclaimer: I'm a bit younger than you, so I might value learning a lot more (than other people).

share|improve this answer
I think you're right. It's so hard to get a read on a company during a one hour interview--my assessment could be completely off base on both. But hopefully each place is a little of each in reality. Finally, I think learning should be highly valued by any developer, regardless of years of experience, so I don't think your disclaimer is necessary. –  c152driver Apr 1 '11 at 3:03

Personally I've found that I learn the most when I have to teach what I know to others. Learning new things is a life long passion of mine, and in a vacuum I'd choose the opportunity where I felt there is more for me to learn. But after being in both of your situations I can say that the position where I got to affect change and teach others was way more fun and I learned a lot more.

I've found that companies with mature development processes and "smart" developers go one of 2 ways. Either you build things exactly as they want them (what are you learning? copy/paste?), or you get developers who say "Figure it out I did". Not all smart developers want to share what they know I'm sure you've heard the phrase "Job Security" at least a couple of times in your career.

However, when given the opportunity to teach less experienced developers you are forced to learn a subject beyond just using it. Ever had to answer the question "Why is MVC better than WebForms?"? Is you answer simply "Code segregation & reuse"?

Just my 2 cents from a 15 year veteran of the software development industry.

share|improve this answer
Wow--your answer matches my current sentiments almost exactly. I'd really like to be surrounded by rock stars who are eager to share their knowledge, but I've not yet found that. The closest I came was a consulting shop, but then everybody was slave to billable time. Knowledge sharing destroyed the estimates. –  c152driver Apr 1 '11 at 3:17

Teaching for me is the best way to learn.

However I would choose in a heart beat to go to a company where I am in idiot in the room. Note I am not talking about a company that plays with the latest toys - I mean that there are great people there - potentially a hard task to find out.

How then to marry the idea that teaching is a way to learn - well my current approach is to internally blog at work. I blog about my domain so that I can understand it better and help others.

The only other thing to consider is that - in my experience - learning is an upward graph with points of inflection. The inflection points are when learning curves are flattening as you solidify you knowledge or experience.

We all go through these curves some on a daily basis with API or monthly with languages - but I would also suggest that we go through this on yearly cycles with our careers and how we learn to apply our experience.

So - perhaps ( and only you know ) this might be the time for you to solidify your experience by riding the inflection in a company that gives you the opportunity to lead.

So like all things - it depends :)

share|improve this answer
+1 Teaching is when you find out your knowledge because of the unexpected questions you get asked by folks with different backgrounds and points of views. –  Michael Durrant Mar 7 '12 at 15:31

I would start from the the basis of "where do you want to be in 5 years".

Do you want to have worked with older technology or newer?

Do you want to be rusty in 5 years or faily 'current'?

I really like Joe Internet's comment on the original post! I've been in several places with older technology and even making comments about it has turned out to be counter-productive. I've heard a lot of "just get the job done."

As for choosing the 'selfish' option... that's ok. You should have principles and standards, but ultimately everyone should be a bit 'selfish' because you presumably do care about your career, after all, who else would you expect to "look out for your future"? Certainly not employers in the 21st century. Loyalty is not worth so much these days in most organizations and current technical skills seem to land most of the newer jobs - as they should!

This is based on 25 years experience in the industry, from startups to big corporations to my own company. Also 3 years ago my skill set was mostly from 8 years ago so I had (and am still continuing) to do a lot of learning to catch up. I've always loved learning and my experiences have taught me that life-long learning is the way to go but man it takes a huge amount of effort and the ability to be very self-critical and change views where appropriate.

share|improve this answer

In my opinion, if Company B expects you to go beyond your limits, pushing the boundaries and correcting their system at the same time, then I think it's a better choice because you have to learn, apply and teach at the same time, plus couple of project management/lead developer things, which I think are healthy for most of the code ninjas.

But if in the Company B, you're supposed to just apply and|or teach what you already knew, just repeating what you have done tons of times before in the past, then I'd say it's better to go for the Company A, where you can learn more.

As a developer, your knowledge is your most valuable asset.

share|improve this answer

If older than 50, (or maybe 45) I'd go with the best teaching potential.

Before that, with the best learning potential.

You look well younger than 50, so go with the learning. You need to learn as much stuff as possible to relate to those you'll end up teaching, after you're 50, about the innards of the personal niche you'll nest in, at that time. (the niche that hopefully will keep yourself well fed and healthy into retirement)

On the side:

Many others on this board are telling: "teach to learn better."
They are right, but we're dealing with two different sets of technologies here. One that's "new" and one that isn't "new", and you're accustomed with. Both are related, and IMHO you should pack some solid experience with the "new" stuff.

The best would be if they let you teach the "new" stuff you don't know to even less knowledgeable people, so that after teaching you'd have a deep understanding of it, but that isn't really on the table here.

share|improve this answer
Why do you base your answer on age rather than experience? What about the 45 year old who only got into programming at age 40? –  Bryan Oakley Jul 13 '13 at 21:40

The only way to answer this is to answer the question "What's more important to you?". Neither is intrinsically better than the other. Personally I place a high value on being able to teach others, but I've been in the field for over 25 years. For my first job I would (and did!) value learning more.

share|improve this answer

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