Saturday, March 28, 2009

How To Use Microsoft Project: Task Type

One of the more confusing aspects of Microsoft Project is Task Type.  Task Type can be set to "Fixed Units", "Fixed Work", or "Fixed Duration" for each task.

How to Set Task Type

You can set task type in a couple ways:

1. If you select a task or tasks and go to task information (under project in the menu or right click and its there as well) you will find task type in the advanced tab.

ScreenHunter_11 Mar. 28 10.462. If you go to window and click Split when in the GANTT chart view, you get a Task Form at the bottom where you can set the Task Type.

ScreenHunter_12 Mar. 28 10.47  If you select all your tasks, you can set the Task Information for every task to the same Task Type – this will lead to less confusion when you are adjusting your plan because all the task types will be consistently set.

Effort Driven

There is also a check box (which is checked by default) that says that tasks are “Effort Driven”.  When this is checked, it is assumed that work stays constant even if you adjust the other two measures.  So for example, if you change a 40 hour task from 1 week duration to 2 weeks duration, project will keep the 40 hours of work but decrease the number of resources required to compensate (only 50% of a resource in this case).

This may not be what you want and I find particularly with using Fixed Duration having this turned off is highly desirable because want to adjust the work, not the units.  For example, what I want is to tell project, “I want to schedule this task with 1 person for 2 weeks” and have it calculate work to be 80 hours.  If I adjust the schedule to be 3 weeks, I want the work to increase by 50%.  Similarly, if I am working in Fixed Duration and I double the resources, I want the duration to stay constant and for the work to double.  This will only happen if “Effort Driven” is turned off. 

How Task Type Works

Any task can be adjusted using three measures: Units, Duration or Work.  Because each measure is dependent on the other, at least one of the other two must be impacted.  By changing the task type, you are telling project which measure you are going to adjust and which measure should be automatically re-calculated.  Below is a chart that shows how Project reacts based on the task type:

 

Field that you change Field calculated if the task is Fixed Units Field calculated if the task is Fixed Work Field calculated if the task is Fixed Duration
Work Duration is recalculated Duration is recalculated Units are recalculated
Duration Work is recalculated Units are recalculated Work is recalculated
Units Duration is recalculated Duration is recalculated

Work is recalculated

Basic Tips for Using Task Type Efficiently

Here are some basic tips to using Task Type efficiently and to avoid confusion:

  • Pick the task type that makes sense for you and use it consistently.  I tend to think in Duration with Effort Driven turned off first and what I want is to calculate the number of hours (and therefore cost) required to do the work.  Other PMs like thinking in work instead and want to adjust the schedule instead.  Pick an approach before you start and be consistent with it.
  • You can switch the task type without impacting your plan.  Therefore, feel free to change the task type for the specific scenarios below.

Scenarios to use Specific Task Types

Fixed Duration

I used Fixed Duration when I have a good understanding of the schedule and the team and I want to calculate cost/effort.  A good example of this is doing a plan for requirements gathering interviews.  I know that I have 2 weeks of interviews, 1 week of documentation and 2 days of client review and I know that I need a Business Analyst and a Technical Architect in each one at 100%.  Fixed Duration works really well because I can adjust the schedule really easily and the work effort is calculated for me.

Another good use for Fixed Duration is % allocations for overhead resources.  Project Managers for example tend to be used on an overhead basis for the duration of the project on a fairly constant basis.  If the project takes longer you will need more project management.  It’s also easier to think of assigning a PM at 30% to a project for the entire duration than to say, “I need 85 hours of project management for this project).  With Fixed Duration, you can simply assign the PM for the entire duration and adjust the % allocation and the work effort is automatically calculated.

Fixed Work 

A good use of Fixed Work is when you want to try and fit a fixed amount of hours into a fixed schedule.  By fixing the work, you can adjust the number of resources you need to impact the duration.  For example, let’s assume you have 1280 hours of work and you want to try and jam that work into a fixed 8 week period.  With Fixed Work turned on, you can set the allocation of resources to 400% in order fit the fixed amount of work into a duration you wish.

Fixed Units

I generally find that using Fixed Units is my least desirable option simply because in most real world scenarios adjusting the number of resources required is the most flexible option.

One scenario where Fixed Units might be appropriate is for department planning.  In a department, the number of fixed units is constant (the number of full time employees) and as a Director you want to know how much work your team can produce.  What tends to happen in these scenarios is the queue of work is constant and the duration flexes – you end up telling the poor person at the end of the priority list that their project won’t get done until next year.

In this case, setting Fixed Units would allow you to lock in the resource pool based on the size of your department and then adjust the work to calculate the resulting schedule.  Based on the schedule, you would then be able to tell your stakeholders how many projects can be done in the coming year.

I hope that provides some guidance on how to use this key function in Microsoft Project – I have found even very senior Project Managers do not fundamentally understand how Duration, Effort and Units work together and how to model them in Microsoft Project.  If you understand the conceptual framework and the rules that Microsoft Project uses, you will find that there are less errors in your plan, less confusion and less tearing your hair out when you find Project adjusts your numbers in ways you didn’t intend.

Sunday, March 22, 2009

Check Out the New Live Writer

As part of the latest Microsoft Instant Messenger update, there is a Live Writer tool now included as part of the Windows live toolset. 

ScreenHunter_10 Mar. 22 22.09

It’s free and having now written a couple posts with it, I can attest that it’s quite good:

ScreenHunter_08 Mar. 22 22.07

  • It has a single interface for editing blog posts but can publish to multiple sources, e.g. Blogger, Wordpress, Typepad, etc.
  • Editing using a real client is much easier than the Blogger HTML content editor.  I always found it frustrating to use it because it created some odd HTML choices and formatting mistakes.
  • Spell check uses the word spell check and it highlights your spelling errors immediately.
  • You can save a local draft so if you editing offline you can save your post and publish later.
  • Images and videos are inserted locally and only published at the end.  This makes it faster to create your post, fiddle with the images, add or remove them, etc. because you don’t have to do the upload until your post is finalized.
  • The tool has the ability to insert a windows live map. 
  • There are a number of plugins available online for insert other types of objects such as flickr pictures, silverlight streaming applications, files, facebook photos, etc.  The plugins insert the appropriate HTML into your blog posts for each type.

This will definitely make my life easier as a blog writer…thanks Microsoft!

How to Use The Fill Handle in Excel

One of the key features in Microsoft Excel is its ability to fill data based on existing values.  Excel is smart enough to extrapolate and auto-fill values based on your existing ones.

Click on the black box in the corner of any cell and drag.  Excel will fill the cells automatically.  The fill handler works both horizontally and vertically.

ScreenHunter_01 Mar. 22 21.36

Here are some tips on how to use the fill handle for values:

  • Type in a month in either full form (e.g. January) or abbreviated form  (e.g. Jan) and drag and Excel will fill in the subsequent months.
  • Type in a day of the week in either full name (e.g. Monday) or abbreviated form (e.g. Mon) and fill.  The filled cells will contain the correct days of the week in sequence.
  • Type in any value into a cell (e.g. 1, 2, etc.) and when you fill in with the same value.
  • Type in a sequence of values in cells, e.g. 1 in B2, 2 in B3, etc.  and select multiple cells and then drag the fill handler.  The cells will be filled in with the sequence.  This works just as well with intervals such as 2, 4, 6 etc. as well as 1,2,3.
  • If you hold the control key when dragging the fill handle, you will see a plus (+) sign and the value selected will increment by 1 in each cell.
  • If you right click on the fill handle, it pops up a dialogue where you can explicitly instruct excel how to fill the data.

The Fill Handle can also be used to fill formulas.  Here is an example:

ScreenHunter_02 Mar. 22 21.51

The product in c2 is a formula =A2*b2 and the sum is a formula A2+b2.  Now let’s assume that you have a series of values and you want to have the same formula repeated:

ScreenHunter_03 Mar. 22 21.53

If you select the cell with the existing formula you can use the fill handle to automatically fill down the right formula for the other rows.  It automatically figures out that as you move down rows it should adjust the formula so that A2 * b2 becomes A3 * B3, C4 * B4 and so on.

There is also another way to fill in the cells.  If you select the cell you want to copy and then select a region and paste, it will fill the values in the same way.  It again automatically adjusts the formula so that it makes sense based on the new row that it now occupies.  This works both horizontally and vertically.

ScreenHunter_04 Mar. 22 21.57

One last tip on filling – there are cases where you will want the value in your formula to not change as it moves from row to row.  Take this example:

ScreenHunter_05 Mar. 22 22.00

In this case, if you simply do a standard fill in Excel this is the result:

ScreenHunter_06 Mar. 22 22.01Why did this not work properly?  The reason is that Excel assumed that B1 * B3 should be B2 * B4 in the second row and B3 * B5 in the third row.  However, what we wanted is for the first number to stay constant and only the second row to change. 

The solution to fixing constants is to name them.  Named values in Excel do not change when filling.  To name a cell, click on the cell and then in the left box type in a name for the cell. 

ScreenHunter_07 Mar. 22 22.04

Then when you create the formula, use the name instead of the cell address, e.g. instead of B1 * B3 we will now set the formula to InterestRate * B3.  By using a named cell, Excel assumes these values are constants in formulas and doesn’t adjust them automatically.

Wednesday, February 18, 2009

Proposed ISP Tax Shows Canadian Content Producers Do Not Understand the Internet

Decades ago in Canada, funds were created to encourage television production of Canadian Content. These programs were funded by the cable companies and regulated by the CRTC. These funds were created to share "Canadian Stories" in a sea of American television content that because of their inherent scale could be produced easier and cheaper.

The CRTC is now entertaining a proposal to create a similar fund through taxation of ISPs (and therefore all Internet subscribers) to fund Canadian television producers so they can continue to produce "Canadian Stories" created by Professional Content Creators. This proposal is supported by industry lobby groups such as ACTRA, Society of Composers, SOCAN, etc.

These folks want to tax every Internet subscriber (e.g. practically everyone in Canada) 3% of revenue (which of course means the price will go up by 3% to compensate) from the ISPs that provide us Internet Access.
This proposal shows a complete misunderstanding of the difference between a regulated, limited, and centralized Television Industrial Complex model and the Internet - a fundamentally distributed, decentralized and long tail model of content distribution.

Here are some fundamental differences that these lobbyists fail to acknowledge in their proposal:

  • In the television age, the definition of "Content" was professional created, broadcast content. The assumption in this proposal is that Colin Mochrie, the CBC, and other CanCon stars own the culture and the MILLIONS of content creators on Facebook, YouTube, etc. in Canada are not qualified to tell their own stories.
  • In the television age, the definition of "Content" is VIDEO content. On the Internet, there is no limitation and content can be everything from maps, images, videos, flash, applications, etc. Content can also be a mix from a wide variety of sources - how do you regulate content creation when it is mashed up collections from all over the world?
  • In the television age, there were major barriers to content creators because of the limited shelf space. Canadians need a way to get on the air simply because they couldn't compete with American content producers. But on the Internet, this model makes no sense because anyone can put up a web site, the costs are cheap and the number of channels are unlimited. What is the barrier to making money on the Internet other that POPULARITY? There is a simple way for Canadians to support their own culture - visit the web site and support it through ad revenue like everyone else does on the Internet.
  • In the television age, exporting content to other countries was extremely limited because the distribution channels were controlled by cable channels in the country. The Internet has no such barriers - if Canadians want to share their stories they can gain an audience world wide without any restriction.- In the television age, there is no integration of "Application" and "Content". Monetization of content was through a single model - distribution broadcast supported through advertising. In the Internet, the two are mixed together and there are many monetization models available. The monetization mechanisms are also distributed, e.g. I can be creating "Canadian" content that is monetized through Google AdSense in the United States. The selling, re-packaging and syndication of content through dozens of channels is both an opportunity and a challenge for Canadian content producers to claim for themselves. But the solution isn't to bypass these channels and simply tax the consumer - this is just a return to the simplified television monetization model.
  • In the television age, the justification for this fund was that in order to compete with American content producers there needed to be funds to create a level playing field and encourage the telling of "Canadian Stories" because the distribution channel for content was limited both in capacity (number of channels) and revenue potential (only the top 10-20 television shows make the money). However, the Internet market is completely the opposite - the market is a long-tail, unlimited distribution channel and there are lots of examples where relatively small content distributors are making money by targeting micro-niche audiences by keeping their costs relatively low and providing a highly valuable target audience for advertisers or by providing content through subscription that funds the cost.

The CRTC is in the business of regulating traditional centralized content broadcasting and is therefore bought into the fundamental model assumptions of the television age. Canadian Television Producers who are in favour of this model seem to be wanting to keep their existing model and apply it to the Internet, because if they simply wanted to make money from content there are easier more direct Internet models available that do not require a tax on consumers. The Canadian Producers advocating for this proposal and the CRTC if it accepts it simply are trying to implement the old television age model and apply to the new Internet content model so that these folks do not have to migrate to a new way of creating, distributing, monetizing content. In addition, the entire proposal continues to question the fundamental value of funding "Professional Content Producers" as the bastion of Canadian culture when there are potentially millions of Canadians who are creating "Canadian Stories" themselves on a daily basis through blogs, Facebook, etc. Do we really need Gordon Lightfood, Colin Mochrie, the CBC, etc. to have a monopoly on culture creation when anyone in Canada can easily tell their own stories?

Saturday, February 14, 2009

Kincardine Cable TV Community Channel

I was up in Kincardine and had a major nostalgia moment. They still had the low resolution cable access announcements feed going - I haven't seen one of these in about 20 years!








I particularly love the last picture - low resolution announcement board has links to web sites in it....

For those who are young enough never to have seen one of these, here are some details:

  • The reason for the garish colours is back in the mid 80's, these systems were limited to about 4-16 colours depending on the system used. There are only so many look and feel options when your choice of colours is BRIGHT BLUE, BRIGHT RED, OBNOXIOUS GREEN, BLACK AND WHITE.
  • You'll notice that all the letters are capitalized. This was pretty common in early computer systems - the resolution was so low that trying to display lower case letters made them hard to read.
  • There was only one choice of font and it was always that big blocky font that you see here.

Maybe we should along with the rural broadband fund establish a government program to upgrade small towns cable access feeds so they can have access to those fancy TV guide scrolling ad versions we have in the big cities?

Thursday, January 15, 2009

Using Technology to Avoid Stealing Songs By Mistake

In 1960, The Chiffons published He's So Fine:



In 1970, George Harrison published the song My Sweet Lord:



In 1976, a lawsuit ended with Harrison having to pay over $500K in damages to the original song's publisher for subconsciously plagiarizing (ultimately, Harrison got the last laugh by ultimately buying the publisher).

Just recently, Joe Satriani has taken Coldplay to court for the same infringement for allegedly copying his original song If I could Fly.



So my question is, could there not be a technology solution to this problem? With online radio sites having matching algorithms based on wave analysis, chord progressions, etc. could there not be similar analysis done to create a checksum hash for every published song that if matched against a new song would be deemed too similar?

It would be a lot easier than relying on someone's subconscious, just purely random coincidence or some judge's interpretation of what music is to award royalties.

Or even better yet, we would go back to the days of Mozart, Bach and Vivaldi when musicians copied each other liberally and were able to advance their art without fear of reprisals from copyright lawyers.

Thursday, January 1, 2009

Applying the Software Development Life Cycle in a Web 2.0 Context

For the past 20 years or so, the "Software Development Life Cycle" has been the process for defining, designing, constructing, and deploying applications. Various methodologies for building software have evolved over time, e.g. Waterfall methods, spiral method, rational unified process, extreme programming, etc. that prescribe different processes for development of software. However, all of them regardless of methodology have some common basic assumptions that I believe have now changed in a Web 2.0 world. These basic assumptions are as follows:
  • Software development involves engineering code artifacts that implement some sort of requirements specification. In waterfall methods, the requirements are defined up front. In more iterative or agile methods the requirements are iterated through cycles. But in all these methodologies, the primary purpose of developing software is custom developing software based on these requirements.
  • The "Application" is a deployable, atomic set of artifacts that can be deployed through a series of steps to a particular environment. The "Application" is used by a client that engages with the application. Traditionally, the user of the application does not get to change or redefine the application except through very rigidly defined configuration mechanisms.
  • Software development historically has required a large amount of testing in order to ensure that a) there are no bugs in the software and b) the software complies with requirements. Software is tested before it is released to users.
  • Software development is done by a team of experts that understand how the software works, how it can be modified and how to manage the overall development cycle. Software developers and end-users of the software do not really collaborate on building the software - end-users consume the software as it is released.

In the media, the old traditional form of Push media is being replaced by user generated content, collaboration, and Pull from users. The distinction between producers and consumers has been blurred so that online news hubs become more like information radiators than centralized distribution points.

Software development, in my opinion, is going through a similar revolution to the mainstream media. It is happening in a slower fashion because the software "industrial complex" is still highly engaged in generating software through the traditional means and because it generally works especially for large enterprise applications. However, in certain spaces and where consumers of software are engaged, the traditional model of a software development team pushing out software that is consumed by a user is starting to break down.

In order to make my point, let me give you a few examples:

  • Software applications can be created via "Mash-ups" that allow end-users to combine existing application components into new applications.
  • Portal applications such as Microsoft SharePoint are blurring the distinction between application components and user modifiable objects. For example, a Document Library in SharePoint part of an application or is it a user object?
  • Cloud based services are now being released and combined in a variety of different methods.
  • Clients such as Microsoft Office 2007 are now sophisticated enough to serve as application development platforms in themselves. For example, a traditional "reporting application" can now be built quite easily using Excel 2007 pointing at a data warehouse.

In addition, users expectations have changed dramatically has Web 2.0 has encouraged them to collaborate, blog, share information and build their own customized spaces. When a 12 year old can over night create their own blog, organize a protest online, share pictures, integrate Google Maps, and add dozens of widgets to their personalized home page, the idea of waiting 3 months for the next software "release" by an ivory tower software team quaint at best and non-responsive at worst.

In the corporate world, IT departments are struggling with this challenge in application spaces that encourage collaboration and customization with end-users. Business users do not want to wait 3 months for a static report - they want a drill down BI tool that allows them to build their own "application" (whatever that now means). In the portal world, IT departments are struggling with how much control they provide their end-users to redefine the underlying structure of meta-data, document types, user profiles, etc. In the SharePoint world for example, its difficult to tell where the "application" stops and user generated content begins because the platform is designed to encourage modification and collaboration by office workers.

On the other hand, the risks and challenges that the software development life cycle has helped solve over the past 20 years have not disappeared because we have moved from a code centric, monolithic, and IT controlled software development cycle to a collaborative, distributed and user centric model:

  • How are changes "deployed" when an office user can simply make a change in production to a content type, a work flow, a user profile definition?
  • How are the impacts of changes "tested"? For example, I can change the layout of my blog, add widgets to it, etc. but can I really test those changes before they become visible to the world (in my blog software, I have the ability to "preview" which is sort of a test but not quite the same as a proper QA environment)?
  • How are application componentized when changes are done by potentially hundreds of users working collaboratively? What constitutes a "release"? For example, on Facebook, I create a Facebook Page that has a set of content, some groups, some events, etc. but there is no way to package these changes up into a deployable unit.
  • How are changes versioned and backed-up? I have this problem with my blog for example. If I make changes to my blog "application" through changing the layout, modifying the HTML, etc. there is no easy way for me to preserve these changes as a version. I cannot roll-back to a previous version either.

Software development methodologies have good answers to these challenges and over the past 20 years have matured to address these issues through test driven development, source code control, build management, project management, quality assurance, etc.

As an industry, we have a similar challenge to the mainstream media - how do we adapt these worth while processes so that we can continue to deliver high quality software to our customers while adapting to an environment where our users are going to be creating software with us in a highly collaborative manner? How do we recreate the software development life cycle for a Web 2.0 world?