Functional Managers As in every other organization, in our company each employee has a (functional) manager. I prefer management to be arranged along functional lines. Therefore, a project manager has a manager who knows a lot about project management. A front-end developer has a manager who is herself fluent in CSS and HTML. And our software developers have development managers who are proficient at building code, delivering solutions and making nerdy jokes that no ordinary person understands.
I believe it is imperative that managers understand the work their employees do. There's little reason for software developers to work with a manager who cannot distinguish a bit from a byte. (I have blogged earlier about how to select a fine technical manager.) Similarly, project managers should be led by someone who understands agile principles, Scrum practices, and how to turn Notepad into a planning tool.
Important: a manager does not have to be better than the sum of his subordinates. It is only natural for his senior employees to exceed the manager's knowledge and expertise at some point, because management requires other (soft) skills, some of which the seniors might be lacking. However, the manager should be good enough to earn trust and respect, and to be able to coach and lead.
Note: For historical reasons our Development Managers are situated in the same teams as their own subordinates. This means there's a Development Manager available in each of our development teams. This works fine for now, but might be changed someday, as there is no practical need for it.
Matrix Management It will be clear to some readers that we have organized ourselves as a matrix organization. Our project managers are primarily responsible for projects and the (short-term) goals of customers, while functional managers provide expertise and coaching. They deal with the (long-term) goals of our people.
There have been some negative reports about matrix management. It is said to significantly increase the number of meetings and communication overhead, and matrix management reportedly triggers numerous conflicts between project managers and functional managers.
But I think this is only true if you're stupid. Not if you're smart.
I strongly believe there are good and bad ways to implement matrix management. In organizations with stupid managers, where people actually desire organizing meetings and controlling people, matrix management is definately not going to help. It will simply double the amount of misery!
Matrix management does not solve the problem of having bad managers. It makes it worse.
Good managers understand that there are times to discuss projects and there are times to discuss people, and these two don't have to take place at the same time by the same managers. In fact, separation of concerns is a good solution with any case of conflicting goals. I see no problem in a few healthy discussions between a project manager and a functional manager about some employee's priorities. (As long as they settle their differences with a cup of coffee instead of 200 pages of emails and documents.) Chances are their compromise will be far better for the employee than in those traditional cases, where project management and functional management are combined in the same person. This is usually someone who is not likely to be good at doing both.
Scaling Matrix management can scale much better than traditional hierarchies. Google has shown that its organization can remain relatively flat. Their (few) functional managers are able to manage many more people now that they don't have to manage all their projects as well. The pool of project managers is different from the pool of functional managers. That's why I believe that matrix management is a big help in doing many simultaneous projects.