15

I would consider myself an intermediate programmer. I don't think I'm ever really going to get better than that. I've read code from what I consider to be good programmers and worked under these people as well and I don't think I have it in me to be that good. I'm not saying that one day things might click, I just don't think they will (I've been programming for 12 years now and things still haven't clicked!). And the glass isn't half full, I'm just trying to be realistic!

In spite of this, I would still love to move up the ranks in the workplace and one day take on more senior roles. Could I realistically ever move into a senior developer role, or is this an unfair expectation. Are other paths more suitable for me. Some other paths I've thought about include:

  • Team leader (Is this even different from senior developer?)
  • Management
  • Project manager

The problem is I do love programming so don't really want to leave it altogether which is where I fear project/management lines might take me.

Are there other skills I could develop and work on that might help offset my lack of senior programming skills. Perhaps skills such as communication, motivational, inter-personal, organizational, passion, etc.?

Or as I fear, is being a great programmer the be all and end all of being a senior developer?

EDIT: For an intermediate programmer I guess it could vary dependant on the company's or individual's perception of these levels. But I guess I'm not thinking of it in terms of how long you have been at a company but rather the skills/attributes that would be required to make that step (whatever it may be) to the next level.

10
  • 1
    Would you clarify what you mean by intermediate programmer and senior developer? In some places, you are considered to be a senior staff after 12 years on the job. – scaaahu Jun 11 '12 at 4:08
  • If after 12 years you feel stuff has not clicked then I would think about changing what you do. You also seem to think a title is important. – Donald Jun 11 '12 at 11:36
  • years != senior, years == years. 12 years of doing something the same way as the first year still is only 1 year of experience. - read about the Peter Principle – user718 Jun 11 '12 at 15:28
  • 2
    "intermediate", "junior", "senior", "expert", "associate", "level 1,2,3, <whatever>"... none of these title-modifiers mean anything outside of your immediate context in your current workplace. If you join another company you may very well fit into a "senior" role, by the same token, your most senior co-worker in a different context could be a "junior". It all depends on who you're working with in a workplace. – teego1967 Nov 21 '14 at 19:18
  • 1
    @scaaahu Well put. That is actually the very first thought I had when I read the title of this one. Intermediate Programmer? What is that, exactly. Senior Developer? Come again? Unless they are defined by the Corporate Guidance and Employee's Manual for a company, those words are simply two English words being used one after the other. And if they are defined, then there is your answer... for that single company. – CGCampbell Nov 22 '14 at 3:51
22

This is what I have seen expected of a senior developer anywhere that I have worked:

  1. Is more involved in initial design and overall architecture
  2. Is expected to mentor junior developers
  3. Is given the hard problems that others would not have the knowledge to solve.
  4. Is the person who can be relied on to deliver the product within the deadline
  5. Is expected to have specific business domain knowledge

I suspect it is number 3 that concerns you when you talk about not being sure if you can be a senior developer. However, the hard problems to solve vary widely from employer to employer. So if you don't expect to be on the cutting edge of the field, your understanding as the experienced intermediate developer may certainly be enough. But you can start looking at studying some of your technical stack more in depth to help you here. And solving the hard problems is sometimes about willingness to try something you didn't know how to solve before you started, knowing how to research and understand new possibilities is critical.

If it is the architecture/design part that you thing is beyond your capabilities, then start studying that specifically. Begin participating in discussions in your own workplace and make suggestions and learn from how they are received. If you aren't currently thinking about design and architecture, the only way to learn is to start to think about it, start to do designs and learn from your mistakes. Again the expectation for this in a senior developer varies between companies. Those with architects would expect less of this than those where the seniors make all of the architecture decisions

The other three are easily within the reach of a capable intermediate developer. So if you aren't doing them now, start to do them and let people know that you are. A lot of good developers never make the cut to the next level because they don't toot their own horn to management.

2
  • Thanks for the tips. I am working on all these things currently but will keep at it. – dreza Jun 11 '12 at 21:16
  • Thanks for this list for senior programmer. No 1 and 3 are my weakest links. The other 3 are easy and strengths. – dreza Jun 15 '12 at 21:24
7

Development is about delivering the right PRODUCT.

While great coding skills can help with the process, it has much less to do with whether or not the product makes the user smile. That comes from proper understanding of the requirements and domain logic plus a genuine desire to make the user's life better.

In fact, I'd go so far as to say that in the grand scheme of product development, coding skill comes in middle of the pack at best and that putting overly heavy emphasis on it would be akin to putting the cart before the horse.

1
  • Cheers, yes, that's my thoughts so in saying that a senior developer could be someone who could get the best from the team, or is that more management? – dreza Jun 11 '12 at 21:19
2

I think you should put yourself out there as a senior developer. Like most things, a lot of knowledge comes from experience.

If you put yourself up as a senior dev and get a new role as a senior developer, then you know what? You've become a senior developer.

You might not be great at it at first, and that's where the experience comes in. You have 12 years programming experience - the junior devs will come to you for problems, you shoo them away to a different task, look up the solution to their problem, come back and tell them.

All the time, you're gaining exposure for leadership positions. I wouldn't ever look at it as suddenly "being ready", you have to believe in yourself and it will come.

0
1

Some other paths I've thought about include:

  • Team leader (Is this even different from senior developer?)
  • Management
  • Project manager
  • Team Leader implies leadership. Leadership implies confidence. Confidence implies advanced expert skill. This is the only option that requires any practical technical knowledge. 12 years of work and your personal admissions about lack of competence with advanced topics doesn't really put you in a position for this track.

  • Management has nothing to do with programming or software development. It is a people/social and organization skill set. 12 years of writing software doesn't qualify you for this.

  • Project Management has nothing to do with programming of software development either, it is a more organizational focused specialization of generic management.

Only the first of these is a natural progression in your career track, and you are at least 2 - 3 steps away from that where you are now.

If I were you I would really ask myself WHY I got into software development to begin with. If it wasn't for a passion of creating software, it was probably the wrong reason.

To put it into perspective; Would you have chased a career as a musician for 12 years with mediocre skills and the same lack of progress?

2
  • Yes, because I love programming which I think I mentioned in my question. – dreza Jun 11 '12 at 21:18
  • 2
    huh? -1. leadership is not about confidence - it is about integrity, confidence, competence, communication skills ~ and self reflection. I think the OP can be on this track. Similarly, project management is a common track for programmers, and typically the software development experience translates into a great project manager. Management is about communication skills, and relevant domain knowledge as well. 12 years of dev experience doesn't preclude the OP from this track. – bharal Nov 22 '14 at 13:17

Not the answer you're looking for? Browse other questions tagged .