views:

469

answers:

7

I started my programming career after my grad school. I was still in my early 20s and had a lot of enthusiasm in learning new technologies, concepts and applying to them in different projects.

Over the last 7 years, I have been involved in several projects at same/different clients that ran anywhere from 2 months to 5 months. Every project involved having to understand the business requirements, implement a scalable framework while taking care of dependencies in environments that were different from one another.

It was exciting for a while but lately I have been getting a feeling that I can't go through the same grind every 5-6 months. Also, due to varied responsibilites in different projects, I feel that the skills I gain in one project (other than some tech skills) does not add value to the next one.

Is this normal?

EDIT:

To put my point across in a different way, let me compare the software profession with a civil engineer's profession. After 7 years, a civil engineer would have gained enough expertise in his field to be confident in projects he undertakes. On the other hand, after 7 years, a software professional is as nervous and stressful about a new project as a newbie.

I am passionate about technology and there is no doubt in my mind about that. But I have started questioning some of the things that a person has to go through to stay in this profession. I do understand it is required that we have to learn new stuff on a daily basis. It has been scientifically proven that as a person ages, it becomes more and more difficult to learn anything new. Given these observations, does the software profession really worth all the effort? Is the effort we put in proportional to the benefits? (I know that salaries paid in this profession are a little higher than any other profession)

A: 

So, what's your question? Is it normal to have to learn new things constantly in this field? Yes.

BobbyShaftoe
sorry you missed the point...
Johan
+1  A: 

Maybe this is what they call the 7 year itch?

RSolberg
+1 or maybe he needs a Porsche.
kenny
+2  A: 

If you are tired of resetting your knowledge every time you go to a new consulting gig, consider changing careers from a consultant to someone working for a company on a longer term. That way the knowledge you gain from one job will be transferrable to the next. The processes within companies vary a lot less than those across companies.

Steve Rowe
+5  A: 

I have mostly worked as an employee, not as a consultant, and my feelings about the profession, and confidence level, after my first 7 years ( I have now been doing it for 25 + years) is quite different from yours.

I think the difference is short term consulting vs a long term commitment. If you are a consultant, you are hired in to do a specific job - usually a similar job over and over again. Most importantly, you do not get to observe the fruits of your labor over a period of time. Did the object slice you came up with really work out well after two years of growth? How is it scaling under a real world load. Did the documentation that you thought was great get used by your successors.

As you stay in a job for a while, you start seeing some deeper truths about your environment and how software works that you don't see as a short timer. Because you already understand the business of the company, you can move on to larger and different responsibilities that keep things fresh.

I would recommend looking for a place you can commit to for several years. Select carefully as you are going to be investing a lot more of yourself in terms of time and emotional commitment than you do as a consultant. Don't just look for a job, look for a place you will enjoy for several years.

This approach is much more likely to give you the deeper understanding of this field than consulting every will.

To continue your Civil Engineering analogy - how could the civil engineer ever grow if all he ever did was draw plans - he never saw the construction process, watched it get built, saw how it aged, etc.

Good luck

John Chenault
A: 

Please take a look at this video: http://www.oredev.com/topmenu/video/keynotebobmartin.4.5a2d30d411ee6ffd28880002007.html

ps there are some skills that go beyond the technology you use.

Update 1: I used the same link as response to http://stackoverflow.com/questions/591891/best-way-to-get-motivated-to-learn-new-technologies/591910#591910 ... your question is certainly different, but it is all about professional development :)

eglasius
A: 

I think I get where you are coming from. Have you considered just being a pro at one thing and consulting on that level? For example, maybe you could pick your favorite language, keep a blog about it, contribute to it, write a book, etc. Then you will "the (insert language here) guy." I am pretty new at working solo but I could see this as a possible path for me in the future

Tony
+3  A: 

Okay, I've been on both sides of the fence on this one. I've worked as an employee for a large corporation, I've worked as a consultant for a software house developing and integrating their product at client locations and I've worked as a consultant at both large and small corporations and here's what I've found during my time:

  • Working in house on a development team didn't really make me feel valued. I was a member of the team in a "here you do this" kind of way, I coded what I was told to code and nobody cared about what I was doing other than that I was producing the code I needed to produce. Generally the corporation is in a field other than software development and doesn't really care about the software other than it works, it's cheap and it assists other members of the management to do their job easier. The management didn't seem any happier than the developers although I could see benefit if you work your way up the food chain to be able to see your baby grow and evolve which could ultimately be very satisfying - assuming management is your goal - I keep toying with that idea, but I like to tinker too much. The idea of giving up coding in favour of management scares the pants off me.

  • Working as a consultant on behalf of the software house was great, I got to take part in the development of the software and see it grow over time. Being on site at clients helped me see how the software was used in the real world. It got me out of the office and having the client roster I did meant I was working for some of the biggest names in industry. I was only in the office for one or two days a week and spent most of my time onsite with my various clients, meeting new people, experiencing new situations. I loved it, but at the same time not getting to pick and choose which clients I worked for and doing the same kind of work on the same product left me bored after a while - there's only so much you can learn when developing the same product and integrating it into the same few financial systems.

  • Now I work as a lone consultant for hire. It's a lot different, it has a lot of benefits and I get a lot of personal satisfaction out of it. I have much more freedom as I can set my own hours. Because of the experience I have, I am treated more of an authority in that my opinion is asked and valued on the projects I work on and I am taken seriously. I am part of the machine in a much more major way than when I worked as a programmer for a corporation. I love learning about new industries and enjoy solving the puzzle. Of course, the code can get a little monotonous in this area - especially if you continuously jump from client to client and never really see things through to the end.

My suggestion, given my experience is figure out what it is you're looking for, be honest with yourself about your goals and aspirations. Which bit of the process are you most interested in? Find positions that suit your personality.

For instance I'm a prototyper and problem solver at heart, so if I were to have my ideal job it would involve this:

  • Business Analysis - I really want to understand your company and the process you want automated. It's something new to learn, and god knows I'm fascinated by new things.
  • Architecture - A big part of my personality is an artist. I want to sculpt something beautiful that'll turn your laborious crappy business tasks into a job you can do while you're waiting for the kettle to boil or surfing the net looking for your next Russian bride.
  • Prototyping - I want to build the prototype, I want to prove to the world that my concept really does work.
  • Problem Solving - I don't mean any of the simple problems that your average ten year old can figure out in half an hour, I mean the really meaty ones that everyone else has given up on. Bring them to me, because come hell or high water, I will solve them even if I have to kill myself in the process.
  • QA - I want to test the product at the end and make sure it's got no holes and make sure it shines before it's delivered to the client.

So looking at that, I like to have my fingers in everything right from the start to the end... with the exception of the crappy bit that comes between putting together the prototype and the QA. But you can't win them all - if you want to do it all, you've got to do it all. So I put up with the crappy bit just so I can do the rest, otherwise I've gotta pick one part of the rest and do just that which seems like it might get a bit boring after a while.

BenAlabaster
+1 for such a thorough answer. Thanks for sharing!
ShaChris23