Archive for the ‘ Communication ’ Category

Storming through System Implementation

After the first functioning code delivery arrives in a system implementation, the client finds a mismatches from what they got and what they are looking for due to miscommunications & various assumptions. (As we have discussed in the Tuckman’s forming phase)

With so many differences between the delivery and the customer expectations, the team eventually figures out, they need a few large change requests to open up requirements & system’s capabilities. Thus, the project team will need to collaborate to derived process & functions that fit both the client’s needs & the system.

To succeed into the implementation, this step is an necessity to refine the system to fit the key business needs. Due to limitation of the interface/API, existing limits/functionalities of other systems or just plain regulations; it does take more effort by the team to define the appropriate changes.

Without carefully monitoring the type of changes being made, the scope can easily get out of control leading to project failure. Hence formal packages of change requests are needed to be signed-off to prevent scope creeps out of hand.

Similarities between Tuckman’s storming stage & the storming phase of system implementation. Tuckman’s team storming stage is define as follows:

“The team addresses issues such as what problems they are really supposed to solve … Team members open up to each other and confront each other’s ideas and perspectives … The storming stage is necessary to the growth of the team. It can be contentious, unpleasant and even painful to members of the team who are averse to conflict.”

If we equate the conflict in a team as changes in a system implementation, we will find many similarities a team development process and the implement projects’s lifecycle.

Tuckman’s storming phase
• Different people in a team with different perspectives & priorities.
• The team have various difference that leads to discussion & conflicts.
• The storming stage is necessary to the growth of the team. It can be contentious, unpleasant and even painful to members of the team who are averse to conflict.
• Without tolerance & collaboration the team will fail
Storming phase of implementation
• Different teams in the project with different perspective & priorities.
• The implementation have various differences in functionality & expectation that lead to require changes.
• This phase is necessary to refine the system to fit the key business needs. Changes will be needed due to limitation of the interface/API, existing limits/functionalities of other systems or just new regulations.
• Without understanding what are needed & what the system can be configured to do, the project & system will go out of scope and fail.

Just like the progression during this period, the planned expectations & actual results are similar between a growth in teams and projects. Most team growth, this part is underestimated or even missed by management during planning. Although output of the team relies on how well the conflict is managed & utilized. This is the same in system implementation projects, the project plan would complete correctness in the requirement & specification process, which underestimate this correction piece of the implementation piece of the project. Although the output of this piece is critical on how well the system will adapt to business needs & future processes.

By the end of this phase, deliverable/system has bugs & defect left … the overall system functionality would fit the client’s business needs. The project is near the original project deadline due to the unexpected difference & delays, although the progress of the system is similar to end of development phase in SDLC. There is still a long way to go, which is why most IT project doesn’t meet their deadline is because this phase of work is missed in early planning.

Applying the Team Model with SDLC: The Forming Phase

Just like the Tuckman’s stages of team development, the relationship between the project, the product, the client & the vendor goes through a similar projects.

The first stage in the Tuckman’s model is the ‘forming’ phase. The 1st half of the IT project can be classified as the ‘forming’ phase. This is when the client defines the requirements & specification is developed & all items are formally signed off. All the requirements is developed between the vendor & client. Even though the client only have the slightest of clue what the system would look like.

The vendor tries the best to fit the requirement into a specification that fits the vendor’s product, meanwhile the client tries to refine the requirements to make sure it’s more less right. At this stage, there is just too many unknowns to have a clear picture what could be missing in the requirements.

Unbeknownst to both parties, both already have their own kind of miscommunication.

Many client would only know what they have been using, so most of the requirements would be driven by that. Which means they will tend to focus on issues & process that have been there … even though some processes are created due to a flaw in the previous system.

The vendor usually tries to understands the client requirement by what they think is what the client really wants, then tries to reinterpret it into the specification. Transforming ideas of process into list of specifications for developers to code sound less complicated than doing it … so that an easy task even for the best consultant.

A natural difficult task for many human beings is translating thoughts into words; Compound with this, it guarantees a mismatch in between the conception and the end-product.

Unfortunately this is unavoidable when dealing with so many unknowns & miscommunication.

As the result, many thing does seem to work right for the client when the code is first delivered. After a few weeks of fine tuning, the client will be able to test out the product … at this point the client will realize the code is missing some major functionality that is missed in the requirement, but critical to business.

After the first round of client testing, the project have passed the mid-point of their timeline; Since under the SDLC-waterfall model, they have arrived at the testing phase, which is one step away from acceptance.

This is where we will end the ‘forming’ phase … next up storming.

This is a general reason why SDLC might seem to work in theory, but never fully work in practice. That doesn’t mean we should not use the SDLC, it just mean that it will take more time to craft the systems using the various steps in the SDLC. Like the agile method, any software development project will require a few iteration of similar process to make sure the product is fine-tune to what the clients need.

Observed from Implementations: SDLC Iterations & Tuckman

From the Tata Consultancy survey (2007):
    “62% of organizations experienced IT projects that failure to meet their schedules”

From the Robbins-Gioia Survey (2001):
    “51% viewed their ERP implementation as unsuccessful”

With complexity of large IT/ERP systems implementation, various misunderstanding & miscommunications are unavoidable … This disrupts the SDLC model by making each phase to be revisited at many points of the project. This usually generate unaccounted delays to the project, which could cause the result you see in quotes above.

After going through several module implementation, I have seen a pattern. After the 1st code delivery … there is almost a guarantee a massive change request or redesign document. After that is done, the regular defect appears for fixes.

The traditional waterfall model and most major project planning expects people get the solution right in one shot. But of course this never really happens, it takes several tries developing & refining to get to an acceptable solution. That’s why many all IT project ends up different from the original requirement.

From observation, it seems it naturally goes into a few core iteration of code implementation before the solution is ready to go-live.

After studying project management & learning about Tuckman’s stages of team development. I notice that developing an IT solution from start to go-live ready is similar to a team going from forming to working productively. Although each iteration seems to go through a simplified version of SDLC. (Feasibility, Analysis, Design, Implementation, Testing)

Forming Phase:
This is where the client defines the requirements & specification is developed & signed off. This phase end when the first code delivery for the requirement is tested.

Storming Phase:
When this occurs, the client finds there is a mismatch between what they imagine and what is delivered. This part involves the redesign/massive change request to get the solution functioning per the client’s business needs.

Norming Phase:
This is when both the vendor & the client understand what the client needs, both are polishing the system/solution to a stable state.

Performing Phase
This part can only be archive when the solution is actually performing, through post go-live period.

In all of these phases, QA & programmers are needed for on going development & validation before the solution is usable for the client.

Unless you a building a off-shelf solution with zero customization, project planning would go off track. Instead of viewing a IT implementation as one long SDLC, plan better by anticipating mismatch in spec & refinement in deliverable.

Next few posts, we will go in depth of the phases.

Handling Missed Requirement

As the deliverable arrives, we were able finally to test it out after the long await. Unfortunately, we found out that a side functionality was only using at the address instead of both the account & address.

After talking to the consultant, we found out they were surprised that we were expecting to include the account key … It was a completely missed.

The miscommunication started from requirement definition due to the complexity of various scenarios. Although when the specification/design document arrived, all of the business & IT staff reviewed it & still missed the scenario … when we reviewed the document, we missed what was not in the design on the particular scenario.

Honestly in general, the code was correct expect for that missed item … so this missed requirement will be seperately managed by a change request.

As much we try to prevent it, miscommunication/misunderstanding/mistakes happen. We need to accept it, fix it & move forward.

Here are the process I followed this time to reduce any potential further delays:

1. Acknowledge the Problem (Don’t Blame):

Blaming is never good, acknowledge the issue & get to work.

If a process was miscommunicated or misunderstood, the issue will trickle down into the work that is being done. It could have been caused by client miscommunication, vendor misunderstandings OR both.

It doesn’t matter anymore, it happened … state what was missed & move forward.

2. Analyze the Impact:

Once we accepted that there is an issue to fix. Figure out the impact of the issue to determine urgency/priority of the issue.

This will also become your justification for the extra time it took for the fix. For my current issue, the impact would of cause a good set of end-customer not receiving a rebate/refund … due to the monetary impact to the bunch of future customers … this would be set as a priority issue.

3. Re-Determine the Specification/Conditions/Scenarios:

Write down the specifics of the gap/issue & what are the scenarios that needs to be covered. Don’t jump to look for a solution, you are blindsided by what you have seen.

For example, the issue we found was big enough, but after redefining the conditions.
We find we only need to update one of the key condition to include the account #, instead of just the address to solve the issue/gap

4. Collaborate on Solution:

Find an agreeable ground between the client & the vendor. This is to make sure no further misunderstanding occurs for this issue.

Oh, please write it down as well.

5. Document it:

This could be in the form of a change request or an agreement of change. Since change this is different from the original design, you better document it; otherwise when the project manager ask why extra time was used … you would be blame for misused a resource (even if you are right)

At this point, unless you want to hide the issue … just document it or setup a change request. Misunderstanding & Mistakes happen, just make the fix official (if needed, get it approved).

6. Let the Vendor Handle it:

At this point it should let to the vendor work on the deliverable, since the specification written down for the vendor.

Although makes sure you make it clear to the vendor that question & feedback are welcome … this way you will get what you need & confusion is minimized … also it will cut down on time to redevelop it again.

Requests Losing in Priorities

As I dig through my old e-mail & to-do last friday, I stayed behind again to close out some of the pending task that got lost in priorities for the week.

Half the time, I find that other priority is overwritten by other priority, I also found this is true for most of the people I work with. With each e-mail, each meeting & each day passes by … more & more tasks goes on our queue.

Here’s the Problem: A ‘Medium’ priority can easily becomes ‘Low’ after a few new requests.

In IT, we rely on completed task of others to close or even to start other of our own task. In basic development process, Development is need before Testing & that is dependant on Design. To prevent from bottleneck, we need to be organized & follow-up.

Incoming Tasks: Organizing & To Do
Using some Get It Done techniques, here are some task that has been helpful for me

Write It Down:
Rather than remember tasking, I write down a list to handle the tasks to be done with the next 1-2 days

2 Minute Rule:
If there are a task/e-mail that can be done in 2-minutes, then do it immediately. I usually set it 5 minutes instead of 2 to be more effective.

Long Term To Do:
For the tasks to follow-up on & meetings to-do, use a digital to-do list (google task) to track & follow-up

Outgoing Tasks: Follow-up
Nowadays, everyone has dependency task where someone have to finish a task or 2 before you can start on your task.
To make sure your request don’t get lost in priorities, here are 3 simple thing you can do:

1. Don’t Assume
Don’t assume a task would get done … we all are busy on some/most days, we can miss some task if we are not organized.
So don’t assume, just follow-up.

2. Follow-Up
Use a light toned follow-up by asking for an update in a short e-mail (you can also offer to help or any clarification)
… don’t follow-up too much, it would just get annoying & they would help you next time.

3. Be Understanding
Everyone (including you) have missed a request once or twice due to other priorities. So if someone missed it after a day or two, just ask for updates, don’t guilting them for missing it. (Guilting them won’t help, but ruining relationships)

Many company has their own task management systems but don’t just rely on it … create your own system. It took me a lot of trial & error to find something that I can used as some kind of task organization

By end of that day, it felt great to close some of those task that could of been a bottleneck if left not done.

Problem Solving by Drawing

From a previous post on IT’s natural soft skills, we saw how years of coding & debugging changes your process of thinking. Rather than thinking in words, techies would think in groups/item/object & how it moves.

To provide various solutions, I’m sure we have all use the following:

1. e-Mails
2. Lists for Specifications & Requirements
3. Creating ER-Diagrams, Workflow & Use cases
4. Drawing on the whiteboard to work through issues

From experience which one is most effective? which is the least?

One of the best ways to discuss in-depth IT problems are to discuss visually through diagram. That’s why you can find more whiteboards with arrows & shape in IT than in most department.

The current top author on visual thinking is Dan Roam. I meet him this year at SXSW at his session: Blah Blah Blah: What to do When Words Don’t Work

He gave a great scenario to shows how much better to use visuals rather than words. Scenario: Ways of Giving Directions

1. Using Words
    • Explaining the directiono Turn left & walk for 2 block then turn right …
2. Listing Steps
    • Bullet pointing each direction … Turn left & walk for 2 block … then turn right …
3. Drawing
    • Draw the path on the map
4. Showing it (Using visual, words & motion)
    • Point: Point to the CN Tower & tell they to follow it to reach the convention center

I’m sure most of us have either ask for directions or been asked by someone else.
Which one is the most effective? To me, the latter 2 methods are faster & more effective.

We all learn to draw before we learn to write e-mails. It’s actually second nature for us to understand visuals than essays. Unfortunately along the ways from kindergarten to work, we grew away from drawing to express our idea & creativity.

The above example parallels with the few listed tasks we do to solve work problems in IT
… which is more effective communicating ideas & solutions?

When you are stuck at explaining an issue/solution, use the whiteboard/piece of paper & draw. It’s easier than you think … all you need is to be able to draw boxes, stick figures & arrow.

Next time, to get your point across … Draw it out!

Through visuals, Dan was also described how health care industry works on the napkin.
If you want to learn about how to communicate visually, you can check out Dan’s book:
The Back of the Napkin.