Report on NASA’s Project Management Challenges

The US Government is a great source of Project Management resources and while I plan on giving an overview of what is available for free in the near future, I stumbled across an item from NASA’s “ask” that I just had to share.  The US Inspector General released a report recently attempting to answer why NASA projects so often seem to cost more and take longer than originally planned.

While the full report weighs in at 72 pages, I’d recommend everyone interested in Project Management to read at least the overview. Where the rest of the document is interesting in its deep exploration of the current operating environment at NASA, the overview gives a good introduction to the four major factors limiting project success:

  • NASA’s culture of optimism.
  • Underestimating technical complexity increases cost and schedule risk.
  • Funding instability can lead to inefficient management practices.
  • Limited opportunities for project managers’ development.

These issues are far from specific to NASA and serve as a great reminder to constantly review trends in your own projects’ success and examine ways to improve.

What is Project Management?

While I’d have loved to start with something juicier, I find myself out of the habit of narrative writing. As a result, to get back into the habit I’m making things easier on myself by writing more straightforward posts to get things going.

There is a surprising amount of ambiguity when people say ‘project management’ given how long the discipline has existed. Part of the problem sits with the variety of ways companies use the title ‘Project Manager’ – from team lead type roles to designated nagging managers through full-blown classic project managers and scrum masters. This post aims to cut through the confusion and hopefully make people realize that just because there is a person with the title ‘Project Manager’ doesn’t mean they are doing project management.

The best high-level description of project management I’ve found captures the base motivation:

“Project management is how grown-ups manage risk and uncertainty.”

New undertakings always have things that can go wrong and things which aren’t known at the start. At a certain point the cost of failure becomes great enough that some process needs to be put in place to make sure that a project completes or failures are detected as early as possible and avoided where possible. To get to an actual project management definition, we need to add a concept of what we need to do to achieve the goal.

Gren B. Alleman, who blogs at Herding Cats, provides the best breakdown of what needs to be done in order to be considered ‘doing project management,’ phrased in terms of 5 questions that must be answered:

  1. What does ‘done’ look like?
  2. How do we get to ‘done’?
  3. Do we have the resources to get to ‘done’?
  4. What obstacles may we encounter on our path to ‘done’?
  5. How do we know we’re making progress?

These ‘Immutable Priciples” are not aspects of any particular project management methodology (e.g. Agile, PRINCE2, APM, PMI/PMBOK) but are rather features and questions that any methodology needs to cover. Glen goes into great depth describing each of these at his site, so I won’t duplicate his efforts here. The answers may take different forms depending on the methodology and may (or may not) be backed up by data and analytical tools – that they are being answered is what is important. One major point note – these are living questions and while they are most obviously asked at the start of a project they also need to continuously re-answered as things change.

Early in my project management training I heard two key ideas which have stuck with me and I feel contribute to a working definition of Project Management:

  • “Everything will be known, it is just a question of when.”
  • “Never let your project live a lie”

Combined, these speak directly to applying the 5 questions with integrity. Project management is largely an attempt to learn things as early as possible, such as obstacles that may be encountered. If we’re not actively keeping our answers to the five questions fresh, our project may be headed for an issue we’re unprepared for or miss its schedule. As is often said, “hope is not a plan” so lets make sure we’re being proactive about evolving our plans and hunting out issues rather then keep our fingers crossed that things don’t take a turn for the worse.

Just asking the 5 questions regularly I believe helps even the least formally organized project meet its goals. One would think then that given the wealth of additional techniques and methods that exist projects should be like clockwork, yet frustrations abound. While I’ve hinted at what goes wrong, I’ll cover it in depth in my next post – “Project Management is good, Project Managers commonly aren’t.” (hopefully I’ll come up with a catchier title…)

Upcoming Posts:

  • Project Management is good, Project Managers commonly aren’t
  • Bad useful tools

Blogging on Project Management incoming!

During the day, I work as a Project Manager and I love it.

I’ve always been a process person, making it a great fit for me. I spend a lot of time thinking about project management as a discipline and a process along with the challenges I regularly face and really want to share. As a result, pm blogging will commence shortly!

It may not be as exciting as discussions on sensing soil moisture levels, but hopefully everyone will learn something in the process.

Building a VPlotter

A couple of months ago I decided I needed a project I could finish as the watering system seems like it will be forever on the horizon. I’ve wanted to make a vplotter for a while + seemed like it would be something fairly easily finished while giving me experience I could carry forward to the other projects on my plate.

VPlotters are a type of computer controlled drawing device, where the pen is hung vertically from two motors against a wall, resulting in a ‘v’ from the two control points to the pen. An early example is hektor, a graffiti bot that draws using spray paint on walls. These types of drawing machines, due to their simplicity compared to cnc-esque plotters, are fairly common projects. A quick non-authoritative list includes –

Using this as a starting point, my design has a couple of key aspects. First, I’m not going to have any sort of pen-up feature. Any drawing I make will have to be one continuous line. My rationale is to minimize the complexity and the types of drawings I plan on making don’t require it (more on this later…). I also plan on making it wireless, with the controlling computer not physically connected to the controller. Two reasons here – for some of my plans, I expect this to run continuously and my ‘always-on’ computer is not near where I hope to hang the plotter. Also, it should help develop some rf experience I can carry forward to other projects.

I’m fairly far along with this project already (just quite behind on blog updates). Next post to come will be on the math and some theory.

MSP430 Clocks (Part1)

[Editor’s Note] I started this post months ago, but a stressful bit of time at work led to me putting this on the back burner. It has already proven its worth as I remembered none of what I’ve written here + managed to quickly get back up to speed. Hope it proves worthwhile to you!

MSP430 Clock SystemOne of the challenging aspects of moving to programming microprocessors is managing the multiple clocks available. The MSP430 documentation refers to this as a “Flexible Clock System” which we can take as a “steep learning curve clock system,” that I butted heads with last time when I tried to get 1-wire up and running. This post is an attempt to better understand the complexity of the architecture and save myself issues in the future.

The first challenge is getting through the acronyms. Each component of this detailed system has its own acronym which all sound pretty similar. I’ll throw out the acronyms + basic definitiens first before we dive into each piece.

Clocks:

  • ACLK – Auxillary Clock. Low frequency, used for standby mode + wakeup.
  • MCLK – Master Clock. For processor and high speed peripherals
  • SMCLK – Sub-system Master Clock.

Oscillators:

  • DCO – Digitally Controlled Oscillator. Internal oscillator. High frequency, quickly stable
  • LFO – Internal low frequency oscillator. Sub 12kHz, very low power
  • LFXT1 – Low Frequency/High Frequency External Oscillator – this sources a watch crystal on XIN/XOUT.
  • XT2 – An external Oscillator that can go to high frequencies.

Now some nomenclature notes. CLK means the actual signal. What this means is that you often run into DCOCLK and LFXT1CLK which refers to the clock signals coming out of the DCO or LFXT1. Now with that in mind, lets see where each of the clocks can be sourced. Each row represents a clock that powers some part of the system which may be sourced from one of the oscillators in each column.

Clock DCOCLK VLOCLK LFXT1CLK XT2CLK
ACLK Yes Yes
MCLK Yes Yes Yes Yes
SMCLK Yes Yes Yes Yes

Each of the ‘Yes’ boxes is actually adjustable by ‘/1, /2, /4 or /8.’

Wait, what is with the “/1, /2, /4, /8?” Well, there are dividers in the chain. Lets say that the VLOCLK is configured to run at 12kHz for MCLK, the ACLK could be set to 3kHz (12kHz/4) if needed. Why would would we want to do this? (Why so many rhetorical questions?) Well, if we’re sourcing a counter to ACLK and don’t need more accuracy than 3kHz, this keeps our register from filling up and overflowing too quickly, allowing longer timers.

A discussion of clocks can’t really happen without a discussion of power consumption. A full discussion on power saving will have to wait for another time, but there are some high level concepts we can consider now. First, we want to spend most of the time in low power with a slow clock to conserve power. Then, when required, we want to be able to quickly do a bunch of processing with a high frequency clock so a minimum of time is spent in the high power mode. This aligns well to the clock options – ACLK can be sourced to a low frequency source for low power sleeping and MCLK to DCO or another high frequency source for moments of high activity.

Ok, some details. First, if an external clock is being used (LFXT1) the internal low-frequency oscillator won’t be (VLO). Just happens to be that’s where the switch happens. A crystal would be a more stable source while the internal VLO is liable to drift with temperature.

The MCLK is the easiest piece to understand. That’s the speed the CPU runs at and is a direct analog to what you’d think of as processor speed in a full computer. MCLK typically runs off of DCO

ACLK and SMCLK are used to drive peripherals – i.e. Timer, A2D, etc. The difference is that ACLK is only sourcable from the low frequency sources while SMCLK can come from any of the clocks.

While the DCO is configurable over a wide range of frequencies, configuration is imprecise. The internal resistor and capacitor used in the DCO are on silicon, so there is a variation between otherwise identical processors. To work around this limitation, MSP430 series has one or more ‘calibrated’ frequencies with configurations burned to ROM. For the value line processors, they only have 1MHz calibrated. This doesn’t mean you can use a different frequency, just that you can’t expect it to be precise or function the same over different chips.

Now the question rapidly becomes how to configure these bits + pieces to do what we want. The traditional way is to play with a bunch of registers, play with code, then change it into hard-coded strings to save on program space. When I started writing this all up, that was how things went, but now there is Grace. Grace is a graphical tool that integrates into CCS allowing you to configure peripherals (including the clocks) using a simple graphical interface. It then generates the registry strings for you. I have yet to play with it, but expect it to be a valuable tool, particularly in the beginning as I develop further confidence and understanding.

Next up, playing with 1-wire on the MSP430.

References: