views:

157

answers:

5

I am looking for some help on making some career choices.

I am currently working in a maintenance project which was developed 3 years back. The code base is a big ball of mud, most of the classes spawning over 5000 lines of code. I was also not in the development team. My job primarily consists of tackling customer issues, debugging-reading code, reading logs, with very limited scope to do actual coding.

I feel I am losing the breadth and depth of software development.

I have been in the software industry for not more than 1.5 yrs hence I lack the visibility on how valuable I would be 2-3 yrs from now, if I continue on this same job profile.

Now, my question is, what sort of career path exists in software maintenance ? If there is none, would the general advice be to look out for options before it gets too late..

+3  A: 

Software maintenance is one of the unavoidable, tedious activities in software development. If I ever had a chance to decide which way to go, I would have never picked the maintenance job. For all the projects that I did, I always wanted to delete them all and start from the scratch...

You would always think what you will become after several years of working in software development and I would say that doing maintenance can help you understand damn big obsolete architectures (if you are lucky) or how to analyze/amend someone's sh*t without even knowing his face...

So I suggest that, if you have chance, always try your best to work with something new & challenge... as much as possible because finally, you will end up with a damn big obsolete architecture to maintain :)

instcode
+1  A: 

There would seem to be a few different ways to move aside from going into management:

Technical support - This appears to be what you are doing. Some people really like this kind of stuff and don't mind jumping into things to find ways around certain issues.

Developer - Some may transition into more of a developer helping build various systems. A key point here is how old is the stuff you are debugging now as that could be where some danger exists since if it is written in something that is rarely used and deprecated your developing skills may be seen as rusty, kind of like how some COBOL programmers may be seen today.

System Administrator - If you are working on production systems and fine tuning performance, this is another direction you could take. The thought here is to know how things are set up and enjoying tweaking things to get that performance boost wherever you can find it.

This depends a little on which way do you want to go and which skills do you want to focus on having as your primary set. If it is problem solving then the Technical Support idea may not be a bad choice. Granted it isn't flashy, there is going to be a need for these types of people over and over again. If you'd rather build things up and not deal with customers so much, development may make sense. System Administrators makes sense if you'd rather be the hero that a company relies on through thick and thin. After all, this is the person that gets the call if a server dies or some other big fire happens and the admin has to come in and figure out what to do. At least that has been what I've seen a few times in my experience.

JB King
+2  A: 

I don't think anyone anticipates any sort of career in maintenance - at most, it would be change of title from Junior Bug Fixer to Senior Bug Fixer :). But maintaining legacy codebases is a great school of life:

  1. You get to see hundreds, if not thousands, examples of how not to write code.
  2. You get to work with a complex system right out of the box - it would take you some time to write something of such complexity (and possibly such convolution) yourself.
  3. You gradually acquire and perfect some of the essential skills of a good developer: debugging, reading and understanding code written by other developers. Believe it or not, this is what you spend most of your working time as a non-maintenance developer anyway: not churning out great chunks of brand-new code but debugging and reading code written by other people (or even you, but a couple of years down the track: all too often it might as well have been written by a stranger).

So yes, a couple of years in operations/maintenance should set you up nicely for bigger and better things elsewhere. Once you know all the quirks and questionable design decisions (aka hacks) in an X-million-lines legacy codebase there is nothing much you can be scared of in later years.

Think about it as a stepping stone; don't linger in maintenance for more than a couple of years. Also, if possible, write a toy project or contribute to an open-source project to keep abreast of new technologies on your own time.

Rowlf
I am in a situation where the code base has no structural integrity. I cannot see any good architecture. My project is .NET windows application, in which most of the code is written in form class and most of the classes spawn over 5000 lines of code. I can see all the code smells, which one can find in the great Martin Fowler's book "Refactoring - Redesign of the existing code". (Arrow codes, long methods, duplicate codes everything)
Manish Gupta
@Manish, you could sneak in a bit of refactoring here and there even in your maintenance role - refactoring even a method at a time is a good way to ensure some of the gnarliness is taken out of the code you have to live with. There's a book you could read, too - Working Effectively with Legacy Code, http://www.amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/0131177052.
Rowlf
+2  A: 

I have exactly the same concern that you have in one of my previous projects. Having done my time with maintenance and production support somehow, at that time felt, not so much of a challenge as compared to doing hardcore .NET development. What I have learned from that experience is simple: "Stay if you're still learning new things everyday. Get out if you're starting to feel stuck doing routine and mundane tasks."

In retrospect, yes you will lose the breadth and depth of software development if you stay in that role early on in your career and stay there for too long. But that's just my experience.

pymendoza
Thanks a lot for helping me in this situation. I think, I should find a better job by the end of this year. Also, I feel, I need to join some open source project.Thanks again...n sorry for poor English
Manish Gupta
Not a problem. Anyway I'm sure you'll learn a lot from doing maintenance development including how to (and how not to) write code and other essential debugging skills. Just get the most out the experience. If anything it should give you more confidence to take on more challenging programming tasks in the future.
pymendoza
A: 

Ask a question to yourself "Am I really happy and passionate about what I am currently doing?" instead of "what sort of career path exists in software maintenance ? "

I believe the answer to first question matters more than second.

Gopi