Principles of Project Management

Principles of Project Management cover I’m pleased to announce that one of my own projects has just come to fruition. My new book, The Principles of Project Management has just been published by SitePoint. It’s a short book aimed at folks like myself who have come from a technical background and are increasingly finding themselves in need of project management skills — whether to officially take that role or to help make the hard work they put in as developers or designers actually mean something, by ensuring the project is delivered properly.

The book was expert reviewed by Kevin Lawver and Drew McLellan who both did an admirable job of ensuring that the content stayed applicable to all sorts of projects and teams, both big and small. They also bravely took on the role of managementese-weeding and survived with remarkably few lasting scars 😉 Drew has written some thoughts on the book on his own blog. I thoroughly enjoyed working with both Drew & Kevin, as well as the team at SitePoint.

If your interest is piqued, then check out The Principles of Project Management book page or download a sample chapter. You can also buy the paperback or Kindle version on Amazon.

In the interests of full disclosure, I would highlight that all the links are affiliate links — i.e. if you buy the book via that link I will both be able to track it and get something back 🙂

Deadline First, Plan Second

I’ve just invented a new acronym (yeah, yeah, I know, like the world NEEDED another acronym, right?!): DFPS (Deadline First, Plan Second).

Deadline First, Plan Second describes the all-too-common phenomenon of project deadlines being set before any of the planning and estimating has been done. We’ve all been involved in or heard of such a project — the kind precipitated by a big announcement that The Next Big Thing (TM) will be delivered by March 1. Post announcement, a team is pulled together tasked with actually making it happen.

This throws many good project management practices straight out the window. It doesn’t matter if you do a proper plan, involve the team in estimating and figure out that the project will REALLY take 9 months instead of 5. The announcement has already been made — pointing out that it’s unrealistic is only going to get you accused of not being a team player. Alternatively, your management may view it as a crafty way of getting more money or people. So you may go in trying to convince them that it’s not going to happen and come out with twice the money, but you’re still signed up to an impossible deadline.

The good news? People who pull deadlines out of the air often don’t really understand the intricacies and complexities of your project. Duh, right? If they understood, they wouldn’t be setting impossible deadlines! Although this may sound like I’m just hammering home bad news, there is a flip side to this coin. If the deadlines are arbitrarily set, they are quite unlikely to have a detailed understanding of the scope of the project.

Reality is that you can probably negotiate your way through on all the other project variables – cost, quality & scope – you just need to accept that someone high up has nailed their future to a deadline and so now that is set in stone. So long as there’s a big “we did it” announcement on March 1, the definition of “it” is probably fairly fluid.

My advice? If you blatantly need more money or people, go the “it’s impossible” route at first. Get some extra resource thrown at you. Then, very helpfully, start preparing plans of what actually IS achievable for a Mar 1 go-live. Aim low at first — your project board or management team are going to be horrified at how little you’re saying can be done, so they’ll want to argue you up to more stuff. But be very aware of where your limits lie. Plan to under-promise and over-deliver. Give them something that works, but doesn’t sing, dance & play the ukulele. By then they may well realise they don’t need all the singing and dancing anyway!

PS If you’ve been keen to find a way to introduce a new approach, like Scrum then a DFPS situation might be just the leverage you need. Worth a try!

Outsourcing and Test Driven Development

I imagine that most of you have aleady heard of Test Driven Development (TDD) where the tests that software should pass are written BEFORE the software itself is written. The list of tests is essentially just a formalised way of listing success criteria (and indeed requirements) very precisely. More than precision, this approach gives you a very fast indication of your REAL progress, since the newly written code either passes or fails the tests*.

Test Driven Development is a software development approach usually associated with agile development methods such as those championed by the Agile Alliance. It is usually assumed that agile development requires a team to be collocated, working intensively and exclusively together, and so little attention has been paid to the role of these methods in outsourced development.

For better or for worse** however, many of us are on one side or the other of an outsourcing arrangement. I discovered in my work that using test driven development as a mechanism for both validation (are we building the right thing?) and verification (is it working?) can be hugely powerful.

There are a number of reasons for this:

  1. Well-written tests can explain requirements much more efficiently than traditional requirements documents. Even when there are misunderstandings, the SUM of the different tests specifies the right functionality.
  2. Tests are technical and so can overcome communication barriers with added precision. Even just not sitting next to your developers (or designers) can cause communication issues. When you add the moder-day reality of offshoring as well as outsourcing, this can be exacerbated.
  3. “The customer” (whoever they might be) can be involved in the creation of the test suite. This helps to ensure that the right functionality is being created in the first place since we can check that what the software does is what the customer desired/expected very easily.
  4. Showing the number of tests passed can be a much better indication of progress than the traditional “percentage of task complete” measure. You know exactly how much of the programme actually works at any given time.
  5. Tests can be automated. Then you essentially end up with an automatic checklist of desired behaviour, so that every time a change is made you can pinpoint other areas of the code that might have been affected and refactor quickly, rather than waiting for bug reports to come in from live use.

Hopefully as agile development methods become better and more widely adopted, an increased number of the firms providing outsourced development services will start to use them as standard. In the meantime, it can make a huge difference to your projects if you manage to introduce them ahead of the curve.

What have your experiences been with test driven development and outsourcing? Share in the comments.

* Provided your tests are well written, that is. Of course, writing good test cases is a skill all of its own!

** The pros and cons of outsourcing your development definitely deserves another post! Or arguably an entire book!

PM Overview on SitePoint.com

My first SitePoint article has just been published — Effective Project Management for Web Geeks. For those of you who found this blog because you saw me speaking about Project Management somewhere, it may well sound quite familiar, but I think it’s a nice round-up of some PM basics and the basic toolkit that I recommend everyone get familiar with if they want to keep their projects under control.

Go on over and check it out and let me know what you think!

Using the Best Plan Format

The most frequent mistake I see in Project Planning is what I call “premature Gantting” — going straight to creating a huge Gantt chart (often in MS Project).

Why is this a mistake? Because a huge Gantt chart, with many lines of tasks, all precisely allocated to specific dates looks very authoritative. It gives the impression that you’ve spent hours working out the exact dependencies, estimating the length of tasks and precisely scheduling all the work that needs to be done and who needs to do it.

If you truly have done all that work, then perhaps you’re fine. But the reality is that most of us have ACTUALLY spent half an hour scribbling on the back of an envelope, or at best on a flip-chart, to get some rough stages and some key dates. All the detail was then made up when the Gantt chart was created, primarily because the software demanded it.

What’s the solution? Let the format of your plan reflect the stage of development that it is at. Internally, I will frequently go into a meeting and DRAW the plan stages on the whiteboard. For communication with the customers/stakeholders, I’ll create a simple plan (sometimes even a flowchart) that reflects the reality of the situation.

So far, everyone involved has appreciated the honesty — and it’s prevented projects going wrong at a very early stage in the game.

Tools Don’t Matter

Every time I do a talk about project management, someone asks me what the “right” software is for the job. I love being asked this, because it’s an important topic.

My honest belief is that tools don’t matter.

Project management is about people. Picking some all-singing, all-dancing piece of software is not going to make things magically go right. It’s only when your processes are already working that the right software can help you make things run more smoothly and efficiently.

Net, focus first on getting the processes right. Then worry about selecting the best software for the job.

Keep in mind, however, that adoption is of supreme importance when selecting tools for project management. At the end of the day, you may need to compromise on features for the sake of pragmatism. It doesn’t help anyone if you have a fabulous project plan that no one can read, or an issue list that no one will update!

Management By Optimism

Parkinson’s Law says that “work expands to fill the time available”. If you don’t have much to do, it doesn’t inspire productivity. If you have loads to do, it often inspires procrastination, but I digress.

Today, however, I want to address the corollary to this. Some people seem to believe that since work expands to fill available time, work will also CONTRACT to fit the available time. It usually plays out like this:

Project Team Member: Getting the environment set up took two weeks longer than anticipated, so now we don’t have enough time to test. I think we need to move the go-live date.
Project Manager: No, no, I’m sure you’ll manage it.
Project Team Member: As I said, I think compressing the testing down to just 2 days is a serious mistake. We’d be risking the whole project!
Project Manager: Listen, I’m sure you understand this is a really important project. We MUST make that date. You’ll just have to make it work.

This, my friends, is Management By Optimism. It is probably the most dangerous management trend in evidence today. When you see it, start to worry, because it is probably the biggest threat to your projects and to your careers.

Management BY Optimism is very different to being optimistic. Being optimistic is seeing the cup as half-full — trying to think the best rather than the worst in a given situation. Management By Optimism, on the other hand, is about IGNORING potential failure. Just because the impact of a particular risk is severe, the risk is regarded as extremely unlikely. Rather than facing the problem and dealing with it, it is ignored until a catastrophic point is reached — or until the relevant manager can jump ship and blame the sinking on the crew.

So what can you do if you worry that Management By Optimism will scupper your project? Well, firstly, look out for the signs. Failing to consider real risks, reacting adversely to the suggestion that the plan or schedule is unrealistic are both big warning signs. Secondly, try to address the problem in a constructive way. Sometimes we all delude ourselves into thinking things are better than they are. Holding a team risk-assessment meeting can help — just get everyone to rate how severe and how likely they think a risk is. It will quickly become apparent if the team cannot envision a successful outcome when the leader is dead-set upon it (and vice versa).

Or, if there is no other option, bring in the big guns — take it as an issue to the Project Board and make clear that there are real concerns about the chances of success. Much as “it’s going to be late/over budget/under quality” is unlikely to be POPULAR news, any senior manager worth their paycheck should realise that early warning is significantly better than unanticipated failure.

Do you have some examples of Management By Optimism and perhaps other ways to combat it? Share in the comments!

Starting Out in Project Management

Although I won’t do a full repeat of my talk at BarCampLondon2, today I wanted to talk a little bit about starting out in Project Management. Most folks don’t start their career as a project manager … they come to it later, having been in an operational role or part of a project team first.

One of the difficulties for a first-time project manager is that being a great project resource (i.e. team member) is what gets you the job as project manager, nine times out of ten. Unfortunately, the characteristics of a great project resource are not necessarily the same as those of a great project manager. Standing out in a project team is about getting more done than your fellow team-mates, knuckling down and “getting on with it”. By definition, this focuses you on the executional level of the project — getting tasks done, once they’ve been assigned to you.

In contrast, being a great project manager requires excellence at all the OTHER parts of the project — planning, communication, dealing with stakeholders, managing risk, seeing the “big picture” and so on. There’s also a big part of project management which is more about management than about the project — your team will function best if they are left in peace to do their work and move the project forward, so making sure they don’t NEED to worry about all those factors is paramount.

In traditional project management, there are a number of stages: Initiation, Planning, Execution, Control and Closure. The crux of my talk last weekend was that the real success or failure of a project is determined in the Initiation, Planning and Closure stages, whereas most of the focus is traditionally on the Execution & Control phases. This is not to say that these are the most time-consuming phases — nor that the Execution & Control are not important! — just that they are the structure that allows for success .. or not.

In my experience, some of the most typical mistakes first-time project managers make are in these stages:

  • INITIATION — not making sure everyone is 100% clear and aligned on the purpose of the project. Realising this later on when the software “doesn’t do what we wanted it to do” or when the savings/value promised are not delivered is much more costly.
  • PLANNING — thinking that the plan, once written down (as thousands of lines in MS Project) will be followed to the letter. Plans are not robust. Task planning is especially fragile. If you spend your time worrying about the fact that task #137 is only 70% complete, then you’re not keeping your eye on the rest of the project.
  • CLOSURE — if you think your project is finished and others don’t, then you have big problems. There are a number of reasons this can happen (probably fodder for another blog post), but the most frequent are either that you haven’t met everyone’s real objectives for the project (see above) or that you haven’t provided for the future of the area you’ve been working on. This leads to the “undead stakeholder” phenomenon that seemed to strike a chord with everyone I mention it to.

So, what can you do if you’re managing a project for the first time? Or even if you’ve already managed your first project and weren’t happy with the results? There are a few things you can do:

  1. Educate yourself. Even though Project Management may not seem as real or worthwhile as development or design, it is still a valid skillset and there is a lot of information out there, notably some great books.
  2. Think back. When you were working on projects, who were the best project managers? Who do you remember fondly? Who do you definitely NOT want to emulate? Learn from their mistakes and adopt their best practices.
  3. Ask around. There are probably other young PMs in your organisation. Maybe you could even meet up and swap horror stories.

UPDATE: I’ve since written a book aimed at those just getting started in project management — have a look at The Principles of Project Management.