tags:

views:

125

answers:

5

Past few years I have had this realization:

  1. I need to use a lot more of my non-technical skills (60%) than my technical skills as my interaction role expands.
  2. Role expansion is dealing with less of hardcore programming activities and more of problem resolution at various levels.

I still think that a great architect+designer+programmer is far superior to any good project manager - for he can make or break the quality of the project. However, the sad aspect is in most organizations the tech lead is not half as well paid as a project mgr.

Also, negotiation and communication skills needed for handling aggressive non-realistic deadlines also need to be learnt to survive to move forward in this domain.

The question I ask is this:

What is ladder that programmers are expecting to climb - in the coming years? You want to explore every nitty gritty of features in X technology or learn 10 more technologies in the coming years or grow the managerial ladder (ah that's boring but so well paying....) - considering the job market and existing hierarchy in organizations.

+3  A: 

Generally speaking your role will become less technical as time goes on. That's because domain knowledge, managing expectations, managing clients and so forth tend to become far more important in terms of the business you are working for.

There are exceptions to this. Some people make a (sometimes high-profile) career of doing nothing but coding but these are the exception rather than the norm (in my experience).

cletus
+1  A: 

My expectation when I got into programming as a career (as opposed to a hobby) was to learn more and more about programming and to eventually become a 'guru' (my ideal was the glasses, beard an suspenders dude in Dilbert, but maybe better fashion sense.) And for a while I did that. I learned new languages, increased my skill as a programmer, became a 'domain expert' on several projects, and I worked with people who were the real world equivalent of the Dilbert Unix Dude. Very smart people.

Then I had a chance to relocate out of the US to Asia. That was the beginning of the downhill slide in my Software Engineering career and the start of a long up-hill struggle against becoming a manager. Basically this struggle is caused by my aversion to the local standard career path for programmers after college here in Singapore: that boils down to: program for a few years, project manage for a few years, pre-sales for a few years and end up in sales. The only viable alternatives to this were never get a raise... not attractive, or become a manager of development.

I went down the manager path and while I would not say I am unhappy with it, I do envy my friends back in the US who have staid 100% technical and don't have to deal with the BS of management. Playing nice with the business people and dealing with everyone's 'oh so tragic' issues is not as rewarding to me as solving a technical problem.

In the past few years I have tried to move back towards a pure technical role and have settled into Solution Architecture as a better compromise. While I still meet customers and have to deal with politics and finance I spend more of my time understanding technical things and solving technical problems.

While I am fairly happy with this I still miss the pure technical world. My experience and speaking with friends suggest that to be 100% technical and get paid better over time you need to be in North America. It seems that outside of North America people are less willing to pay well for technical experience.

That's my 2 cents at least.

beggs
Why is it only in North America you can get more pay if your technical expertise is good? Do you know?
jpartogi
I don't think it's //only// in North America. It just seems that it is easier to progress up the pay scale as a technical person in North America than in most of the rest of the world. I know people who have done this in parts or Europe and in India also, but there seems to be more pressure to do more management and business activities than technial outside North America.
beggs
A: 

Simple,

If you really like programming you still be doing it in 20 years...

AWC
even with less amount of money?
techzen
Yea... reality got in my way... Wife, kid and all that needs to be supported. They are worth it and I am still programming, just for fun on the side now... but it's not the same.
beggs
Just because you don't rise the management ladder, doesn't mean your salary shouldn' rise.I don't have any managerial responsibility but I've lots of technical responsibility and I get paid very well for that...mdorseif answer is an example of this...
AWC
I agree that it is possible, but I think the opportunity is often limited by many factors, such as where you work (location and company).
beggs
+1  A: 

I suggest you listen to Alex Martelli on Highly-technical Management of Software Development (Slides). Alex (of Python and Google fame) shows that to lead a top technical team you need to be a top technican.

mdorseif
A: 

I could see a few different routes that I may end up taking:

  1. Senior developer - This may be where I rest and is what I'll be for the next few decades possibly as I get to solve problems that I enjoy without having managerial responsibility. As for the question of pay, this is where I have to be careful where I work and what else besides pay really matters to me.

  2. Architect - This is another option where after I get to know enough about the systems and take an architecture course or two I may move into this role if it is what I want. On the one hand this is a step back from being in the code but it likely has better pay and I get to make big elaborate plans that others take and execute rather than just worry about what I'm doing.

  3. Consultant - This is what I wanted to be growing up and in a sense I may get this someday if I can get it to work. The logic here is that I come in for a specific project, do the work and then move on to a different environment. Granted I may find a way to do that from a general developer role somehow but I'd like to think if I could make the focus of my work be this, "Come, fix, move on to new stuff," sort of mentality then I may have better motivation. Or I just become a contractor and get this title by default. :)

For other people, here are a few other possible routes:

  1. Business Analyst - If you're willing to get away from the code and handle translating the techspeak, this isn't necessarily a bad job to have.

  2. Quality Analyst - If one prefers testing without debugging. :)

  3. Project Manager - Excel is thy friend and no programming other than Excel macros. ;)

  4. Group Manager/Team Lead - This would be the classic manager rise that then goes into director and then CIO or CTO for the top spot assuming one doesn't want the CEO or President titles.

  5. System Administrator - If you'd rather manage setting up servers and accounts.

  6. Database Administrator - If you want to be a data ninja. ;)

JB King