views:

808

answers:

5

What a Programmer should learn to become a manager without losing his programming skills?

+3  A: 

Start using more Excel and less Visual Studio ;)..

Programmer
Ooooh, that's a wee bit offside (LOL)
Patrick Cuff
+5  A: 
  1. Have a look at Joel Spolskys articles. As far as I know he is accomplishing both management at keeping his programming skills at a high level.
  2. Be careful about your role. As a manager, it is your duty to optimize available resources, meaning that if you're the best programmer on the team, your management role will require you to take on the programmer role, leaving no room for managing... Instead, as a manager, use your programming skills to seek out programmers that are better than you, and put your trust in your own judgment of their skills.
  3. Stay in the loop. Talk to your team about coding topics, or even code a bit yourself, just to stay sharp. But avoid pitfalling into the "programmer only" role - you code because you're a manager who likes to keep in touch with the project, not because you're a programmer.
Martin Bøgelund
+4  A: 

Well, as a project or team manager, depending on your company's size, you will and should inevitably code less (ideally, you don't code at all anymore), after all you are a manager, you are now in charge of something else.

If you are a team manger and your team fails to solve a problem efficiently, your task shouldn't be to provide code fixes, your task should be to create an environment where your team can solve these problems without your programming knowledge. Ie. convincing your superiors of hiring a new, skilled senior developer; or introducing knowledge transfer projects in your team, introducing learning sessions, etc.

There is a plethora of generic and specialized management literature out there.

Amazon will help you. Leadership principles are usually the same across the board. For example, (I'm mostly pulling this out of my ass)

  • Leadership means to focus the actions of your team on a defined goal
  • You define the goals but should let your team members as much freedom of action as possible and only limit it where its necessary because of the integrity and coherence of the project and your set goals
  • Leadership requires to have respect for your team members, trusting them in their decisions
  • This requires your team to actively participate in the process, they need to have a sense of initiative and actively introduce new ideas
  • You are responsible for tasks that are a) on schedule and b) fit the current project status and situation. You only issue tasks and orders after thinking them through. You include the capabilities of the individual team members when making a decision.
  • In preparation for decisions you can and should consult your team mebers. You however are responsible for the decisions alone.
  • You are responsible for the wellbeing of your team members. You do not expose them to unnecessary risks and dangers (project to nowhere that will tank the entire company)
  • Every team member is responsible for the execution of the tasks within their realm.
  • In order to reach your goals, team members need to understand your intentions. Communicate the reasons for your decisions. Be honest about it.
  • Team members need to inform you about circumstances and issues that could be relevant to the task at hand and the success of the project. This is especially important when their specialized knowledge and skills could be relevant to the success of the project.
  • Every team member actively gathers the information and data (from you or other sources) that are relevant and necessary to his or her task. The team should actively discuss and exchange ideas. Set up project groups for this if necessary.
  • Communication is important, especially in complex projects. Provide updates, reformulate your goals if necessary.
  • You lead by example. Don't be a douchebag.

Usually, your programming efforts will now be limited to your spare time.

Join an open source project, keep up with new developments and API's, code for fun or start a project with like-minded individuals. Learn new languages. Participate on stackoverflow.

kitsune
+2  A: 

Do you mean project manager or department/people manager?

For the role of project manager:

  • Managing project schedule, scope, budget, and risk, and trade-offs between them.
  • Managing and motivating a team of people.
  • Managing project stakeholders and their expectations.
  • Learning the art of doing with one dollar what any damn fool can do with two :-)

For the role of department/people manager:

  • Managing a program of multiple projects.
  • Managing and motivating teams of people.
  • Learning how to speak managementese - a weird, but important language.
  • Budget-juggling, corporate politics, dept and corporate strategies.
  • The 48 laws of power :-)
RoadWarrior
+2  A: 

The toughest thing to do when moving from Programming to Management is that you're gonna have to let go of the code. It's very difficult to take a step back and trust that the work's just going have to get done without you.

Let the programmers do their job without looking over their shoulder.

As a manager you'll need to pay attention to a broader spectrum of issues, and it won't be possible to just bury yourself in the code and ignore pleas from your underlings. They'll have wants and needs just as your superiors and customers have, it'll be up to you to mange the expectations of everyone.

That's management, taking the heat from everyone so your programmers don't have to. They'll work better.

Basically don't do the things that bothered you about your managers.

Michael McCarty