Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I've been a software developer (whether part time or full time) for almost 3 years. I've always been the type of person to have that knack for taking a lead on things, and providing the organization around getting things done. Ever since I was the lead on my senior design project back in college, I felt that this was my true calling, not sitting behind a desk coding. Now, I know I need to understand how to code for other developers to truly respect me. Also, I really do love coding. I work on plenty of side projects at home outside of work, keep up with best coding practices, and try and continuously further my knowledge of the domain.

My main question is, what type of things or opportunities should I be looking out for that will help me progress my career to a more managerial role, rather than a coding role. Like I said, I LOVE to code, however I'd love even more to be able to design things at a high level, and organize the team in such a way to get things done, and monitor their progress, while helping out with technical decisions here and there. These types of things truly make me happy, as opposed to just sitting behind a desk coding all day long.

Obviously one of my main dreams is producing some sort of software on my own that would eventually blow up and make it big, and then beginning to hire a team and do it all myself, but I feel like the chances of that happening are far worse than just altering my career path a little to get where I want to go. I feel like I can garner that same satisfaction doing it for an employer rather than myself. Even though I haven't felt that way before, I feel like it has been mainly because I'm not doing what I TRULY want to do.

Any tips, pointers, or things to keep in mind? Anyone that has done just this, and if so, how did you do it?

share|improve this question

closed as off-topic by gbjbaanb, gnat, MichaelT, GlenH7, Bart van Ingen Schenau Jan 8 at 7:44

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." – gbjbaanb, gnat, MichaelT, GlenH7, Bart van Ingen Schenau
If this question can be reworded to fit the rules in the help center, please edit the question.

    
What type of education do you have? How long have you been in your current position? –  Thomas Owens Oct 28 '11 at 13:51
    
I have a Bachelor of Science in Computer Science. I have been at my current position for about a year. –  anon Oct 28 '11 at 13:53
    
Would you mind saying what university? I'm just curious what your academic background is at this point, as I have a few ideas, but I'm not sure which one would be the best for you. –  Thomas Owens Oct 28 '11 at 13:54
1  
@AaronMcIver It depends on where you work. Some PMs are business, some PMs are more technical in nature. In some places, "engineering manager" might be a more common title, or in others, it might simply be "software engineer". –  Thomas Owens Oct 28 '11 at 14:33
1  
Well, first, give up your soul... :-) –  Paul Tomblin Oct 28 '11 at 14:50

6 Answers 6

up vote 20 down vote accepted

Moving from a software development role into a managerial or leadership role is something that takes time. I majored in software engineering, emphasizing software engineering process, and minored in business management and communication. Even with that academic experience on how to manage software projects, how to recruit and hire, how to lead teams, and how to communicate with groups verbally and in writing, I found that most managerial and leadership roles, especially in the industry that I wanted to work in, require 5+ years of experience in software engineering (I had 2, including co-ops and internships).

In the mean time, I simply continued my studies on project management topics.

The first thing I would recommend is becoming a good communicator and negotiator. Learn how to have the conversations that matter. Even as a developer, there are decisions that have to be made, with coworkers, clients, and users. Sometimes you have to have the difficult conversations and reach an agreement that benefits everyone. It's not an easy goal, but the book Difficult Conversations: How to Discuss What Matters Most is one that I would recommend that covers this. There are others, like Getting Past No and Getting to Yes: Negotiating Agreement Without Giving In that would also be helpful. These are relevant regardless of what position you're in.

On the more technical side, an understanding of the software development lifecycle is important for leading and managing software teams. Leadership positions probably mean that you are involved with requirements engineering, software system architecture, design, implementation, testing and quality assurance, and maintenance tasks. Although you can't be an expert at all of these, a manager or leader has to at least understand all of them. As a developer, you probably do most of your work in design, implementation, and maintenance, with some testing as well. I would very much recommend books such as Software Requirements (and it's companion, More About Software Requirements), Software Architecture in Practice (although my university switched to Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives after I took the architectures course, and it has been recommended to me), and Metrics and Models in Software Quality Engineering.

From a project management perspective, you can learn about process models and methodologies. There are agile methods, such as Scrum and Extreme Programming and plan-driven methods such as Waterfall and Spiral. There are also methodology frameworks, such as CMMI and the Personal Software Process/Team Software Process. The ones that are relevant to you depend on where you work, in terms of the industry and company. There are a number of books on various methodologies and frameworks, but I would highly recommend Rapid Development: Taming Wild Software Schedules for general software engineering management and software engineering process.

If you wanted to continue your education, you can look at more of a technical management track versus more of a business management track. If you wanted a technical management position, look at software engineering, software engineering management, and engineering management programs. For more of a business management track, you can consider MBA programs, business management, or some engineering management programs that have a strong economics or financial component.

share|improve this answer
    
Thanks Thomas, this is awesome. –  slandau Oct 28 '11 at 19:07

These other answers are great but I'll throw in my $0.02. I have moved from a junior developer at my current company through the ranks to senior developer and then team lead and now architect. It took several years. Whenever I was given a promotion it was because I was already doing aspects of the job, and my management was just recognizing that and giving me the appropriate title. So my advice is not to wait to be told you are a technical lead or a manager. Just start taking on responsibilities that people in those roles have. After a few months or a year you will find that you are basically doing the job you're targeting, and you can point that out to your management if they haven't noticed it.

share|improve this answer

I won't attempt to provide a full answer as Thomas Owens already listed some really good advice (+1 to that).

Just wanted to add few tips/suggestions:

  1. Don't wait for someone to make you lead; just start doing it. I don't mean goes against your current boss, but instead take initiative to help him out. If your boss is anything like mine, he's usually overloaded with way too many tasks/meetings on his plate. If he sees that you are providing direction where he may not have enough time to keep up, he will most likely be more than happy to delegate some management responsibility to you. Over time, if you do this right, your boss will delegate more and more to you (less for him to worry about) and he will more likely support you in taking on more responsibility to a point where you are official lead.
  2. Keep in mind that team building and leadership is more about sociology than technology (from one of popular software methodology books, maybe Brooks). As a lead, you goal is to understand people and how they behave, which is very different than understanding how computers work. Without this realization, good engineers make some of the worst team leads because they don't make this mental switch and realize that you can't control people the same way you control machines. In fact, the only approach that seems to work is not to control people at all but to give them direction. Read, read and keep reading books/articles/blogs on leadership. One book I could recommend is Management 3.0

... and now i'm off to review the links Thomas posted

share|improve this answer
    
+1 for clarifying the "human" aspect of being a leader. –  maple_shaft Oct 28 '11 at 18:42

I personally have no desire to leave my current position at the moment, but depending where we are in the release cycle I spend anywhere from 10% to almost 100% of my time on tasks other than coding. If you are patient and observant, there are lots of opportunities you can take to do something other than "just coding" in your current position. For example:

  • Volunteer to mentor a new team member.
  • Become an expert on new tools, processes, or technologies the company is considering adopting.
  • Volunteer for cross-functional committees.
  • Speak up about ideas you have.
  • Invite yourself to design meetings for upcoming features.

Let your manager know you are interested in these kinds of opportunities, and assuming you're doing well with your current responsibilities, he will steer opportunities toward you when they come up. Initiative counts for a lot. Most managers will at least let you observe even if they don't think you're qualified at the moment.

share|improve this answer

If you want to move into a project management role then it absolutely doesn't hurt to take night classes and work towards your MBA.

Another option would be to look into the PMBOK Project Management Body of Knowledge certification. Many places won't consider you unless you have a few years of actual leadership experience or one of the two items listed above.

The PMBOK is an extremely hard test and requires a LOT of studying to pass it. I also think that they have requirements on actual project management and leadership experience just to be eligible to take the test.

share|improve this answer
2  
Maybe it's just me, but I would tend toward a software engineering management degree or an engineering management degree, especially if you wanted to go into technical management or leadership. I've seen engineers get an MBA and get shoved into the business side of a software program, not actually managing or leading the engineers. –  Thomas Owens Oct 28 '11 at 14:16
    
@ThomasOwens, that's a good note. I always was hesitant to get an MBA since I wasn't sure if that would translate to most technical places or not. –  slandau Oct 28 '11 at 14:21
    
The PMP exam is not all that hard. –  Morons Oct 28 '11 at 15:00
    
@Morons I am going on what a few PM's told me about their experience, I never took it myself. But then now that I think about it these two people weren't all that bright. –  maple_shaft Oct 28 '11 at 15:08

That sounds to me like you might want to work toward Project Management. A large number of PM positions within software development require coding experience as well.

I would look for positions where you can grow in to responsibilities that will get you the management/leader ship you desire. Moving up the ladder, can look different based on how things work where you are working. But even with smaller amounts of coding experience, PM positions are available if you have any leadership, management experience.

share|improve this answer
    
This was stated in the original question: "...what type of things or opportunities should I be looking out for that will help me progress my career to a more managerial role, rather than a coding role...". @slandau is looking for advice on how to do this. –  Thomas Owens Oct 28 '11 at 13:53
1  
Yes I agree. Do you have any tips how I would begin working towards it? –  slandau Oct 28 '11 at 13:53
    
Yeah I accidentally hit the post button before I intended to. –  D.. Oct 28 '11 at 13:55
    
@D.., I have some leadership experience but it has all been on side projects and projects that I did back in college...not sure if that's enough. Is it? –  slandau Oct 28 '11 at 13:59
    
Most likely not, you want to angle toward any professional work experience that gives you that. You may find it easier to work toward a senior developer role in some places. I would keep an eye out for open positions doing what you want, look at the requirements and take any opportunity you can to get the most common ones. Most of the places I have worked have been small, and allowed me to step up neatly to the next level without much effort. Look at your current job... can you move up there? Maybe you have a defined path from where you are now that you can take advantage of. –  D.. Oct 28 '11 at 14:17