UA-39936112-2

Friday, September 12, 2014

Simplicity and Flexibility

That’s been one of my mantras—focus and simplicity.  Simple can be harder than complex:  You have to work hard to get your thinking clean to make it simple.  –Steve Jobs


Simplicity is the ultimate sophistication.  –Leonardo da Vinci

Thursday, March 20, 2014

Why Do We Estimate?

A conversation has been going on lately among a community of experts around the concept of #NoEstimates. A lot of great points are being made, but as with every business topic, the swirl always evolves back to "It depends."  It depends on what your stakeholders require to give you funding.  It depends on the maturity of your team and the maturity of your partners.   But, most importantly, it depends on the expectations of your customers (external and internal).

In my world, there is only one real goal to estimation—buy-in.  Buy-in from Marketing that the product we will make is what they want.  Buy-in from our Executive Leadership that there is a path to profit and we are the right team to do the work.  And, buy-in from us that we understand what is being asked of us and that we will commit to do what it takes to earn the business.

As a new product development department, we are running an engineering services business.  As business owners, our goal is to be profitable.  This means we want our customers to pay us as much as possible and to come back time after time with more for us to do.  As a captive design services business, the benefits get realized in the following ways: 
  • Growth:  we are able to hire more people so we can do more cool things more quickly
  • Competition:  we capture a higher percentage of the work, without it going to outside firms.

But, at the end of the day, there are two key deliverables that govern whether or not we’re a useful team:
  1. Dependability
    • Are we in control?  Does what we say match what we do?
  2. Value
    • Do we help the company do what it needs, with a higher value proposition than any other option?

Value is not created if we are not dependable.  Being a captive engineering services house, we get benefits—biggest among them, that our partners must consider using us first.  But, even there, if we do not deliver to our customers' expectations, the organization will look for alternatives (3rd party houses, partnerships, etc.).  Dependability, therefore, is first and foremost about getting what we DO to match what we SAY.  This requires control at the beginning:  we need consensus with our partners on requirements to increase the probability that we will delight them.  Our estimates are our first deliverable on the requirements--they are the basis of our promise of dependability.

Assuming dependability, our biggest differentiator is value.  Simply put, our goal is to meet the needs and wants of the company more efficiently than anyone else can.  Showing value is a difficult balance between exceeding expectations through awesome execution and managing expectations through education and partnership.  Our success is directly dependent upon how successful our customers (the marketing and sales teams) are.  From the beginning , estimates provide our customers the value proposition they need to make the case to "hire" us.

Ultimately, marketing exceeds expectations when they deliver business opportunities that bring in a bigger pile of money than anyone expected.  They have their own challenges to work through to manage expectations and delight their stakeholders as they define opportunities.  But, as their partner, we have a huge stake in their success—our participation determines their timing and and our estimates determine the payback time period on their business cases.  Our work estimate is the basis of our contract—the basis of our reputation.


As a result, estimation is a core skill for the success of our team—and of every engineer.  While we can't guarantee that we're right, we create a series of conversations with our customers and stakeholders.  To provide #NoEstimates is to bypass those conversations and that misses the point.

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