Reality Driven Development: Fixing Project Management in Software
I continue to be unshockingly shocked by accounts which describe project management as something rather low-skilled. How much skill does it require to take feature requests from customers and talk to devs once a week to ask them how long do they think it&#x27;ll take them, to try to get product out the door quickly, akin to a restaurant shift manager? I really don&#x27;t see it as taking very much skill at all. Take somebody with a bog-standard bachelor&#x27;s degree (in any subject), ask them to complete a basic PM course at a community college, something that explains stuff like Agile&#x2F;Scrum&#x2F;Kanban etc. and let them loose. Of course, if you actually do that with a software project, you&#x27;ll have a project trainwreck on your hands.<p>Good PMs are a lot more like the coach for a sports team. Ultimately, the team (and its coach) is judged by its ability to colaesce and prepare for execution by a deadline (i.e. a game date), with a KPI measuring the team&#x27;s collective ability to deliver (i.e. whether the team is winning or losing).<p>Does the coach, in the weeks leading up to a game, collectively ask the team, &quot;so how many points do you think you can deliver in the game?&quot; Of course not. It&#x27;s a nonsensical question. How about, in the context of a new kid in a junior league, &quot;how fast can you run from here to there on the field?&quot; Of course the new kid doesn&#x27;t know, he&#x27;s never done it before. Good coaches, rather, focus on the <i>players</i>. One player is a really fast runner, but needs help on scoring. Another player is great with scoring, but doesn&#x27;t work with his teammates on the field. How can the coach a) take advantage of his players&#x27; strengths, b) work on their weak points, c) build a more balanced team that d) coalesces by game day and can execute different plays, reliably and on-the-fly, so that the team can go on to win?<p>So one developer really knows the database layer, but has a lot of difficulty with UI work. Another developer is more balanced, but they&#x27;ve only worked on one section of the code. Is the PM&#x2F;coach cognizant of this? Has the coach assigned different tasks to different developers based on their strengths, or is every task seen as inherently &quot;unknowable&quot;? Can the coach take a task that would take developer A reliably two days to get done, and give it instead to developer B so that B can become familiar with a part of the system he hasn&#x27;t worked with before, pairing occasionally with developer C who does know that area of the system, so that B can learn that area of the system and become a more well-rounded member of the team? Is doing so OK with the business (i.e. is the task part of the critical path or not)?<p>This kind of work is <i>very</i> high-skilled. A coach has to a) be intimately familiar with each developer and their work, essentially needing to review all the work being done (even if the coach&#x27;s approval isn&#x27;t required for delivery itself) b) take higher level requests and split them up into tasks <i>which correspond to the skillsets of individual team members and&#x2F;or team balancing&#x2F;development goals</i>, understanding therefore that the subprocess of task formation is team-dependent and cannot occur in isolation, and do so independently if a dedicated architect is not available, c) internally use a Kanban board while still adopting sufficient slack such that unplanned work does not threaten time commitments made to the business, unaware of how Kanban boards work, while keeping track of the commitment dates in the backlog so that tasks whose deadlines are imminent can be prioritized and put onto the board far enough in advance so as to meet the commitment, i.e. cycle time + slack &lt; due date, and also ensuring that d) there exist enough cycles so that all items in the backlog can be fulfilled by their due date, or else working with the business to reschedule the due dates for existing tasks so that other, more important tasks can be placed into the backlog with earlier due dates.<p>Such a coach then has two KPIs, a) the stability and possible gradual improvement of his team&#x27;s cycle time, thus measuring how well the coach is familiar with the capabilities of the team, how well the coach is developing and balancing the team, and how well the coach is splitting requests into tasks that are well-matched to the skillsets of the teammates they are assigned to, b) on-time delivery ratios, measured against the due dates of tasks when they enter a cycle (and not the original due date, so as not to penalize the coach for helping the business reprioritize older work against new requests).