42

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?

10
  • What type of education do you have? How long have you been in your current position?
    – Thomas Owens
    Oct 28, 2011 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, 2011 at 13:53
  • 1
    @slandau I would explicitly call out that you are not looking to enter a PM role. while that may appear as the obvious direction; your description and wants differ from a PM role and I don't believe a PM role will be what you are ultimately after. Oct 28, 2011 at 14:17
  • 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, 2011 at 14:33
  • 2
    Well, first, give up your soul... :-) Oct 28, 2011 at 14:50

6 Answers 6

41

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.

1
  • 1
    Yeah, but how do you actually make the move from senior software engineer to manager? I mean, supposing that I feel like I know all the stuff you listed above, what do I do now to prove that I can do it considering I have no official manager role experience and only the feeling that I really know all that stuff? How does one take this step?
    – trusktr
    Feb 9, 2018 at 2:47
19

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.

1
  • 2
    I got fired for doing exactly what you said at one company (and that manager who fired me later left the company as well). It was not a good fit. It felt like it was always a fight to get to the top positions at the company, very competitive and egocentric. It's much better being at a company where when people take initiative to try and accomplish bigger things than they've done before that they receive support, encouragement, and direction from those who are already higher.
    – trusktr
    Feb 9, 2018 at 2:51
9

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

3
  • This is bad advice, suggesting that someone does something thier boss has not asked them to do, most bosses frown upon people doing things they have not been asked to do. Jan 3, 2017 at 14:47
  • I answered this question 5 years ago, when I was a developer. Now coming back to it, I get to read it from a perspective of a manager. @Bonner - you are right. there are different managers with different styles out there. Some will frown upon you if you do something you were not told to do. In that case, my advice to you is run away from that manager. Since I became a lead, everything I've done is teach my guys to think independently and make me replaceable. I ask each one to balance between narrow focus of his own task(s) but also look ahead for himself and see broader picture.
    – DXM
    Jan 9, 2017 at 20:18
5

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.

4

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.

4
  • 3
    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, 2011 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, 2011 at 14:21
  • The PMP exam is not all that hard.
    – Morons
    Oct 28, 2011 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, 2011 at 15:08
2

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.

7
  • 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, 2011 at 13:53
  • 1
    Yes I agree. Do you have any tips how I would begin working towards it?
    – slandau
    Oct 28, 2011 at 13:53
  • Yeah I accidentally hit the post button before I intended to.
    – Jay
    Oct 28, 2011 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, 2011 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.
    – Jay
    Oct 28, 2011 at 14:17