Blog

  • Setting Expectations and Project Success – Three Easy Steps for Improvement

    Setting Expectations and Project Success – Three Easy Steps for Improvement

    We all can use more ways to achieve project success or at least increase its likelihood.  Of course, there are many steps we can take in this effort.  However, few provide the impact of setting expectations and managing them throughout the process.  Here are some ways to help you do precisely that in your next project.

    Concrete Over Vision

    The most significant variance in expectations in my experience comes down to vision.  The end product you envision is not what your customer sees.  Since both of these visions are in someone’s head, we need to get those out and compare notes.  Guessing and assumptions are prime culprits in expectations that are out of sync.

    This is why prototypes, wireframes, and user stories are so important in project success.  These tools give us a way to put down on paper the vision in our heads and resolve any differences.  It can seem redundant to write down something all parties appear to agree on, but that does help avoid assumptions and other communication issues.  I have found that we do not always have the clarification of communication that we think we do.  Putting thought into concrete form helps to alleviate that weakness.

    The Devil in the Details

    I once heard it suggested that software architects get in the habit of asking “and then what?”  This is an excellent approach to drilling down to the required level of detail for setting expectations.  The step to put our vision in a concrete form can lead us to think we have more detail than we do.  I have come across far too many customers that point to a page or application and say that is what they want.  However, as we dig into that example, we find that there are features they want that are not on the screen or assumptions made that are not stated.

    An example of this sort of error is easily seen in the assumptions about how a page works.  There will be menu items and other controls that imply action.  When the result is not adequately shown and defined, then it can lead to mismatched expectations.  The “make it look like this” is a good start.  However, it is only a start.  This starting point needs to be followed up with questions to clarify how every piece of the screen works.  This includes menu items, buttons, tab orders, notifications, validations, and more.  A picture is worth a thousand words and may also hide a thousand function points.

    Avoid Drift

    The third item we need to address is potential drift from our starting point.  A well thought out and thorough design up front can help us set and maintain expectations.  Nevertheless, there are surprises and holes that become apparent in any implementation that can impact that initial design.  These bumps can cause drift and even derail the direction that implementation is headed in.

    This problem is easily solved with regular meetings and updates.  Progress and bumps are addressed in each session along with discussions of variance from the original design.  The end product of this process is that expectations are “tweaked” along the way in concert with design adjustments.  Although there are other reasons to take this approach, I think managing expectations provides the most substantial payoff.

    There are thousands (or more) variables that go into project success.  Fortunately, a lot of what determines that success is how the solution is perceived.  Therefore, the better we are at setting and managing expectations the more likely our odds of success.

  • Coding While Impaired – A Reason For Project Failure Rates

    Coding While Impaired – A Reason For Project Failure Rates

    Every so often you will come across a comparison of drunk driving to trying the same action while sleep deprived.  This usually is surprising to spectators when the lack of sleep is shown to be as bad as consuming a lot of alcohol.  Although developers tend to be comfortable drinking and drinking alcohol, they are far more known for long hours and lack of sleep.  Maybe this correlation can also be extended to the larger than average project failure rates.

    The Caffeine Culture

    I have met very few developers over the years that are not proud of their caffeine consumption.  It is a badge of honor to walk into a late night session with six packs of energy drinks.  This becomes their standard approach to the long hours regularly required of those that chose to code as a career.  The problem is that the long hours are inflicted as much as they are elected.  I have experienced a countless number of projects where the approach to hitting target dates is to cancel time off and extend hours to seventy or more per week.

    The typical attitude is to grab some energy drinks and pour more hours into a project to get it on track.  I have no problem with this approach.  However, I do question those that are surprised by lower quality after these pushes.  You can design and test all you want.  However, a team that is comprised primarily of sleep-deprived members is roughly the equivalent of those same people after an evening of adult beverages.

    Mental Work

    When you consider how much more mental coding is (as compared to driving) the problems become apparent.  You have people that are not at their best mentally doing tasks that require concentration and complex thinking.  Once I started down this road, it seemed evident that these projects would have high amounts of errors and thus failure rates.  The worst part of all this is that those increased errors cause more time to be needed to get tasks done.  That leads to less rest and sleep, which leads to more errors.  Thus, a death march is born.

    The amusing thing is that many companies have policies that go as far as terminating those that show up for work inebriated.  Yet, they have no problem demanding the long hours that can lead to the same mental state.

    A Different Path

    There are some instances where the long hours come from poor planning or management.  Unfortunately, many of the situations arise from heavy competition, low budgets, and the related tight deadlines.  You may argue that means that team leaders are left with no choice.  I would say otherwise.

    When you look at productivity curves for the average human, you see a drop off as the day gets “too long.” Studies show the length of a comfortable (and productive) workday varies from worker to worker.  Nevertheless, we can work with averages and observation.

    I recommend that adding hours and pushing for longer work weeks be done in an incremental way.  Ease your way into it earlier in a project if it looks like it will be needed.  You can then closely observe the developers and bug rates to see how things deteriorate.  At some point, there will be a diminishing return that makes long hours not only useless but detrimental.  Once you have that hard limit, you are better served to add resources or accepting slipped dates.

    Developers may like to be “edgy” by embracing sleep loss and long hours.  However, this is not a productive approach to software.  Maybe treating them as imperfect humans will help improve project failure rates.

     

  • Finding A Good Scrum Master

    Finding A Good Scrum Master

    It is hard to believe many readers have not heard of the Agile approach to development.  This methodology is a hot approach, and all of the players are in demand.  Of these roles, the most in-demand appears to be the scrum master.  The challenge in filling this role is often figuring out what sort of skills are best for it.  Is it a technical role? A manager? An analyst?  Let’s look at what the responsibilities are and then the skills a good scrum master should have.

    Responsibilities of a Scrum Master

    When you break down the role, it becomes easier to find matching skills.  Therefore, we will start with the typical duties of a scrum master.  Note that these are not universal, but part of the variance in requirements comes from a lack of understanding of the role.

    • Act as a liaison between the developers and business owners
    • Push the development team to be productive (velocity)
    • Help avoid pitfalls and design flaws (technical and architecture leadership)
    • Balance current work and demands with technical needs and ability to deliver (project management)
    • Provide a steady stream of updates for users to assess and see as progress

    There are other facets of the scrum master role.  However, these are the high-level tasks of one that will be highly successful.

    A Mixed Breed

    Note that some requirements are technical, some you would find with a Business Analyst (BA), and some management.  This is not a common combination.  You cannot just pull out a developer or assign a BA or assign the role to a manager.  The scrum master needs to be able to wear each of these hats without being too heavy-handed while wearing those hats.

    For example, a strong scrum master will drive the team to make aggressive but reasonable choices for the tasks in a sprint.  However, they will ensure the team has buy-in for those choices as well.  Ideally, they lead without being seen as a leader, more as a facilitator.  This role can help with design and architecture discussions but should not be the one that dictates solutions or approaches.  They need to be technically skilled enough to understand the details of what is being implemented and communicate concerns to business owners or technical architects.  Are you worried yet?

    Seasoned Veterans

    The best scrum masters I have worked with are not new to the SDLC.  They have worked on good and bad projects in the past.  There is also a broad range of team sizes they have worked with.  Typically, the experience as a developer is at least five years with some experience as a lead and architect as well.  They also need to have experience in gathering requirements and working with BAs.  In general, they should be a well-rounded developer or technical BA that is ready to step away from a role that involves mostly coding on a daily basis.

    This last point may be the hardest hurdle to overcome.  Developers that have progressed to the desired level for a scrum master are often going to be ready to move into a technical leadership or architect role.  The technical BAs are positioned for management or product owner roles.  This leaves you with people that may be perfect for the part, but they are not interested in it.  It may be seen as a step-down.  In reality, the salary expectations may be an actual step-down.

    A Narrow Window

    Now that we have looked at what sort of skill set works best we can start to describe the kind of person that will work best.  This also can help you set salary expectations for the role.  First, some scrum master positions do not require a full-time focus on those responsibilities.  I have found that you can often run a team in around twenty hours a week, maybe a little less.  That makes a scrum master a part-time position.  Therefore, you can add responsibilities to “sweeten” the post for more senior staff.  You can also work in tasks for the scrum master that allows them to continue to advance their career.

    Even with these options, your best scrum master is going to be one with six to ten years of experience in development teams and multiple roles.  That puts your salary band in the neighborhood of an upper mid to lower senior level developer.  I often find this to be close to project manager salaries.  If you go lower, then you will struggle to find someone with the technical and leadership chops to handle the position.  If you shoot too high, then you will be wasting an expensive skill set on the scrum master role or put someone in that position that is too intimidating to allow the team to make their own decisions.  Do not shy away from adding in additional work for the candidate that will enable them to “earn” a higher salary or sweetens the position with work they want to pursue.

    In the end, a scrum master is a difficult position to fill but not impossible.  Do not be confused by the title or “agile” label.  Stick to the job requirements and you will be able to find a good fit without searching for a purple unicorn.