Clarify. Simplify. Implement.
Working through a wide range of projects, our IT team has settled into a consistent project methodology: Clarify, Simplify, Implement.
Clarify: Work with key stakeholders to understand drivers behind the process. Question motives and key assumptions. Turn over all the rocks to see what lies underneath. (In traditional software terms, this is requirements gathering.)
Simplify: Relentlessly question, review and challenge the processes and solution being developed. Drive for consistency. Search for well-known models or applications you can copy. Don't be afraid to change basic assumptions, where simplicity can be enhanced. Always challenge the value of edge cases and try to eradicate them. Work hard to remove every single process, click, page view, icon, etc until you have something so simple that it feels right to everyone involved. (This is the primary value adding activity for IT.)
Implement: After the requirements are clear, and the solution distilled to its simplest form, start implementing. Do not start with a preconceived solution. Continue to loop through clarify and simplify while performing the implementation. (Use your preferred development methodology, provided it supports constant change and rapid prototyping.)
Tough love adds value
Consultants can gather requirements, and programmers can deliver code from anywhere in the world. But, tough love is only available from those you know and trust. This is the advantage and importance that internal IT teams offer.
External service providers make money through complexity and increased scope. It's in their interest to understand your desires, validate them and then do more work to deliver the wish list. IT needs to reject this model, and help prevent the organisation from becoming as complex as it constantly tries to be.
Simplicity is making hard decisions up front so users can save time and effort in every interaction for all time. Assumptions must be challenged. The status quo should not be accepted as always correct. Trade offs must not be avoided.
Tough love and simplification change IT from a human power tool into a true business partner who provides both leadership and support. Tough love is different to just being tough, it includes love. IT should never be a blocker and will occasionally need to be forgiving. IT should be open in communication and have the best interests of the business at heart.
Design reviews: Brutal refinement and pixel-perfect goodness
An essential part of Clarify, Simplify, Implement are design reviews. These form the ongoing basis for a loop of improvement beyond the initial pass of requirements gathering, simplification and implementation.
A design review includes the application/process owner, the key implementation team and a set of trusted peers. They systematically move through and challenge every process, screen, button, decision, layout and definition. Pixel alignment is important. Removing every excess user decision and superfulous design element matters. Entire pieces of the process or application may need to be redesigned or thrown out. Consistency is critical.
Design reviews are hard and tiring, but ultimately hugely rewarding. Project deadlines and a desire to move onto new problems make it hard to continually refactor your solution design and implementation. It's tempting to stop at good enough, when great is just around the corner. Hours spent discussing alternative user interfaces and nitpicking over definitions can seem like wasted or unproductive time, particularly when your not sure if anyone will notice.
Design reviews take good solutions and make them great.
Zero training
Every user is time poor. They have no interest or time for attending training sessions. Training is the first and biggest hurdle to adoption of your new system and process. While complexity exists and training is required, users can always reject or work around the process with a politically acceptable excuse - "It's too hard".
Our aim, through simplification, is to make people's life easier, reduce the burden on their time and remove all the excuses. The reward is adoption, engagement and relief that that finally it's been done the way everyone always thought (individually) it should be.
Staying simple
After launch, when everyone loves the new system because it just seems to easy, is when discipline becomes truly critical. Feature requests, small changes and extensions will flow from users and every single one "should be easy to add". The hard part is deciding which requests are worthy while ensuring that the system remains simple and consistent.
Clear, simple solutions challenge traditional project economics
With a robust process of clarification and simplication, two things happen:
Traditional enterprise software projects start with large, feature rich solutions that cover the complexity of features and organisational behaviour that appear to be "requirements". Clarify, Simplify, Implement refuses to engage in projects until the status quo has been challenged leading to changes or understanding.
For example, we recently set ourselves the IT procurement challenge that "it should be easier to buy something internally than it is externally". On our journey to achieving this, the obvious first step was inclusion of a shopping cart (we were using Amazon as a benchmark). But, when we saw it working we realised that using enterprise context (e.g. cost centres tied to individuals using single sign on) we didn't even need the complexity of a cart. One click ordering is now the default process.
Project economics and style change to become:
Small, simple projects are fast to prototype, easy to justify and responsive to business needs. Combining Clarify, Simplify, Implement with an iterative improvement process like the Continuous Application Release Cycle sets a journey of positive dissatisfaction and continuous improvement that will quickly change your organisation for the better.
Take the time to write short letters
Lack of time, politics and ego drive enterprises towards complexity. Complex solutions reflect our perception of the difficulty of our jobs, they reflect the important differences of every department involved and are an inevitable result of looking for quick wins by not challenging ourselves upfront.
As Mark Twain once wrote "I didn't have time to write a short letter, so I wrote a long one instead".
Unfortunately, most project teams take this approach, saving on delivery time and hard conversations and effectively hiding lifetime project costs in lost productivity, frustration and training courses.
Clarify, Simplify, Implement challenges this process and demands the writing of short letters. Users will thank you for it.
Here are the slides I presented at the Enterprise 2.0 Executive Forum this week.
Interested readers, may also like to see my detailed posts on the same topic:
Introduction
The Continuous Application Release Cycle is a simple process for providing predictable, stable releases in a rapid and sustainable way. It is not a detailed methodology for release planning, development or testing.
Agile methods, open source development and online applications (often in perpetual beta) have established the power of fast iterations and release of minor versions. Release early, release often! I've successfully used the Continuous Application Release Cycle with high velocity applications ranging from publically downloadable software (Sauce Reader) through to internal enterprise web applications.
The Continuous Application Release Cycle
Adopting this cycle brings certainty and momentum to end users while ensuring continuous improvement and low risk release management for developers. Developers move seamlessly from one version to the next, with only a small cross-over for bug fixing during the Beta period.
Release planning is a high level determination of the features and bug fixes that will be incorporated into the release.
Feature development & Bug fixing is the rapid development of wide-spread code changes to implement the planned features.
Design review & Feature freeze is a formal examination of the design and implementation of features for this release. Ensure they are neatly integrated into the application and do not compromise its integrity or simplicity. Build a final design / development plan to finish integration of the features, or delay their release until a future version.
Final development, Help & training and Bug fixing is a finalisation phase, with consolidation and review of the code base. New capabilities may be added to finalise features, but major surgery should be avoided. Help and training materials for new features are constructed in parallel.
Beta launch puts the application through standard test suites and launches to the Beta user group.
Beta testing & Bug fixing has Beta users installing, trying and testing new application features. Appropriate bugs may be fixed with careful control and testing.
Launch puts the application through standard test suites and launches to all users on production.
Production is wide-spread use of this application version. Bugs and feedback are collected for integration into the next version.
The CARC in practice
The length of the cycle varies depending on the type of application, but I've found that monthly releases work well in practice. The development phase lasts about 4 weeks, with 1 week of Beta testing before launch. Each version is in production for about 4 weeks.
The fast development cycle means each release has fewer changes, facilitating a short testing cycle and removing the heavy crunch that typically accompanies software releases. For developers, the key delivery date is the release to Beta testing. With experience, the release to production becomes increasingly routine.
Regular, planned releases keeps developers close to customer needs and allows rapid response to application problems or competitive features. End users enjoy a sense of momentum from the application, and become increasingly engaged as their suggestions, feedback and problems are quickly addressed.
Introduction
JCintra, our Intranet Wiki, has seen incredible levels of adoption and participation, with a positive impact on the way information flows in our organisation.
Over 18 months, JCintra amassed 23,335 content contributions from 239 (~70%) people. The number of contributions per month continues to increase steadily.
But, JCintra continues to function as an incredibly easy to use Intranet, rather than as a genuine Wiki. In fact, 85% of our 3000 pages only have one contributing author. (Interestingly, this behaviour occurs even at Atlassian, who build Wiki software as their business!)
This article documents our cultural journey so far, and outlines our ideas for driving the next phase of change.
Technical and Cultural Maturity
What does success look like?
Decisions about information sharing in organisations like Janssen-Cilag are complex. Some information should be open, but isn’t. Some information needs to be closed and controlled. Some ideas should be discussed in the open, while other ideas need to be carefully communicated.
Success is defined by what we do, not what we have the opportunity to do. Implementing a Wiki isn’t success, building an organisation that will take collective ownership and collaboratively edit content is. Technology creates opportunity for changes of behaviour and helps shift the conversation away from excuses (it’s too hard) to reasons (it’s too risky).
Frankly, at Janssen-Cilag, we don’t yet know exactly how we should be communicating and collaborating. But, we do know that the steps we’ve taken so far have improved communication, increased our flexibility and given people the power to run with ideas. We want to continue this journey, pushing more power to the edge of the organisation.
The Enterprise Collaboration Maturity Model
All knowledge work is either individual or group based, and it is always performed in an individual, shared or open environment.
The Enterprise Collaboration Maturity Model depicts these work models, and incorporates the cultural journey that enterprises take to reach each stage. Currently, Janssen-Cilag provides an open Wiki (high capability maturity) but primarily uses it as Groupware (medium usage maturity).
To continue our journey, Janssen-Cilag needs to become comfortable with the idea that published content is not finalised. Specifically, we need users to:
Successful Enterprise 2.0 style collaboration requires both technical and cultural maturity. While technology opens immediate potential, organisations must grow towards new patterns of usage and collaboration.
The two cultural barriers to collaboration
There are dozens of reasons and millions of excuses as to why people won't share knowledge; but they all fall within two areas:
These negatives cannot be eradicated, but they can be minimised.
Reducing additional work
Collaboration and knowledge sharing take time. The technical process takes time, but more significantly, wording your thoughts takes time.
Tools for collaboration must do everything possible to reduce the friction of contributing. It needs to be so easy to use, that you can literally laugh at anyone who tells you it is too hard (in a nice, let me show you, kind of way). In practice this means single sign on, one-click editing and instant gratification on saving. Hurdles like slow technology, login screens, workflow approvals or training kill collaboration before you even start.
The time taken to correctly phrase thoughts and distil ideas is unavoidable, but can be minimised by changing our expectation of shared content away from “finished product” towards “work in progress”. Publishing information early and often (rather than infrequently and completely) moves authorship away from essays and succinct conclusions towards sharing of insights and decisions. The ultimate method for sharing without increasing work is to move the work in progress into an open environment (share everything by default).
Policy opportunities exist to move (but not reduce) the work of sharing knowledge. For example, information is shared verbally on the condition that the recipient will publish it for wider consumption. He who asks, documents. A solution like this rewards the giver with time, builds knowledge on-demand and provides learning reinforcement for the recipient.
Reducing the personal risk of sharing knowledge
Collaboration and knowledge sharing increase personal risk by creating a published, traceable flow of inputs (My mistakes are permanently recorded!) and making past information less valuable than new ideas (What if they don’t need me anymore?).
Risk can be offset by increased rewards, such as recognition for contributions or performance objectives based around knowledge sharing. In practice however, these are hard to implement or judge.
In fact, most people are comfortable with publishing or sharing "finished product". At Janssen-Cilag we've seen this through high usage of news announcements and publication of documents. Unfortunately, most knowledge work is a constant work in progress without a clear end-point and thus never reaches the point of being shared.
The solution is to encourage content contributions that are finished enough to be low-risk publishable, but are not so big as to never reach completion. Encourage people to contribute to a flow of insights and decisions that are made as part of larger projects. Adding to the flow of information (I'm adding to the discussion) is far less risky than publishing final knowledge (I own the final decision) or changing existing content (I'm changing the company position).
Own the flow and the stocks will come
News announcements have been the most successful part of JCintra. Open for publishing by anyone in the organisation, they have replaced email for announcements ranging from major organisational change through to baby announcements.
Through this flow of news, JCintra has become the trusted source for the latest information. "Did you see the announcement on JCintra?", is not an uncommon question around the office. As a result, users also expect JCintra to have the latest policies and information. By owning the flow of news, we've created the trusted source for information stocks.
There are three critical information flows, each of which creates its own stock over time:
A focus on capturing the flow has many advantages:
Over time, the flow of decisions and insights washes over the organisation, helping each person refine their mental map and build a personal body of knowledge. When new items fit their mental model, they can be increasingly confident and aligned in decision making. When news doesn't fit their mental model, they can seek clarity or raise an area of concern.
Focus on owning the flow of information, then have the patience to watch the stocks gradually compile.
Manifesto for Collaboration Tools
Shamelessly stealing from the Agile Manifesto, I propose the following values for building Enterprise 2.0 collaboration systems:
(That is, while there is value in the items on the right, we value the items on the left more.)
We are building processes and tools to help with collaboration, but should never forget that the main thing is that people actually work together and talk to one another. We don't need to capture every conversation or every piece of knowledge, we just want to strengthen weak ties.
Training in systems is important, but only after we've done everything possible to design for zero training. In an enterprise, your Mum really is the end user; design for her! Always sacrifice features and power for ease of use. The minute you have to train people you will lose them to the "more work" excuse.
It's tempting to aim for tools that deliver exactly what people need in different scenarios. To always take tools that one step further to capture their exact requirements. In reality, people like to push and abuse tools that are comfortable, flexible and part of their every day work (e.g. email, Excel). Wiki's, blogs and search are great examples of simple tools that can be used for a myriad of purposes without needing a million customisations or extensions.
Finally, deliver solutions that meet an existing need. If you build it, they won't come. But, you can build it around where they already are.
Next steps for Janssen-Cilag
At Janssen-Cilag, our Wiki has settled into a steady pattern of news publication and simple intranet editing. It is well established and respected for these tasks. Our aim is to build on the strengths of JCintra, while expanding into new areas of knowledge capture.
First we will make internal blogging available to all employees. Links to new posts will be interspersed with news on the home page, creating a flow of ideas in the trusted location but not taking valuable attention away from the full content news items. The people directory will also have direct links to recent posts.
Second, we'll add a Twitter/Facebook style status capability to the people directory which has a history and can be updated via SMS. This is a powerful micro-blogging solution for our field personnel and will be integrated with the Office Communicator Note field. Recent status updates will also be incorporated into the home page news feed, but in a very lightweight way. (The Jitter screenshot shows our early experiment in this area, which we have decided not to launch but instead integrate into the people directory.)
Finally, we hope to expand our internal project management offering with something in the style of Basecamp, which can create a feed of project related milestone news for the home page.
Overall, the aim is to build on the strengths of JCintra by adding ideas and project milestones to the flow of information that washes past people on the Intranet home page. With time this will build a powerful stock but, most importantly, it immediately provides ideas and stimulation to drive interactions between individuals.
Conclusion
Successful Enterprise 2.0 style collaboration requires both technical and cultural maturity. Janssen-Cilag has adopted an open Wiki with the potential for collective ownership, but usage remains dominated by individual contributions to a shared space. This is reflected in the high usage of JCintra’s news column for announcements and the regular publishing of team and policy information.
To encourage an organisational shift along the enterprise collaboration maturity model, Enterprise 2.0 leaders should focus on capturing the flow of information. Over time, the flow builds not only a stock of searchable knowledge but also a reputation as the source of fresh ideas and trusted up-to-date content.
Building on the success of our Intranet Wiki, Janssen-Cilag plans to introduce internal blogging and personal status updates to encourage the flow of individual insights and decisions.
Note: Here are some of the articles I read while writing this post. Thanks also go to my team without whom this would all be theory.
Over the last few years, user experience has become my primary focus when building processes and systems. But, I never truly understood the importance of interface design until I read this post by Andy Rutledge.
Andy intelligently draws a metaphor where words represent content (what you are saying) and body language represents interface design (how you look as you say it). He also beautifully illustrates that a huge component of all communication is non-verbal, although it is less than the sensationalist 93% that people inaccurately extrapolate from Mehrabian's communication study.
What is your interface design saying?
Introduction
Janssen-Cilag is one of the fastest growing, research based pharmaceutical companies in Australia. It has more than 300 employees, split across Australia and New Zealand with around half based in the field. It is one of 250 Johnson & Johnson operating companies, which total about 121,000 employees across 57 countries.
In 2006, Janssen-Cilag completely replaced our simple, static HTML intranet with a Wiki solution. Over the 16 months since launch, it has dramatically transformed our internal communication and continues to increase in both visits and content contributions each month.
History of Janssen-Cilag's Intranet
Janssen-Cilag's previous intranet, InfoDownUnder, was a static HTML site, originally developed in 2001. Content was maintained using FrontPage, with only a handful of active editors throughout the company. IT was involved only to upload latest versions of content files from the development site onto the production server.
While some areas were lovingly maintained to a high standard, large sections of content were out of date. There was no search capability. Trust in the information was very low. News was distributed via email, not the web. The site featured excessive use of the blink tag, and New! icons highlighting content that was up to 3 years old.
Latent demand for change was strong.
Intranet requirements gathering
The culture at Janssen-Cilag is highly consultative and relationship based. As such, gathering information and buy-in is often achieved through a series of conversations and discussions, building a coalition of support.
Requirements for a new Intranet site were collected through 27 interviews with a variety of people from all levels of the business. Three themes emerged:
Each conversation varied widely in focus, but the format usually went as follows:
Pitching a Wiki to the business
With many years of experience building one of the first large scale completely open collaboration platforms for the web and then building heavyweight enterprise CMS systems for large organisations, I've personally come full-circle to the idea that the best collaboration systems are incredibly simple and open. Wiki's are a powerful starting point for any organisation, but latent demand at Janssen-Cilag created the perfect environment.
As such, I used the requirements gathering session as a chance to pitch the idea of a Wiki as the solution to our Intranet problem. After bringing the conversation to understand our content maintenance requirements, I'd talk through the Wiki approach and how it may work for Janssen-Cilag. My sales pitch went as follows:
In general, the response was incredibly positive. Predictably, the main argument against this system was fear of improper changes to content, particularly for information subject to regulatory control. I would counter this argument in two ways:
At the end, showing people around Wikipedia was an incredibly powerful way to seal the deal, particularly since they have often used it to find information in the past.
There were no major objections to trying a Wiki-style concept.
Implementing a Wiki for your Enterprise Intranet
We purchased, customised and launched a pilot Wiki Intranet within two weeks and with a budget of $11,000 AUD. This included all graphic design and single sign on integration.
After evaluating a wide range of alternatives including MediaWiki, Twiki and FlexWiki; we selected Confluence by Atlassian. Our main concerns were support for a hierarchy of pages, strong attachment capabilities, news features, LDAP integration, high quality search and a decent rich text editor.
Our customisation focused almost completely on usability. People shouldn't know or care that they are using a Wiki. All that matters is that they can easily browse, search and contribute content. (In fact, after 16 months, only a small set of Janssen-Cilag staff would think of our Intranet as a Wiki. To them, it just seems natural that Intranet software would have evolved to something this simple to use.)
Here were our implementation decisions:
Launch & user training
We started the new site as a pilot, launching as the source of information for a relocation of our head office. (Nothing drives traffic like the seating plan for a new office!) Information around the relocation was fast moving and changing daily for the two weeks between announcement of the move and our actual relocation.
Building on that success, we obtained executive approval to replace the existing Intranet. Over the next two weeks we worked with key content owners (most particularly HR) to show them how to create pages and migrate appropriate information. We made the decision to not automatically migrate any content, mostly because it was so old and trust in the existing intranet information was so low.
Our launch was timed with an informal head office monthly meeting, where around 100 people stand and listen to an update from senior management. We switched the site to live during the meeting, and had 5 minutes to present:
That launch presentation remains the only formal training we've ever provided on how to use the system.
Continuing training has been provided through short one-on-one demonstrations (we only show, we never do) and a detailed help section (I'm happy to show you now, but for future reference here is the help page).
Adoption, statistics & business impact
The adoption of JCintra has been remarkable. After only 3 months, 111 people had contributed more than 5,000 changes. After 12 months, we had 18,000 contributions from 184 people within the business.
Most significantly, our contributions per month has continued to grow since launch. People are engaging and collaborating more with time, they are not losing steam as you might expect.
To drive adoption, we've primarily focused on owning the flow of new information. Early on, we established a policy that all announcements must be on JCintra. When necessary, they may be sent via email in addition to posting as news on the Intranet. Today, announcements ranging from major restructures to new babies for employees flow through the news page without clogging up email inboxes.
Owning the flow of news has established JCintra as a trusted source for the latest information. This translates into an expectation that the stocks of information (e.g. policies) will be available and up to date. Own the flow and the stock will come.
Business information that was previously scattered in email (e.g. Business Planning presentations) is now collected into a permanent, secure online space. We have a growing reference and history of information to build on and make available to newcomers. Knowledge management, previously a big concern, has moved off the agenda for the time being.
Content ownership model
For many Intranet owners, the model for content ownership is a key point of focus. With JCintra, our philosophy (successfully so far) has been:
As a result, we've seen some departments embrace the Intranet in a big way, while others don't update content as much as we'd like. As expected, service areas of the business have been strong adopters, which means the main areas of Intranet content have been well maintained.
We've not yet adopted a formal content review process, but believe this will become more important in the next year of the sites life.
Keeping momentum & next steps
The primary barrier to continued success of JCintra remains the same as our initial barrier: encouraging a culture of collaboration and transparency. Some areas of JCintra have been highly successful in this regard, while other sections have never gained clear ownership or momentum.
JCintra works best when it is established as the source of truth for information and becomes the place where the work is done on a day-to-day basis. While ever the Intranet is a place that has to hold a published copy, it will remain as "extra work" and struggle in the competition for people's time.
Conclusion
Implemented with usability and simplicity as the key focus, a Wiki is a fast, cheap and highly effective way to run an Intranet. Users do not perceive our Intranet as a Wiki, with all the anarchistic overtones that brings. Rather, they see the simplicity and flexibility as a natural evolution of Intranet technology.
In a culture full of all the typical trust, transparency, workload and security concerns common to big companies; the simplicity of this system and its content ownership model cut through. Problems of driving collaboration and content updates remain, but they are exposed as the cultural and people problems at their heart since the technical and workload "excuses" have been stripped away.
Note: Our Intranet has evolved significantly from the screenshots above, which were taken from the time of launch to avoid business confidentiality issues in this public forum. The site now includes a wealth of content and tight integration with our data warehouse, CRM and internal operational systems. Read more in Building Enterprise 2.0 on Culture 1.0.
3 months after her birth and simultaneous notification to the Google Crawler for indexing, Elimena.com was still not showing up in Google's results (or other search engines for that matter). I was shocked it was taking this long, and had resubmitted multiple times.
In desperation today, I thought it might be related to the Javascript trick I'm using to show the Flash Movie Header as a link that doesn't require activation to use. Looking at the source code, I noticed this fatal tag on every page of the site:
being added automatically by the Blogger template tag:
I was confused, since my e-gineer blog, also powered by Blogger, doesn't add this when using the BlogMetaData template tag.
To fix this check the following Blogger setting:
If your blog is suspected as spam by Blogger, and they force you to enter a captcha code everytime you post, you can submit your blog for review by Blogger staff which should fix the problem.
If all else fails, simply copy all the code you need that is produced by the <$BlogMetaData$> tag and paste it into your template in place of the tag itself.
Introduction
Earlier this year we conducted a review of the cost allocation model used to charge our local operating companies for support centre services like helpdesk, IT procurement, server management, etc. This post outlines the model we came up with and draws key principles for any agreement of this type.
The key is to keep everyone focused on costs, not on cost allocations. (Cost allocation just shifts costs around.)
When allocating costs from a shared service, the key aims are:
The costs for a shared service can be divided into 2 components:
Infrastructure costs
Infrastructure costs should be completely separated from overheads and people costs. Examples of infrastructure include data transfer, rack space charges, outsourced server monitoring, etc.
Each infrastructure item has a total cost, which must be divided among the customers according to an allocation model that best represents the cost driver.
Example: Allocation of Infrastructure Costs
Data transfer into the data center for July cost $100. The allocation model for this infrastructure item is bytes transferred by each customer company. Foo Industries generated 75% of the traffic during July, while Bar Incorporated generated the remaining 25%. As such, the data transfer bill for Foo is $75 and Bar is $25.
Racks for housing servers in the data center are depreciated at a rate of $50 per month. Costs are distributed based on the number of servers used by each company. Foo has 10 servers in place, while Bar has 15. As such, Foo's rack charges is $20 for July while Bar pays $30.
Server monitoring is compulsory for data center servers and is charged at $200/server/month. This is billed directly to each company based on their servers in place so Foo pays $2000 and Bar pays $3000.
In the end, we have this equation to give the operating company cost for each infrastructure item:
ItemCostToCustomer = TotalCostOfItem x (CustomerUsage/TotalUsage)
People costs
People in a shared service spend their time on 3 things:
Each person working in a shared service has a specific cost. This will typically include:
Time spent on project work and ad-hoc tasks can be directly allocated to customers, but time spent on people management is harder to quantify. To solve this problem, we calculate the cost of time spent on people management and allocate it among all reports under the manager.
Example: Allocation of people costs
Alice is the manager of the shared service and spends 100% of her time managing people. She does no direct project work and does not complete any ad-hoc tasks. Her cost, including salary, building and equipment costs, is $100.
Alice has 5 direct reports, each of whom have 4 reports, giving a total of 25 staff in her team. Alice's cost is divided evenly among all 25 reports, adding $4 to the cost of each person.
Alice has no time to allocate among customer companies (she's done no "real work" afterall). But, her cost is effectively distributed by the work completed for customers since it is allocated to staff who do "real work".
Bob reports to Alice. His cost, including salary, building and equipment was $80. With the management allocation from Alice, his cost is now $84.
Bob spends 50% of his time on people management, 25% on projects and 25% resolving ad-hoc issues. Per the model, 50% of Bob's total cost of $84 is evenly distributed among his 4 reports ($42/4 = $10.50 each). The 25% project work ($21) and 25% ad-hoc work completed by Bill are billed to the customers directly.
Chris reports to Bob and spends all his time on ad-hoc tasks. His cost, including salary, building and equipment was $60. With the management allocation from Alice and Bob, his cost is now $60 + $4 + $10.50 = $74.50.
Of the ad-hoc tasks performed by Chris, 50% were done for Foo Industries and 50% were done for Bar Incorporated. As such, Chris's cost to Foo Industries is $37.25 and to Bar Incorporated is $37.25.
In summary, the allocation of people costs follows these principles:
It's only a model
As always, this model is an approximation of reality. It will never be perfect, nor should we aim for it to be perfect. It's important to remain pragmatic and remember that a lot of the small inconsistencies and errors will correct themselves. (Two slightly wrongs can make a right in this context.)
You'll need to think about how to handle events like extended sick leave or annual leave.
The key is to remember to keep all cost drivers transparent and controllable. Try not to let generic buckets like "overheads" or "maintenance" creep into the model.
Conclusion

After 6 months use on a team of 25 people divided among 5 operating companies over 2 countries, we've found this to be a simple, flexible model that has given us unprecedented insight and high level of control over cost drivers.
We're now dealing with the hard (and important) problem of seeking real process improvement and cost control rather than looking for temporary advantage by playing with cost allocations to get temporary local advantage.
Before the Web, the availability of information was tied to the ubiquity of the promotion medium. Today, all information is equally accessible1, but promotion can accelerate its distribution.
Before the Web, information was strictly divided into stocks (books) and flows (newspapers & magazines). Today, through the power of search flows are immediately converted into stock resources.2
Before the Web, promotion could only be used to maximise exposure through flows. Today, promotion is used to speed up information flow. Speeding up dissemination of your ideas allows you to set the agenda, frame the context and establish yourself as an authority. In effect, speed helps establish your flow as the stock resource.3
When executed correctly, promotion today provides far more potential for long term value than previous mediums ever enabled. Establish the context and conversation and you will become established as the authorative stock.
Footnotes:
Rather than use a typical image header for Elimena's site, I wanted to try something different and use a flash movie instead. Here are complete instructions on how to create your own...
All the ActionScript code required is in a single block at the bottom of this post, but don't be too hasty as it won't make much sense without the options and other info I've described.
Import the video into Flash (FLV) format
First you need a suitable movie that can be looped in some reasonable way (i.e. the first and last frames of the movie have a reasonably similar appearance). I simply bought a short video from iStockPhoto. I selected the large web size, which provides good movie quality at a width of 640px (just wide enough for an effective site header).
Using Macromedia Flash Professional 8 (just download a trial version to get started), I created and new Flash document and imported the iStockPhoto movie (File > Import). In the advanced import settings you can crop the imported movie to 640x200px and trim the timeline down to something that loops smoothly and keeps the size reasonable. This process creates a Flash Video file (FLV) that can effectively stream as a simple static HTTP served file.
After importing the movie, we must set the background Flash document to the exact same dimensions and position. First, select the main Flash document (click in the drawing area, but outside any objects including the FLVplayback object) and then click the Size button in the Properties tab setting the dimensions of the Flash document to match the movie (e.g. 640x200px). Second, click on the FLVplayback object in the drawing area, then edit the X, Y position of the FLVplayback object to 0, 0 (perfectly aligning it with the document).
At this point we have a simple flash file that will play the movie end-to-end once.
Prepare the Flash container for ActionScript code
Before doing any coding, we need to prepare the FLVplayback object. (These will make sense below.) Click the FLVplayback object inserted above and then:
Making your video loop
For continuous video, we need to both setup the FLVplayback object to loop and create a small fade effect to hide the jump from the last frame to the first frame. Unfortunately, and unbelieveably, there are no "make my movie loop" or "fade" checkboxes in Flash. Believe me, I looked for a long time in disbelief.
The ActionScript code below simply listens for the complete event on the FLVPlayback object and triggers the object to play again. This will cause it to loop around and around.
Using fade for a seamless loop transition
Unless you have a movie designed for seamless looped play, you'll most likely need to join the start and end together with a short fade sequence. This keeps the continuity of play, but hides the frame jump between the end and start of the movie.
Scarred by the lack of loop checkbox, but still optimistic I only spent half as long looking for the fade in and fade out video effects. Again, no such thing. To add fades to your movie, you need to add some ActionScript. Constant use of the onEnterFrame event leads to high CPU consumption (on my old laptop anyway, not so much on the brand spanking new desktop), so I brushed off my coding skills and put together something that achieves the effect with a very low CPU load.
The ActionScript code below catches the cue point events, using StartFadeOut to register an onFrameEvent handler that performs the gradual fade out and fade in of the movie loop. The EndFadeIn event deregisters that handler, reducing the CPU usage required to play the majority of the video clip. (I think this is a fairly neat & important trick that I didn't find used elsewhere.)
Linking the banner to your home page
All good site headers should link back to the home page. Still optimistic, I looked for the add hyperlink capability in Flash (which also doesn't exist). I then tried wrapping the Flash object in an anchor tag (also doesn't work).
The solution is to create a button in flash and use ActionScript to link to your chosen page:
on(release)
{
getURL("http://www.e-gineer.com", "_self");
}
Initially I thought this wasn't working either, as the link in the sample I copied was to an outside website which seemed to get blocked for security reasons in IE (silently) and in FireFox (with an error message that finally helped me understand what was happening).
Removing the "click to activate control" (Eolas patent) requirement
The final challenge is working around the Eolas patent. By default, your Flash object requires a single click to activate the control. This is very annoying when you actually want the whole object to act as a simple link.
The workaround to remove the activation click is fairly simple. Just create a Javascript file (e.g. header.js) that programmatically ites out the header HTML for embedding the Flash file. Here is example content of the Javascript file:
// Use external Javascript to load the object so it
// doesn't require the user to click to activate it.
// See http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/overview/activating_activex.asp
document.write('<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="640" height="200" id="Your Header Title" align="middle">\
<param name="allowScriptAccess" value="sameDomain">\
<param name="movie" value="/url/to/YourHeader.swf">\
<param name="quality" value="high">\
<param name="bgcolor" value="black">\
<embed src="//url/to/YourHeader.swf" quality="high" bgcolor="black" width="640" height="200" name="Your Header Title" align="middle" allowscriptaccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"/>\
</object>');
And then use this code to include it where you'd like the Flash header to appear in your page:
<script src="/url/to/header.js"></script>
The ActionScript code
I added all ActionScript code to the Flash document itself (there are many possible locations, this one seemed cleanest to me). Select the Flash document by clicking in the drawing area outside all existing objects, expand the ActionScript task bar and insert this code:
// This is the length of time at the start and end of the movie
// used for the gradual fade.
fadeTime = 1;
// The frames per second of the movie.
fps = 12;
// Calculate the alpha increment to use when fading in or out.
alphaInc = Math.abs(100*fadeTime/fps);
var listenerObject:Object = new Object();
// To make the flash movie loop, upon completion the movie
// is set to start playing again.
listenerObject.complete = function(eventObject:Object):Void {
video.play();
};
video.addEventListener("complete", listenerObject);
// To achieve the fade effect on each cycle (except when the movie
// first starts playing) we use an onEnterFrame event. Because of
// the high CPU load this causes, we use two cue points to set and
// remove a listener on this event as appropriate. EndFadeIn is
// set 1 sec after the start of the movie and StartFadeOut is set
// 1 sec before the end of the movie (These intervals must be the
// same as the fadeTime setting above.
listenerObject.cuePoint = function(eventObject:Object):Void {
switch (eventObject.info.name) {
case "StartFadeOut":
// We are near the end of the movie, so register the onEnterFrame
// listener which will control both the fade out and fade in tasks
// as the movie loops back and until the EndFadeIn cue point is reached.
video.onEnterFrame = function() {
if (video.playheadTime<fadeTime) {
video._alpha += alphaInc;
}
else if ( (video.totalTime - video.playheadTime) < fadeTime) {
video._alpha -= alphaInc;
}
else {
// Shouldn't be needed due to cue points, but just in case.
video._alpha = 100;
}
}
break;
case "EndFadeIn":
// We have faded in completely, so set the alpha to 100 for
// certainty and remove the onEnterFrame listener for the time
// being.
video._alpha = 100;
video.onEnterFrame = null;
break;
}
}
video.addEventListener("cuePoint", listenerObject);