"We don't need a Project Manager" - The Agile of the New Age Engineers

I worked as a programmer at several IT firms which practiced Agile in some form or other, there used to be stand-ups, scrums, TDD, code reviews and even peer coding but not once did I find anyone have issues with following hierarchy or seniority of order in teams. That's not to say that hierarchies are a pristine thing, they have their share of problems too.

 Even many Project Managers aren't an ideal to follow, there are those who try to screw the happiness out of every team member, there are also those who are experts at shrugging responsibility and pass on the blame to others. But on the other hand, I've met some great ones too who are an inspiration to their teams, who everyone in their team respects a lot and like to vouch for.

While Project Managers may have their flaws, but to eliminate their role entirely in a project? Nobody could have fathomed such a thing might happen a decade or so ago. And yet, that's exactly the place where Agile practices are heading today. We are increasingly seeing a transition (especially in the West) to a "flat hierarchy" system in teams where all techies like to work as equals and there is nobody to "boss around".

Only data can tell whether this new age Agile is working out successfully or not but it does two major incorrect assumptions while imposing the flat hierarchy system:

1. Project Manager is for "bossing around" and assigning blame: Nope, he is there for coordination. The modernists incorrectly assume that the team members will somehow co-ordinate among themselves without any help from a coordinator or supervisor. While that may be true in some cases but not always. Its a known fact that most techies suck at interpersonal skills and communicating with their own peers, let alone with other stakeholders in a project.

Following the Division of Labor principle, there clearly is a space for coordinator in a software development project which cannot simply be wished away. When the Project Manager calls a stand-up meet for pending bugs or defects, he isn't assigning blame to developers or testers, he is just trying to find where the problem lies and fix it. The fact that other team members will somehow coordinate among themselves and fix those bugs is simply wishful thinking because in that case, the bugs wouldn't have been there in the first place!

2. Experience counts for nothing: That's another problem with this modern flat hierarchy system. While eliminating titles and positions in an org, they forget that experience brings value to the table. Experienced coders can find a  solution to programming problem using much less time/efforts/resources than inexperienced ones. Besides, if you consider both inexperienced & experienced coders as equals, that will lead to ego problems and other kinds of clashes amongst the team at some point even though everything appears hunky dory from the outset.

That's not to say that the modernist's view should be entirely written off, there could be a lot of good in that but it has its problems too. A flat hierarchy system may work for extremely small orgs composed of few team members who are extremely good at communication/coordination and all have a similar level of experience. Such a rare combo could still exist!

There is also the fact that the world is changing very fast, people's tastes, habits, customs, faiths and political views are also changing, who knows this new system might end up being adopted at large orgs like Twitter and Microsoft some day! But I don't think most people are ready for that to happen yet, at least not a large majority of them.