Tuesday, March 12, 2013

Three signs that your project has a good IT architect

Three signs: Clarity, Creativity, Simplicity
(photo credit: blinkingidiot)
When one is working on a IT project, how does one tell if one's team has a good IT architect?  Good architects should produce good architectures, and through them, good architects produces three signs in IT projects.  I learnt about these three signs from MIT Professor Edward Crawley's System Architecture class, and the signs resonated with my experience.  I will be interested to hear from you if your experience also validate this view, or if you have other views on this topic.

Here are three signs that a IT project has a good IT architect.  Or if your project does not have these three signs, maybe you should consider hiring a IT architect.

1. Little ambiguity about the system to be built

Good architecture reduces ambiguity about the system by clearly specifying its key aspects--its stakeholders, its purpose for existence, its interfaces, its key components, etc.  In big system projects, people involved each have their own idea of what the system look like.  The situation is very much the story of the three blind men and the elephant: each blind man had his own idea of what the elephant was like.  The architect helps to bring everybody onto the same page by putting the design on paper, let people argue over it, and then gradually evolve the design to one that is widely accepted.

2. Many diverse options on how the system could be designed

Good IT architects facilitate creativity in system design by helping to frame the problem well.  In reducing ambiguity about the system, architects need to achieve agreement on who the system is supposed to serve and what problem it should solve.  Once these two issues have been resolved, there can be many possible solutions.  Often projects jump straight into solutioning without properly framing the problem to be solved or who the system is designed to serve.  For example, a team might jump straight into designing a mobile app, forgetting why the app was needed in the first place.  Maybe the app was proposed as a way to better engage customers.  If that is the case, will an alternate approach like making phone calls achieve the objective better?

3. Designs that look almost obvious

After examining the first two signs, one might wonder, will a good facilitator do as good a job as an architect?

The answer is yes and no.

Yes in that good architects need good facilitation skills.  For big systems, it is difficult for architects to be the expert in all areas.  As such, architects need to facilitate conversations between experts in various areas, and then distill out the relevant pieces for the system being designed.

No in that architects need more than facilitation skills.  One critical skill needed is making the complex simple.  The keyword here is "Abstraction".  Good architects abstract complex designs into simple pictures such that only the most pertinent issues are highlighted.  One might even say that those picture look obvious.  But abstraction is not an easy skill; there are no prescribed approaches; it requires deep understanding of the system to know what is important and what is not, and then it requires creativity and communication skills to represent the complexity in a easy-to-understand way.

Does your project have a good IT architect?

Friday, December 7, 2012

DSM: A useful tool for process improvement efforts

Design Structure Matrix, or DSM in short, is a tool I frequently see during my year here at MIT.  It is often mentioned in "System Thinking" talks, as well as talks on designing complex system.  While the DSM's uses are many, my project team mates and I focused on process improvement and successfully used the DSM to help our sponsor company improve its processes.  Our sponsor company is a aircraft maintenance, repair and overhaul business, and the process we focused on was the aircraft upgrading process, which spans from defining requirements for the upgrade, to drawing out the design, to implementation, to testing and finally to delivery.

How the DSM helped

1. Reduce long rework cycles - imagine the nightmare scenario where a project gets to almost completion, and then have to loopback to the beginning for reasons such as a major design error.  It is like the chutes and ladders game.  The DSM helps to reduce long reworks by reordering the tasks.  For example, in our project, initially there were four rework cycles that would set the project back by more than 20 tasks.  After the reordering, there were none.

2. Challenge the status quo task ordering, while respecting task dependencies - in the reordered task list for our project, we realized that a number of documentation tasks were pushed to the bottom of the list.  These tasks dealt with the development of internal test reports, flight manual and maintenance manual.

Initially, we thought that meant that the company should do those documentation tasks last.  However, on investigating further, we realized it was because no or very few other tasks depended on those tasks.  We thought about that further, and a revelation hit us: if no other tasks are waiting on those documents to be developed, does that mean that employees could develop those documents late and to the lowest quality but yet not affect the entire process in any way?  How can the company ensure the timeliness and quality of those documents?  Our sponsor validated that concern, and in the end, we recommended adding sign-offs of those documents to resolve this issue.

This is just one of the many examples.  The DSM challenged the status quo task ordering, in a way that respected the task dependencies, so the new ordering still made sense and provided ideas for how the current process might be done better.

3. Facilitate understanding of the current process
The DSM creation process required us to get our hands dirty into understanding the process.  We needed to think about what level of granularity we need to get down to, and what kinds of dependencies we should capture.  These activities helped us think more about the process, and thus added in our understanding.

In addition, the DSM also provided a visual map of the process.  At one glance, we could see which are the tasks that have many dependencies.

Additional Information about the DSM

For readers interested in finding out more about the DSM, I have included some basic information here.

DSM might seem rather technical and intimidating at first glance.  And that fear is well justified, as DSMs are matrices, a mathematical artifact that inspire fear into people's heart by the mere mention of its name.  However, if you spend 10-15 understanding how it works, you will find DSM a useful tool to include in your toolbox for process improvement projects.

Creating the DSM

To use the DSM (for the purpose describe in the article), we have to provide three main pieces of information:
1. The list of tasks in the process.  For example, in the design phase, creating the high level design would be a possible task, and doing preliminary design review would be another possible task.
2. The dependencies between tasks.  This information will specify that for Task A to start, what tasks would need to be first completed.  For example, preliminary design review needs to be completed first before detailed design can commence.
3. Possible loopbacks.  This indicates scenarios where rework need to happen.  For example, after preliminary design review, the proposed design might be deem unsuitable and the project will need to go back to high level design.

These three pieces of information can be visualized in a graph like the following:

Here, the tasks are represented by the boxes, the task dependencies by the black arrows and the loopbacks by the red arrows.  This graph is not needed for DSM creation, but is included here to illustrate information needed to create a DSM.

With the required information, a DSM can easily be created.  Using the same example, the DSM will look like this:
The DSM contains the same information as provided by the graph, but putting it in a matrix allow us to apply some tools that will help in our process improvement task.  Then, to do the task re-ordering, you just need to use a tool to "partition" the matrix.  Tools, such as PSM 32 and a DSM Excel Macro, can be found DSMweb.org.

The partitioned DSM will have the new ordering, like the one described in this article.  Analysis and recommendations can then be made based on the partitioned DSM.


Further Readings

  • “Complex Concurrent Engineering and the DSM Method” by Yassine and Braha 
  • "The Model Based Method for Organizing Product Development" by Steven D. Eppinger, Daniel E. Whitney, Robert P. Smith and David E. Gebala. 
  • "Generalized Model of Design Iterations Using Signal Flow Graphs" by Steven D. Eppinger, Murphy V Nukala, and Daniel E. Whitney.

Credits

This work is not solely of my own.  A lot of credits to my team mates Haibo Wang, Davit Tadevosyan and Kai Siang Teo.


Thursday, November 15, 2012

Using Stories to Bridge the Attention Chasm

Using Stories to Cross the "Attention Chasm"
Many people believe that the attention of audiences follow a U-shaped curve, where audiences remember mainly what said first and last during presentations, leaving a significant chunk of presented material in what I call the "attention chasm".

Stories can help to bridge this chasm.  I recently watched the movie "The Lives of Others" (an excellent film by the way), and even though it was more than 2 hours long and was in a foreign language, I was amazed at all the details I remembered from the film!  And some of these details were not critical to the movie's main story, like what presents were given at a birthday party and what was eaten for dinner.

Why are stories able to accomplish this, and what does this mean for me?  It is not easy to answer the first question, but I feel that in short, stories are able to bridge the attention chasm mainly because they weave loose pieces of information together into a coherent trajectory.  Details are carefully chosen to reinforce the characters of people in the plot; similarly, events are carefully selected to "tell the story".  In comparison, presentations usually are looser amalgamation of information.  Moreover, stories appeal to human's inert curiosity to find out what happened in other people's lives!  (As such I thought the title "The Lives of Others" is an excellent choice from a film marketing standpoint)

For the second part of the earlier question, one answer that popped out at me is education.  Use stories to teach fact-heavy subjects such as history.  Instead of making students remember all the dates and events, have them watch related movies!  I can also consider using stories to bring together all the key points of a presentation.  It is a lot of work though, as I will need to think about the plot, the characters, etc.  Maybe airlines should consider using stories for the flight safety video!  It can be made interesting and humorous, and that would make life better for both the flight attendants and the passengers.

Stories' ability to help their audiences retain large amount of information is fascinating.  I hope I will gain more insight on how to leverage this capability.

Monday, November 5, 2012

Deliver late or less: best options for a behind-schedule project?

Delivering late: a viable option for behind-schedule projects?
(photo credit: marcp_dmoz)
Projects that are behind schedule are usually faced with the following options:
1. Add more staff to the project
2. Work longer hours, including doing overtime and burning weekends (Ouch...)
3. Work people harder, expect more out of the same number of hours.  Employees might do this by reducing interaction time with other employees, or some might cut corners, like do less documentation, testing.
4. Cut scope, i.e. deliver less
5. Do nothing and deliver late

A poll of 50+ mid-career professionals showed that in their workplaces, the preference is for option #1, #2 and #3.

However, research into this area showed that option #1-3 generate negative "side effects" that can develop into vicious cycles having major impacts on the project.  For example, by adding more staff, the average experience of the team is diluted, lowering the productivity of the team and also causing more errors in work done.

The key though is the vicious cycle, or in technical speak, feedback loops.  Continuing on the earlier example, the generated errors can create more errors downstream, for example think of the situation when software is implemented based on erroneous requirements.  Consequently, though there are more people in the team, the team gets less work done than before.  Similar arguments apply for the other two options.

Model showing "side effects" of various approaches to catch up on late schedules
Credit: Professor James M. Lyneis
Does this mean option #4 and #5 are the best options? i.e.  deliver the project late or deliver it with less scope?  Not always so, but my key thought is we need to give those options more considerations.  And to educate our project stakeholders that those are not cop-out options, especially when we bear in mind all the vicious cycle side effects presented earlier.

Wednesday, September 5, 2012

Designing flexibilities into systems and enterprises

Does your system or enterprise need a spare tire?
(photo credit: jbdenham)
In face of uncertainty and rapid pace of change, flexibilities like a car's spare tire can be useful for systems and enterprises.  An example of a flexibility is stronger beams in a parking structure.  A shopping mall might choose to build less levels of parking initially, but by putting in stronger structural beams, additional levels of parking can be easily added.  Another example of flexibilities is hiring contract workers.  Hiring in this manner makes future scaling back of operations less costly.

However, these flexibilities come at a cost.  Stronger beams cost more, and contract workers have hidden costs like long term commitment to the company.  How then can one decide what flexibilities are needed and how much of it is needed?

One possible approach is through the use of Excel modeling and simulation.  MIT Professor Richard de Neufville's class taught this approach.  Through not-too-complicated modeling in Excel, we were able to include into a standard financial analysis several flexibility designs.  For example, we were looking at the manufacturing of a product, and one flexibility we included was to produce more in years when production costs are low.  Then, through simulation, we were able to evaluate flexibilities for their effectiveness.  For example, as shown in the chart below, we found that we were actually worse off with one of the flexibilities as the Net Present Value (NPV) of the project was lower with the flexibility compared to being without.

This is a useful approach, though one key challenge is to come up with a good approach to compare different flexibilities.  In the above example, the NPV is used.  However, there are many other scenarios where there is no single number that can be used to evaluate the "goodness" of a scenario.  For example, in building public housing to meet the needs of citizens.  One design might house more people but cost significantly more than another design.  When then is a better design?  In addition, even in the NPV scenario, the outcome is a distribution of values, so the "goodness" of a flexibility often also depends on the risk appetite of the decision maker.

Lastly, a key insight I got from the class is that it is a mistake to think that including flexibilities in systems will be more costly than not including them.  If you compare building a parking facility with four levels, versus one with the same number of levels but stronger beams, which one would cost more?  Obviously the one with stronger beams!  However, this is not the correct comparison, and this is the key cause of the misconception.  The correct comparison should be to compare the stronger beam building against one with more levels.   Why?  Because the parking facility without stronger beams is built without any plans for future expansion, so it should have more levels to cater to growth in demand.







Friday, August 31, 2012

Modeling Enterprise Architectures using System Dynamics

System Dynamics model for adoption of a new product
(source: Patrhoue)
System Dynamics, a field invented by MIT professor Jay Forrester, was created by adapting engineering control theory into social-economic domains.  It was first used to solve supply chains challenges, then urbanization issues, then global sustainability issues, and now applied to many other fields.  At first glance, System Dynamics' approach to solving problem sounds similar to some approaches in Enterprise Architecture (EA).  It seeks to create pictorial representations of the situation to help stakeholders understand what is going on, providing a powerful decision support tool for decision makers and policy makers.  In EA, views of organizations are created to capture key elements of organizations to achieve impacts similar to those mentioned.  However, looking deeper, System Dynamics is not an alternative to EA, but can actually complement EA.  In fact, System Dynamics might one day become an indispensable tool for Enterprise Architects in understanding and communicating dynamics within organizations.

The key value System Dynamics bring to EA, in my opinion, is to provide EA with the missing third dimension for describing enterprises.

System Dynamics adds the missing third dimension to EA
EA views provide visibility into the major components in an organization (e.g. the main business processes and business data) and how these pieces depend and inter-relate with one another (e.g. linkages between business process and data).  However, it is not clear how the organization will behave when changes occur in the organization.  For example, how well does the current organization structure and human resource policies support the assimilation of new hires?  System Dynamics offer tools to describe such dynamics.

System Dynamics describes dynamics in systems primarily by identifying feedback loops.  For example, in the new hires example, one feedback loop at play is the "teach a man to fish" loop.  Here, as existing employees spend time mentoring new hires, the productivity of new hires increases and soon the new hires become more capable of sharing in existing workload.  The sharing of workload eases the burden on existing employees, giving them even more time to mentor the new hires. This becomes a positive reinforcing cycle that is very helpful to the organization.  In most organizations, there are also other loops at play that counter this positive dynamic.  The key value System Dynamics offer to organizations then is helping them identify such key loops in their organizations, as well as key levers for influencing those loops.  In the new hire example, a key lever would be the amount of work of teams where new hires are added.  My friend Kai Siang wrote an article that elaborates further on this new hire example.

System Dynamics also offer tools for understanding the dynamics of different future state designs.  By leveraging on computer simulation, System Dynamics is able to provide insights to decision makers on how different organization designs can impact the behavior of their organizations.

Furthermore, in reading System Dynamics materials, I found several best practices that are often heard in EA:
1. All models are wrong - don't strive to emulate reality, but think of models as tools to help human thinking.
2. Creating the model is not the end goal!  Skills in group facilitation, enabling organizational learning and getting the needed results are also very important.
3. Making mental models explicit might look trivial, but it is key to facilitating useful discussion!
4. People will have different views of what is the "correct" mental model.  Don't get too caught up with that, simply capture the conflicting views and move on.
5. People feel more comfortable to comment on the mental model drawn on a board or a piece of paper, as it is more seen as critiquing an object rather than attacking a person.

It would be interesting to investigate further the intersection between Enterprise Architecture and System Dynamics.  A quick web search revealed a 2010 paper that possibly address this area.  I will definitely welcome any pointers to work done in this area.


Tuesday, July 31, 2012

Five principles I use to plan my day

Make the day enjoyable!
Doing my work outdoor with a hot drink.
Have you ever invested a lot of effort to get into your dream college but then sloughed through it because there were just too many interesting classes and you ended up taking more than you had time for?  Or waking up feeling nervous because of the many items on your to-do list?  Or move from task to task with such precision in time planning that you felt like you were doing a combo move in a computer arcade game?

Well, if that is you, you are definitely not alone because that is me too.  Summer term has been pretty busy for me as class schedules are condensed to accommodate this shorter term.  Moreover, other demands for my time--like family, church, friends--added to the tension.

To make matter worse, I know that I should enjoy the journey and not be caught up with getting things done.  It can be really enjoyable to slowly mull over a topic taught in class, do the class readings in a park with a cup of coffee in hand, and then take time to reflect and blog about the topic.

The reality though is often different from this ideal.  Given the many things screaming for my time, my temptation is to squeeze as many tasks as I can into a day.  That makes enjoying the journey more difficult.  Moreover, sometimes when I do have free time on hand, I feel a nagging feeling that I am wasting time, and that I should think about what task I can complete next.

I feel the key to resolving this tension between getting things done and enjoying the journey is to establish some principles for planning my daily schedule.  This relates to my life architecture.  Here are the five principles I distilled after untangling my thoughts as I wrote this post.

1. First things first; some things will have to go.  I have finite time and energy, so I cannot have everything!  Don't fall into the greed trap.
2. Make the day enjoyable!  If it looks like a breathless schedule, then drop some tasks so that it is more achievable.  Don't be overly ambitious.  The journey will not be enjoyable ALL the time, there will be moments when it will be a mad rush.  My aim is to make them the exception rather than the norm.
3. Leave half of the day unplanned to leave room for the unexpected (this one is tough! I'm still working on it)
4. Minimise switching of tasks in a day...focus on at most 2 topics to minimize "memory thrashing"
5. Better planning, squeezing time from between events, multi-tasking can help me do more, but beware of making more room just so that it gets filled up with other busyness...