UA-39936112-2

Monday, January 27, 2014

Fixed Points in (Project) Time

There are fixed points throughout time where things must stay exactly the way they are. This is not one of them. This is an opportunity! Whatever happens here will create its own timeline, its own reality, a temporal tipping point. The future revolves around you, here, now, so do good! - The Doctor, Cold Blood, 29 May 2010

When I worked at a big technology company, we had a stage gate process on steroids.  This thing had 16 different gates, with full enforcement of each.  What was good about this structure was that it showed the distinct cadences within a project that the team needed to account for.  I liked that it tried to account for these cadence differences--most frameworks that I've seen don't even try.


The two main goals they were trying to achieve with this stage gate process were:
  1. To support stakeholder monitoring and control
  2. To guide the team on the path so that they do things in sequence
Monitoring and control are very important, but need to be separated from the development framework.  The development framework needs to focus on the team.  The "fixed points" within the framework need to guide them at a high level, but need to support their being efficient.  Given this, I want to focus on minimizing the number of fixed points to maximize the team's ability to manage and adapt.

For systems, there's a necessary flow that progresses through the subsystems.  In a mixed hardware/software environment, the minimum number of fixed points includes:

  1. Requirements/project plan lockdown
  2. Concept freeze (though this may realistically be part of the first line)
  3. Hardware freeze
  4. Software freeze
  5. Product release
I am thinking there may be additional points.  For instance, the above points cover development, but not release to the factory.  I haven't quite worked that out--but I'd rather start with too few than too many.  

Saturday, January 11, 2014

What is Agility in Hardware?

One area that I've been working through lately is how to relate the good habits of the Agile ideal to mixed hardware/software projects.
There are significant, good behaviors in Agile methodologies that relate directly to all product development:
1. We can't be 100% sure of what done looks like when we start, so stay flexible and have a constant conversation with stakeholders/product owners to ensure that the design is, in fact, meeting the needs.
2. Perfection is the enemy of good enough.  Don't add extra cost/time into solving problems that don't need to be solved.
3. Focus activity on maximizing feedback.  Spend time de-risking your approach as quickly as possible--addressing both technical and business risks as quickly as you can with actual implementation
4. Swarm activities.  Single piece flow is the key to optimizing the queues.  Activity should be focused on tangible outputs, at the expense of perfect efficiency in utilizing staff and project resources.

"Being agile" is fundamentally about managing "fixed points."  These fixed points include everything from getting buy-in (feedback) on decisions to architecting in such a way that designs can adapt.  This affects your approach to every stage of the project.  Here are some things I'm trying to work through:

How do you manage change from a hardware perspective?
How do you build in flexibility in hardware so you can enable that change?
How do I adopt a framework that will work for not only hardware--but software?  How truly applicable are Agile frameworks like Scrum, when I'm operating in an environment where getting MVP requires fixed-bid, multi-month project plans?

Below is my scratchpad of what I have so far.
  • Requirements
    • When developing marketing requirements, the goal is to capture what is needed now, but also to maximize your options for the future.
  • Architecture
    • Architect for high option value
      • Portability, scalability, maintainability
    • Have a wish list (technical roadmap) so the team can see where flexibility is required
    • Allow flexibility to adapt to an evolving definition of what "success" means
      • Most times, we don't know perfectly what will sell. This understanding will also evolve during a project.
    • Architect for your economics
      • In particular, consider whether your company is more sensitive to staffing or to unit cost
  • Development
    • Find--and take--one big risk per project
      • You'll have plenty of risks, but refine your plan until you only have one "project killer"
      • Keep in mind that risk usually originates from doing something new--which means you're learning! 
    • Then, mitigate risk aggressively--almost irrespective of the project plan