poniedziałek, 17 grudnia 2007

Preparing for Prince2 exam

About Prince2 exams
Prince2 stands for PRojects IN Controlled Environment and it is non-agile type of project management methodology. It bases on customer-supplier pair, who wants to make a business (represented by business cases) in a strictly formalized way, to avoid some possible misunderstanding or potential conflicts. The methodology operates mostly on customer side and it is optional for supplier, who may use different methodology (even agile).

Prince2 was financed, registered and developed by British governmental organization Office of Government Commerce (OGC). The courses, exams and materials are provided by APM Group. There are two exams to certify the knowledge in the area:
Prince2 Foundation – 1 hour long multiple choices, just to prove you may take a part in projects, 50% good answers are enough and 99% candidates pass
Prince2 Practioner – 3 hours long objective testing multiple choices, to prove you may run and manager projects, 50% good answers are enough and 75-80% candidates pass
More about exams details - here.

The interesting thing is that many companies offering authorized Prince2 courses refuses “just exam” option, even when it is not against the APM Group rules. If you are willing to take the self-learning path, probably you will need to use British Council. If it is not an option, contact APM Group directly and remember to choose the examination language ;)
More about taking exams - here.

About Prince2
It is focused on processes and documents flows maintained within 3 main folders for project, each stage and quality. Management is split into 2+ levels (above Project Board there is Company or Programme management, but it is outside Prince2 scope):
  • Project board – taking strategic decisions, before-and-after stages and when project manager reports exceptional situation (beyond established level of tolerance). Its members must represent main 3 interests – customer, supplier and business.
  • Project manager – taking daily tactical decisions
  • Team leader (optional) – may take over part of project manager duties especially if some specialized (eg. technical) teams takes a part in a project

Prince2 consists mainly of 8 processes (flows), 8 components (key elements used in flows) and 3 techniques (important approaches across all processes realized with use of components). The methodology is though scalable and the minimum is 2 level organization (board and manager) and 2 processes (initialization and acting).

The Prince2 is a brother of PMBoK methodology. The main difference is though that Project Manager Body of Knowledge (PMBoK) answers the question what PM should know, and PRINCE2 answers a question what PM should do.

Processes
Detail list of all sub-process you may find in number of places like english or polish wikipedia. The scope of the paragraph is to show the boundaries of the processes and linkages between them.

· Starting up a project (SU) [Uruchamianie Projektu/Przygotowanie Założeń Projektu (PP)] – it is about organizing Project Board [Komitet Sterujący] and nominating Project Manager (creating Organization component) and preparing documents for first strategic decision
Input: Project Mandate [Zlecenie Przygotowania Projektu] document
Output: Project Brief [Podstawowe Założenia Projektu], Project Approach [Formuła realizacyjna], Initation Stage Plan (IP) [Plan etapu Inicjowania projektu (IP)]


· Directing a project (DP) [Strategiczne zarządzanie projektem (ZS)] – that is about taking strategic decisions by Project Board; they are always taken when one process/stage finishes and next is about to begin OR if Project Manager request exceptional situation and wants to put into play the Exception Plan
Input: Output from previous stage and plans for the next one from PM
Output: Decision

· Initiating a project (IP) [Inicjowanie projektu (IP)] – when SU is just the general approval to work over vision of the project, IP is about the detail preparation for project realization split into one or number of management stages (they may be parallel to operation stages). It is about quality, risk register, business cases, controls and setting up documentation flow gathered at the end into one key Project Initiation Document. It includes also planning the basic budget plus changes and reserve budgets.
Input: SU [PP] input and permission from Project Board (DP1) [ZS1]
Output: Project Initiation Document [Dokument Inicjujący Projekt]


· Controlling a stage (CS) [Sterowanie Etapem (SE)] – As mentioned above the realization of the project is split into one or many management stages. Within the stage the full responsibility is delegated on PM, who fully manages tactical decisions and optionally he may delegate his responsibilities on team leaders. The process is about all the actions linked with authorizing and acceptance of performed work packages (1,9), controlling the project progress (2,5), registering and managing issues appearing during a project (3,4), reporting to project board (6), small (7) and big (8) crisis management depending if the problem is going out of established tolerance scope or not.
Input: Project Initiation Document and output from previous stage (if any)
Output: Realized set of work packages within controlled time and budget


· Managing product delivery (MP) [Zarządzanie Wytwarzaniem Produktów (WP)] – Prince2 is products based planning. The management products may be split into the specialized products, which may be realized outside the company. The process is mainly about dealing with such a situation. It is a very simple process consisting off three parts – accepting (1), executing (2) and delivering (3) work packages. It is the lowest possible in Prince2 acting level - doing the thing.
Input: CS1 [SE1] work package authorization > (1)
Output: 2 > CS2 [SE2] project progress 3 > CS9 [SE9] work package acceptance

· Managing stage boundaries (SB) [Zarządzanie Zakresem Etapu (ZE)] – When “Controlling a stage” process is coming to the end and a new stage is planned this process is run as a preparation for new stage including updates of project plan, business case and risk register. The result of it is Final Stage Report and plan for the next stage (small IP process), which is presented to Project Board for acceptance. The process is also used for crisis management if some significant changes to the base plan are necessary (the path CS8>SB6>DP3)
Input: Current project documentation
Output: Final Stage Report, plan for the next stage or input for “Closing a project”


· Closing a project (CP) [Zamykanie Projektu (ZP)]

· Planning (PL) [Planowanie (PL)] – planning is unique process as it is a parallel thing happening in the background through the whole project life cycle. This is mainly about documentation review and keeping it consistent. It includes products management, configuration management, schedule, risks register etc. It is especially used at sub-processes SU[PP]6, DP6 [ZS6], IP2 [IP2], MP1 [WP1], SB[ZE]1,2,6
Input: Various
Output: The project plan

1. Prince2 process flow
8 components:
  • Business Case [Uzasadnienie biznesowe]– The justification behind the project.
  • Organization [Organizacja] – The way in which the personnel involved in the project are structured.
  • Plans [Plany] – Documents describing what the project should accomplish, how the work should be carried out, when it should be carried out and by whom.
  • Controls [ Elementy sterowania] – The way in which the project manager and project board should exercise control over the project including the things like tolernace, reports etc.
  • Management of Risk [ Zarządzanie ryzykiem] – The way in which the project should approach and manage risk. PRINCE2 defines a risk as uncertainty of outcome, which may be either a positive opportunity or a negative threat. Enlisted risks are analyzed and then, they are managed in one of 5 ways – prevention, reduction, reassignment (for example on the external company eg. insurance), acceptation, planning the reserve budget in IP process.
  • Quality in a Project Environment [ Jakość w środowisku projektu] – The way in which the project should ensure that a quality product is delivered. Prince2 does not specify details and it relays on external standards – especially the once already used by the customer or supplier.
  • Configuration Management [ Zarządzanie konfiguracją]– The way in which the project's products are identified and tracked including versions management.
  • Change Control [ Sterowanie zmianami] – The way in which the project manages any changes to specification or scope of its products. Benefits/Savings versus risk,cost and time.

3 techniques

  • Product Based Planning – the technique of planning based on defining the products, establishing their hierarchy and than the relations between them – product flow diagram. Based on this information the plan is created including the schedule, quality and risks.
  • Change Control – the technique of registering and taking decisions about the planned changes including analysis and granting permission plus planning Changes Budget in IP process.
  • Quality Reviews – how the quality assurance should be performed on a regular basis, in order to provide the planned quality level

Prince2 Maturity Model (P2MM)
As Prince2 is scalable solution and many companies are willing strongly to get Prince2 label for minimum cost, many companies suffer PINO (Prince In Name Only) syndrome. OGC develops lastly the maturity model as the remedy for this, which defines 5 levels:

  • 1 Initial Does the organisation recognise projects and run them differently from its ongoing business? (Projects may be run informally with no standard process or tracking system.)
  • 2 Repeatable Does the organisation ensure that each project is run with its own processes and procedures to a minimum specified standard? (There may be limited consistency or co-ordination between projects)
  • 3 Defined Does the organisation have its own centrally controlled project processes, and can individual projects flex within these processes to suit the particular project?
  • 4 Managed Does the organisation obtain and retain specific measurements on its project management performance and run a quality management organisation to better predict future performance?
  • 5 Optimised Does the organisation run continuous process improvement with proactive problem and technology management for projects in order to improve its ability to depict performance over time and optimise processes?

APM Group among others, provide the maturity assessment to define the existing level of organization maturity and prepare the action plan to improve it for future (most of companies offering authorized Prince2 trainings does it as well).

Resources
„Understanding Prince2” Ken Bradley (polish version)
Managing Successful Projects with PRINCE2 (polish version)
NOTE! There is a newest edition of these books, which you may buy in AMPG shop.
Polish and English wikipedia
Sample exam questions

PS.
I have just passed the Prince2 Foundation exam - happy Christmas ;)

PopFly - mashups

Popfly is the mashups and web page creator service published by Microsoft at November 2007. It seems like the answer to the Yahoo!Pipes service and as that solution it does not require from you to install anything – you may do all the tricks straight from your web browser. Pipes seems to be the on-line version of Data Transformation Services concentrated more on processing text data, when Popfly, is focused on the visual data like maps, photos and videos.

1. Yahoo!Pipes editor

Microsoft truly surprise also with the freshness and richness of the GUI. It is very visible that a lot of effort was put to create moving effects (based on Silverlight), which does not shade the functionality, but causes that you truly enjoy to play with solution. I love to tickle the drill down menu (like the tutorial).

2. PopFly - link two blocks

3. PopFly - specify linkage details

4. PopFly - final effect


Popfly is not only about the fireworks, but it truly provides the big number of available blocks. When there is opened option to play with picture galleries you may not only put them on maps (why there is no Google Maps? J ), but there is a wide range of various gallery displays starting from the simple one like ImageFader or PhotShow and closing on more advanced one like Carousel or PhotoSphere.
5. PopFly - Picture sphere


As far as you play just with couple of blocks, you may easily link particular metadata and the range of capabilities is truly inspiring. The part of the demo showing GeoNames is a good example.

Furthermore Popfly is not just about mashups, but it also provides the web page designer tool, with number of templates. It seems like that is a way how the creators wanted to popularize the solution and that is way you may even put there the mashup editor!

Popfly has a big chance to become popular and even now it is surprising how many new non-MS objects are available. It happens so, because the solution allows you to create the rich content without writing the line of code and I am sure that in short time it will appear in number of web pages. Furthermore, it is a also the interesting playground for the developers as well. You may put your JavaScript snippets straightforward within the IE or you may see your projects within Visual Studio! Furthermore, you may also see your friends projects and if you are allowed you may play with them!

Popfly is a beta version, but surprisingly I could not blow it out (I admit I did not try it too hardly as I was busy playing with all the toys J ). There is just couple of small, annoying things like most of available services are strongly linked with US localization. Is it though the challenge for EU developers?!

poniedziałek, 10 grudnia 2007

Plaxo 3.0 Beta

Mood: First day at work after the holidays ;)

There is quite many social national and international social networks. I use the most often LinkedIn as the most popular one and also the one, which I enjoy. I have some accounts in the other(s), but I visit them just once per a month or couple of months, when I get some invitation from them. I have made lastly the exception to have a closer look at Plaxo and I must say I have been positively surprised.

Unlike LinkedIn, which is turning more into hiring market and Question & Answer services, the Plaxo has the aspiration to become the integration/synchronization bus, which allows to track humans activities across all the existing services via Pulse. This includes not only the Social Networks, but also Photo Sharing, bookmarking, bloginning etc.


Everything in one place, as far as the service base on the open standard! With the pulse stream service you keep the information about all the actions/changes, which happened among your social network in the area – something like mega RSS :)

Some of these things are actually similar to LinkedIn functionalities, but with the fresher approach. For example… Instead informing you that your firend X get 5 new connections (LinkedIn), it says that your friend X connected to person Y. Furthermore, you do not need to know the email address of person Y or prepaid SendIn Email service (LinkedIn) to invite the person to your social network. The other example are groups, which are not so restricted like in LinkedIn – generally everybody may establish it for free and communication possibilities within it are much richer.

Actually Plaxo has the aspiration to become the key service to integrate not only all your contacts (professional, personal and family), but also the other Outlook type of information like Calendar, Tasks and notes. The sample approach of how it is achieved for calendar events you may watch at this demo. Unfortunately the Sync with LinkedIn is free, just for first 30 days :( Later you will need to pay 50$ per a year.

It is also visible in some moments that the service is still in beta version, when it frozes once per a while on loading the data…

It provides also the cool Outlook plugin. As Plaxo is different from LinkedIn, it provides within its toolbar mostly the synchronization options, but there is also "Send eCard" thing. Within a package you get also the signature editor, which allows to create the nice footer to your emails. What is not so easy to do within Outlook, is much easier with Plaxo wizard. Futhermore there a cool feauture next to each email, which allows you to do couple of actions related to person, who send you the email. Again, except the standard one like "Invite" or "send eCard", there is "Google [the person]" ;)

Plaxo is definitely interesting company and I am looking forward to see its further grow!

piątek, 30 listopada 2007

CardSpace xor OpenId - trends

Mood: My skis are packed, holidays incoming!

About CardSpace
CardSpace (formerly “InfoCard”) is the solution introduced within .Net Framework 3.0 side by:
- Windows Workflow Foundation (WWF)
- Windows Communication Foundation (WCF)
- Windows Presentation Foundation (WPF)
It is Microsoft’s standard for authentication and digital information transport. MS did in here 180 degree turn. Predecessor, Microsoft Passport was central type of the solution, where Microsoft severs possessed all the information about authenticated users. It did not become popular outside Redmond servers. Now, the user is the one who possess the information and the one who decides which information (Information Card) from his personal PC are passed to which web site. CardSpace is so the distributed solution, where MS provides just the standard of exchanging data and it has much bigger chance of success.

How it works, it is described in details on many, various pages to name just the one.

Fig1 – CardSpace model
If you know polish, you should also read this.

Personal Information Card – first steps
CardSpace defines two types of Information Cards:
- Personal Cards, which contains the standard, defined by MS set of information
- Managed Information card (use the package if you want to play with them)
At the beginning it is suggested to play with Personal Cards and install your personal one like it is described in here. Important note is though that you do not need Vista and it is working also for XP SP2 and Windows 2003 SP1.

You may register your card in WindowsLive or MyOpenId. MyOpenId is the interesting authentication mid-service for number of other web portals controlling your “sign in” action there with one assign id. After you sign in on these services for the first time, you are transferred to MyOpenId page and you may decide about your nickname there plus you are asked if you want to allow the action forever, once or deny it.

Fig2 – MyOpenId service

Nevertheless, after registration in both services you may transparently get to WindowsLive service, but MyOpenId will require from you sending your Personal Information Card during each Sign In action! The second situation is probably due to other model and high security level as any changes in MyOpenId affects the way of accessing number of other.

After these and the other actions you may always check usage history of your card.

Fig3 – History of Personal Information Card

CardSpace enabled Web page
When you want to create your own web page, which is CardSpace enabled (like MyOpenId) there is couple of tricks like:
- You need to create and install your some “X” High Assurance certificate issued by “Y” CA to enabled SSL (*.pfx file)
- Add “Y” CA certificate into list of Trusted Root Certificate Authorities (*.sst file)
- Specific page for choosing, displaying and registration the Personal Information Card
- Authentication mechanism for your page
All these things are described in details in couple of places, just to name one.

Further more Fireworks 3.0 (likely) supports CardSpace.

OpenID
The other standard on the market is OpenID by OpenID Foundation. You may get and use your OpenID in various services enlisted on the page. OpenID is more widely distributed standard than CardSpace, but… Microsoft is not willing to compete with it, but they has announced they are willing to integrate! Furthermore myOpenID mentioned above seems to be already the service integrating both possibilities CardSpace and OpenID.

If you are willing to use the standard you should visit the OpenID source page (OIDS), where you find all necessary downloads (documentation is not available though) and information about on-going projects. Generally there are two ranks of participants:
- OP : OpenID providers (the plan is to have at least one per country, but the coverage is currently quite poor) – it is counterpart of MS’s IP
- RP : Relying party (the users of OpenID basing on OIDS license – for example web site owners)
The whole idea seems to be a good, open campaign to organize chain of trust between the identity providers and web sites owners, to avoid the uncommon phishing attacks like the one described in here. There is quite intriguing business model presented by the organization:

Fig4 – How OIDS works

Future
It seems like OpenID is a step forward CardSpace as it starts to build already its net of providers, users and partners. If you write in Google “How to become Identity Provider”, among 10 first findings, there is no information about CardSpace or any other Microsoft service, but there are two linkages (VeriSign and Public OpenID providers) linked directly with OpenID enterprise. If there is not some visible promotion of Information Card providers the whole idea may end in a similar way to Microsoft Passport – it will be used mainly on Microsoft pages J

The other problem is that there is not too many visible places where you can get the Managed Information Card. Even the one, which you can find on the web does not work often, like the one. Furthermore even basic Personal Information Card does not work in some web services, like SignOn. Funny thing is that it works for some people or it worked in the past. Of course, the error might be (and probably is) in web site, but annoyed non-techie people may blame CardSpace.

The interesting option though for Microsoft is to provide “presentation layer” and use the OpenID as a “transport layer”. As there is cooperation planned for both and myOpenID already goes in that direction it is quite possible that future Windows (Vista) user my authenticate with CardSpace to get widely distributed and popular OpenID in the network.

piątek, 23 listopada 2007

Badmail coding adventure

Mood: Saturday party - heeeeaaaar I come !!!!!
Soundtrack: "Monkey dance" remixed (no comments)

Introduction
In one of the projects, we had a problem to ensure that the sent email, was received. As it is easy to guess there is number of reasons, why the thing may fail and one of the most obvious reasons is the wrong email address. The standard SMTP mechanisms does not provide any solution as it is assumed that is more Mail Server problem, than a protocol itself. I use the standard IIS SMTP preconfigured in well known way, but there is still couple of ways, how you can deal with a problem.

First of all you need some simple application to send the emails with use of SMTP service. To save the time you may use one of the application available on the web again, like the one. Then there are following options…

Custom headers
There is quite cool service on the web describing how the System.Net.Mail library works and at one of the paragraphs describes that

By adding custom headers, we can tag email messages with information that may not be visible to the end user, yet still might be important to us. This is especially useful in tracking bounced emails.

Well this is pretty close to what one need. Adding invisible header and reading it is not a problem with one exception… Where will we get the information that the email is bounced?

Badmail
This is a specific folder configurable in Messages>Badmail directory (by default C:\Inetpub\mailroot\Badmail), where all non-send emails are delivered after the predefined number of unsuccessful tries. You may easily test it sending the email to non existing client and reseting IIS service – the email will appear in Badmail directory immediately (usually you must to have a while).

Now, each bounced email will generate 3 files in fact:
- BAD mail which is the bounced email packed with leading message and delivery status
- BDP, which contains binary information related to the file
- BDR, which contains information about why the file was not deliverable

In fact what we need is the BAD file analysis – the plan minimum is just look for some unique name of custom header and check its content defined during sending the email as the error message ready to display.

Well… that is not elegant solution, so it is much better to parse fully the BAD file.

MIME reader
Lastly, on CodeProject there was released .Net POP3 MIME Client library, which is ready to use library – plug & play. You just need to make one small change in MIMEReader library and change one of the conditions in ParseBody:

//Parse a new child mime part.
[…]
else if (string.Equals(_entity.ContentType.MediaType, MediaTypes.MessageRfc822, StringComparison.InvariantCultureIgnoreCase)
&& ((_entity.ContentDisposition == null)
string.Equals(_entity.ContentDisposition.DispositionType, DispositionTypeNames.Attachment, StringComparison.InvariantCultureIgnoreCase)))
{
[…]


Now you are ready to create your own function to parse all bad files from bad folder…

public static ArrayList GetShortListOfBadmails(string badMailFolder)
{
ArrayList result = new ArrayList();

//Get all BAD files in Bad emails folder
System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(badMailFolder);
foreach (System.IO.FileInfo f in dir.GetFiles("*.bad"))
{
System.IO.StreamReader s = f.OpenText();
string[] strArr = StreamToArray(s);

MimeReader mimeReader = new Net.Mime.MimeReader(strArr);
MimeEntity mimeEntity = mimeReader.CreateMimeEntity();
//MailMessageEx mimeEmial = mimeEntity.ToMailMessageEx();
/*
* Children[0] is the leading message (text)
* Children[1] is the "Reporting-MTA: dns;akoszlajda-lap.pwpw.pl" message (delivery status)
* Children[2] is the email which was supposed to be sent (rfc822)
*/
int i = 0;
bool rfc822Found = false;
for (i = 0; i < rfc822found =" string.Equals(mimeEntity.Children[i].ContentType.MediaType,"> 0))
{
MimeEntity nonSentEmail = mimeEntity.Children[i].Children[0];
try
{
string strErrorDate = mimeEntity.Headers.GetValues("Date")[0];
string strTo = nonSentEmail.Headers.GetValues("To")[0];
string strEmailDate = nonSentEmail.Headers.GetValues("Date")[0];
string err = strErrorDate + " - Mail wysłany do " + strTo + " " + strEmailDate + " nie został dostarczony";
result.Add(err);
}
catch
{
//if there is lack of the information do not do anything
}
}
s.Close();
}

return result;
}


Other option
Optionally the problem with bounced emails may be send to specified email address and you may parse the emails there using the .Net POP3 MIME Client library, but you must somehow filter that email is the report about bounced email. That may be a problem.

Conclusion
The solution is very narrow and it is rather the proof of concept. There are is a number of other reasons why the email is not delivered (like the target email box is full) and the solution was not tested with Microsoft Exchange, but there should not be a big difference as the system has also Badmail folder mechanism.

On request, the zipped solution may be provided.
PS.
I know that there are some significant obstacles with Badmail installation on Windows 2003 using standard SMTP! I am not quite sure if it is impossible or there is some specific workaround.

sobota, 17 listopada 2007

Domino Day 2007 - behind the scene

If you ever though you have taken a part in a big project - have a look at this. This year the show happened at 16.11 in special 9500 m2 big building space. So far the list of records was...

Year Details: Where: Toppled:
2006 Domino Day: Music in Motion Netherlands 4.079.381
2005 Domino Day: Theatre of Eternal Stories Netherlands 4.002.136
2004 Domino Day: Challenge Netherlands 3.992.397
2002 Domino Day: Expressions for Millions Netherlands 3.847.295
2001 Domino Day: Bridging the World Netherlands 3.540.562
2000 China & Japan & South Korea China 3.407.535
2000 Domino Day: Reaction Netherlands 2.977.678
1999 China & Japan China 2.751.518
1999 Domino Day: Europa ohne Grenzen Netherlands 2.472.480
1998 Domino D-Day: Visionland Netherlands 1.605.757
1988 Europe in Domino Netherlands 1.382.101
1986 KLM Domino World Record Netherlands 755.836
1984 Team Klaus Friedrich Germany 281.581
1980 John Wickham and Erez Klein Japan 255.389
1979 Team Alistair Howden New Zealand 255.000
1979 Team Michael Cairney UK 169.713
1979 John Wickham and Erez Klein USA 135.215
1978 Team Bob Speca USA 97.500
1977 Team Michael Cairney UK 33.266
1974 Team Bob Speca USA 11.111

And this time first and 4th builder challanges failed and mostly because of that the final score was just (!) 3.671.465. Some of 90 builders (20 from Poland!), who set up all together around 4.500.000, did not see ANY effect of their hard, 2 months long work!

Actually there is the whole Weijers Domino Productions company, which is dedicated mainly to make the show once per a year and broadcast it around the world. In 2006, they gathered 85 mln watchers in front of TV. In the company, there works 17 people (builders are gathered just for 2 months - they work just for fun) and they are splitted into the departments - management, domino design/physics/production plus ... domino development preparing the projects for show with usage of dedicated software solution. You can have a look how the sample project is created. Starting from it imagine, how much work had to be done to make this master plan for Domino 2007.

Did you took ever a part in such a big thing?

czwartek, 15 listopada 2007

fxCop story

It is quite often, that companies posses their own “Rules of coding” document like the one from Philips, which is more or less the compilation of documents available on the net. I strongly suggest also reading "Framework Design Guidelines", which is my bible in the area. One thing is to write the paper and the other is to have it truly implemented. Some companies have the process established that none code may be checked into repository without the code review performed by the other developer, but that is open issue is if this process ensures that all rules are always followed and exceptions from obeying rules are registered. That is why, it is always nice to have the cyber cop, who will check once per a while if codes in your repository follows the rules established in written documents. The cop has even a name on this t-shirt and heeeeeaaaaar heeeeee issss - fxCop.

Each project is different and each time you must select, which rules will be used. I think that the best way to deal with the issue is the following:

1. Create fxCop project
Get all dlls and exes which will be analyzed and add them in target section. Analyze them and save the whole project.

2. Filter sets of rulesFor example, if you are not planning to localize your software you do not need Globalization Rules at all. In similar way, if you do not have the legacy problem, you probably do not need the Interoperability Rules.

3. Filter rules
Check each rule. More errors is in rule, in more details you need to analyze what exactly the rule is about. In some situation fxCop provides you the link directly, in other situations you must look at help or ask MSDN manually about the rule. You will find quickly that some rules are useless for you like (for me):

  • EnumsShouldHaveZeroValue – we use enums just internally and they are not public
  • AvoidNamespacesWithFewTypes – the project is at early stage and further extensions are planned shortly
  • MarkAssembliesWithClsCompliant – we do not need to be compliant with CLS

And some of them are golden one (for me):

  • IdentifiersShouldBeCasedCorrectly – priceless thing, which usually would take me a lot of time, if performed manually
  • AvoidUncalledPrivateCode – it helps me to find quickly unused code
  • DoNotCallPropertiesThatCloneValuesInLoops – it never should happen

Except checking MSDN, if that is necessary open the code and check where particular error happens in code. It will happen often that only looking at code, you can answer if the problem is dummy or real.

Analyze the code again and check how much work there is to standardize the code. If there is too much, than you can afford you need to repeat step 2 and 3. If you can, talk with your developers to ensure, that your point of view is valid.

4. Look at errors sets and ensure, that they are valid
Forget for a second about fxCop and how cool it is and try to put yourself in developers shoes. Are enlisted errors really important; do they really need to spend a time and risk the repair (which may cause additional errors)? Remember that you should implement the whole thing incrementally to convince people that it truly empowers they work. If you start with too many rules at the beginning, you will cause people to make refactoring for months, what will not make them and your boss happy ;) That is why, it is good to “thing big and start small”.

Filter the last time, the list of suggestions for developers.

5. Establish the process
The tests have been performed for the solution, which consists of 62 projects and has around 30k LOC.

Option A
Run the report from command line manually. The default xml report is parsed nicely by default by IE – options like expand/collapse are possible there without any configuration. You may generate the CSV in the same way, but in fact that is the same xml (just extension changes). The disadvantage is that you need to run the whole process manually and you need also to update the list of targets as the outputs (dis)appears, but the plus is that it does not disturb the daily work of developers. The batch like:

fxcopcmd /p:"..\..\..\_fxCop\ESPO1v0.FxCop" /c /o:".\FxCopReport.xml"

Took me about 1:21.

Option B
The other idea is to apply the fxCop process as after build for Release version of the product (“Adding FxCopCmd to Your Build Process”). In this way, daily Debug builds are quick and when everything is ready key developer does Release build and gets immediately the report of things to repair. Unfortunately post-build actions are available on the projects level and not on solution level, so you must either apply it to each project separately or once to project, which is build at last in the whole solution, if you are sure it will be always compiled as last one (Project Build Order). In this case, you must be also sure that each person:

  • Has fxCop installed
  • It is installed at the same place or path is set properly
  • fxCop project is downloaded into the same place at each PC (shared folder possible)

FxCopCmd /p:"D:\SVN\ESPO\fxCop\ESPO.FxCop" /c /o:"D:\SVN\ESPO\fxCop\FxCopReport.xml"

The other option suggested in here is to use the VS 2005 add-in and link it with MSBuild process.

Option C
Even more interesting option is to add the action as a post-build in any project. You need to change the fxCop project and clean Targets tab. You may establish that folder, where fxCop has been installed is added to the Path global variable and common folder with fxCop project and where all the reports will be stored. You need then to ensure that post-action is added to each project to have the whole thing working

Fxcopcmd /f:"$(TargetPath)" /p:"..\..\..\_fxCop\ESPO1v0.FxCop" /c /out:"..\..\..\_fxCop\$(ProjectName)-fxCopReport.xml"

You need to know, that my sample solution has compiled in 32-45 seconds without fxCop and in 8:10 with fxCop for option C (even when just 5 rule sets were turned on)! Only iIf you don’t have too many projects, it may be the good option. In other cases option A or B, will be probably better.

Whichever option you chose, there has to be some negotiation stage (especially at the beginning until the set of used rules will not stabilize), when developers may give the opinion about the usability of the particular rule or changes. When it is established and the set of rules is redefined, it must be double checked after some time if the errors are repaired

You may also consider at later stage to write your, customized rules, but you always must consider if it really safes time ;)

Conclusion
You must spend some real piece of time to make the whole thing to be REAL, but I have a strong believe that the automated effect is usually worth of it especially if you the project is:

  • long term
  • open source or you need to pass the rights to source codes somebody else
  • the code is analyzed externally
  • to which the others may write plug-ins
  • developers switches

Of course you must review the whole thing once per while and redefine the set of used rules (make the tolerance more narrow or wide), but the even the knowledge about the post-build process will motivate developers to write better code.

At least, but not at last that is important to mark, that automated process is just the support and not replacement for manual code reviews.

poniedziałek, 12 listopada 2007

Google Reader and other Google toys - quick review

As most of people I am registering RSS feeds, when I have some time to spare and than usually not enough time to read them frequently. I am after a romance with RSS Bandit, which one of the best standalone RSS readers (in my opinion). Then I have tried to use RSS reader emedded in IE 7 and Outlook - what a creepy implementation it is (bleh). Now I am looking at Google Reader used by one of my friends and I must admit I am positively surprised.

The cool things, which I truely like about the solution are:
  • Very clean GUI - e.g. there is one box where you may add the URL to RSS feed or the keywords to look for
  • Very cool (un)read mechanism - e.g. after WATCHING the lead of news it is marked as read; when it happens the first time you are warned about it (!) plus there an info that it is just the default behaviour. Amazingly simple!
  • The real juice of the whole concept is the share button on the bottom of each news - it allows you to select news, which you may provide publically on your own, dedicated page (all provided by Google). It may look like this
  • Except the share thing there is also couple of other useful things on the bottom of each feed, what makes them easy to access and truely user-friendly

  • Trends - that is quite simple, but nice statistics module showing how much content is coming from which source
  • Good administration model - there is totally new section called "Manage subscriptions", where you can make a number of things, which you are not doing daily - set up the outlook of the whole service, settings and (the most interesting) import/export your feeds using all good friend OPML. Here finally I have found the description of the whole thing and all the answers for questions asked before.
  • Itegration with Google Blog - on the right side you may see widget, which was created automatically from Google Reader
Google vs MS - 2:0 (the first point earned, after the blog platform was chosen ;) )
ps.
BTW, I have rediscovered the Google Toolbar Button Gallery, which allows you to highly customize your Google Toolbar (if you do not have any it is the time to download it from here). Quite often I willing to search the particular phrase just in Wikipedia and the most popular Google Toolbar button does just this. There are also specific buttons for CodeProject, Google Books Search and big number of the others like Google Calendar.

sobota, 10 listopada 2007

Marriage of Prince2 with Microsoft Solution Framework

Very often there pop-ups the question like: 'What of methodologies do you know/use?'. There is usually some smart answer like PMBoK, RUP or SCRUM, but when the question is drilled down, it appears out of the blue that there is just the set of unique practices - the mixed salad from everything what market offers and world wide web says about. There is nothing wrong with it and furthermore it is a wise strategy to collect patiently the practices, which truely works. Wise senior executives will slow down the saint paladins, who coming back from the training are trying to change the whole company into the Six Sigma or whatever else. Of course this type of change is possible, but it must be implemented incrementally and it must respect existing well-working practices, even if they do not fit to the template.

For a long period of time I have been using (or I have tried to use) the MSF and I am quite used to it. Of course, there had to be some compromises each time and it was never the pure implementation. For example just once I had the situation where there was the true separation of the project and product manager roles.

Nevertheless at my current position, there is a strong rule across the whole department to use the Prince2 methodology. This type of situation, common and strong support from top executives, does not happen often. I am currently on my learning curve of the methodology and I must admit that only things, which you do not know scares you. Furthermore, it seems to be a good fit to treat a Prince2 as a general flow of documents on higher, execuitve level, where written documents are necessary to take some serious, strategic decisions and MSF as a parallel, technological flow on a tactical level.

The main flow of the Prince2 is more-or-less as follows:
  • [DOC] Project Mandate
  • [PROC] Starting up a project (SU)
  • [DOC] Project brief
  • [PROC] Directing a project (DP)
  • [PROC] Initiating a project (IP)
  • [DOC] Project Initiation Document
  • [PROC] Directing a project (DP)
  • Stages after stage
  • [PROC] Closing a project (CP)
  • [DOC] End Project Report

DOC : Document
PROC : Process

DP is mostly about decisions of a steering committee : 'do we continue a project or not?'
There can be any number of stages, one after the other

Stage is in fact the mixture of the four processes: Controlling a stage (SG), Planning (PL), Managing Product Deliver (MP) and Managing Stage Boundaries (SB), but to simpfly these things I called the thing Stage.

The Prince2 methodology definitely causes formalization of the project, but in case of a big nterprises that is actually a good approach especially at the beginning and at the end. After the key decision is taken each stage of the project may be passed to MSF solution, where we already have the Vision phase managed and there is a time for all the remaining 4 phases – planning, development, stabilization and implementation. These are strongly technical activities, which are not in scope of Prince2. The best sample is a planning phase, which has totally different meaning. In Prince2 that is about the way how the plan is constructed: what will be delivered (products), what are the linkages between products, risk management, estimation and master plan. In MSF it should be actually called design and that is splitted on conceptual and technical planning of the architecture.


At the end of the whole project the deliverables (work packages) provided by MSF, should be checked within the Prince2 Controlling A Stage (SG) process or Closing a project (CP). This double checks that final result goes along with expected and defined within Project Initiation Document.

Assuming the business case of the big company A, which request the delivery of the big software product X and a smaller company B, which is a pure software house. The company A may use Prince2 and company B the MSF, without bigger problems in communication. Actually Prince2 itself predicts that company B may use different methodology (not Prince2) and it is a main purpose of the whole Managing Products Delivery (MP) process.

Furthermore the whole concept is not new, when we speak about Prince2 and RUP (I really found the link after writing the first version of this document) ;)

sobota, 3 listopada 2007

How to be happy?

My manifesto says that this place is a techblog, but at the end of it I have hidden the option, that under specific circumstances each or all the rules may be broken - here we are. I can not stop myself from writing you below the 10 rules of happy life wirtten by psychologist PhD Krzysztof Szymborski, which I have read in "Polityka" newspaper:

1. Do not avoid sex - inimate closeness with the other person increase our selfopinion
2. Turn off TV
3. Smile - even forced smile makes you feeling better
4. Call to a friend
5. Delight nice moments
6. Walk 2 km with a fast tempo - medium physical excercises favour the feeling of euphoria
7. Take the job, which you like and during your free time engage in social activity - became a member of choir or plant a tree in public square
8. Enjoy from what you have
9. Each day make yourself a pleasure and give yourself a time to really enjoy it
10. Each day try to make something good to somebody else

It is amazing. Pure, solid and complex, huh?
I need to implement this design pattern ;)

środa, 31 października 2007

Microsoft Business Intelligence Days

Mood: 4 free days ahead :)
Music: Smushing pumpkings, Bleeding the orchid

I have just come back from the Microsoft Business Intelligence Day. I usually do not like this type of events, as I believe that having exactly the same amount of time you may usually find more on the web. The main reason why I still force my self to move my ass off, is a willingness to meet new people or old friends ;) This time I found not only this, but also quick review of new, interesting MS product(s).

As it is easy to notice, I put some interest into SharePoint area as I do believe that it is for now one of the most promising point in whole Microsoft’s products portfolio. In the same way as an age ago they started to provide products on MS platform, they start now to provide the services basing on SharePoint+SQL Server platform; actually, services in SQL Server 2005 are visible literally ;)

SharePoint and SQL Server are somewhat high maintenance women, when we speak about hardware requirements, but there is no doubt that it is one of the best on the market, when we speak about true plug-and-play approach. That is why, I am quite sure it is a perfect shoot for standard applications and MSP market. As a bonus it provides the customers the interface, to which people are used to as it is fully compliant to the whole Office package. Sharepoint is nothing more than web collaboration extension of Office package.

There is number of interesting actions, which happens in Redmond right now about SharePoint and the most important from my perspective are:
  • Reporting Services (as the most visual of new SQL Server 2005 services) allowing you to provide quickly SQL query on the web, within the complex and out-of-the-box web platform, which includes the security mechanisms, alerts etc.
  • Excel Services – in fact the Google Spreadsheet competition ;)
  • Enterprise Project Management – the MS Project on the web finally after so many years!!! It seems also like within this product, there will appear the Project Portfolio Management bought with UMT. I hope that adoption of the product will go quicker than usage of NetIQ solutions within MOM>SCOM and smoother than incorporation of PlaceWare into NetMeeting>Microsoft Office Live Meeting.
  • Pefromance Point Server – long awaited complex web GUI for BI functionalities like budgeting (actual versus plan) process.
As you can see most of these products are nothing more and nothing less than just web, collaboration-enabled version of various MS products. Heave usage of SharePoint+SQL Server bundle is a promising trend and I am quite excited looking where it goes.

The conference was about the last bullet (PPS). I was quite sure, that I will see (as friend of mine said) the SharePoint with number of color bullets and arrows. Consider for a second SharePoint as a tree and PPS as lamps and chains. When you put is together you will get the Christmas tree ;) What my surprise was, when I saw… Proclarity! Yes, the next product, which MS bought and now they sell it under the different name with couple of additional sauces ;)

The approach is quite smart, as it is always better to buy the ready to use product than bleed producing it from the scratch or maybe the corporation is so big, that it can produce the breaking through technology only buying it with some smaller company ;) The Performance Point Server is actually relatively young product and MS officially says, that it was not sold in Poland yet! There is a living blog of development team. It consists of:
  • BizSharp – the tool which helps to plan the OLAP cubes; they does not promote the tool too strongly and treat it mostly as kind of support application; in Google, there is just 1180 findings!
  • Business Scorecard Manager – the simple, standalone application, which allows you to create in drag-and-drop way the BI reports for publishing on SharePoint pages as WebParts (when you use link, be aware that live demo is loading infinitely)
  • Proclarity Analytics – the horse power of the whole solution including desktop and web client, with all the candies like the decomposition tree, strategy map and perspective view (on-line demo under this link works smoothly; is it the metaphor of the whole solution?). It is quite visible that buying Ploclarity, MS bought also number of interesting patents ;)

It was what I took from the Tomasz Kwiatkowski (real demo!) and Paweł Borowiecki (business talk) session. Fellows tried to play cool buddies, but it turned out a little bit artificially. Luckily the content of the whole presentation was quite solid; I took out from the session clear vision, what the whole thing does and what the PPS from user perspective is. They hidden smoothly the double nature of the whole solution – it is Proclarity inclduing GUI, but it can be SharePoint also ;) I think the whole thing is still in transition phase. Under this condition, the try to charge the regular client 80k$ for about 25 clients installation (Performance Server + CALs + SQL Server with 25 CAL + consulting company for 3 months period of installation – the price for SharePoint Server, which is not included as in standard they offer free Windows SharePoint Services!) seems to be relatively high price, even after impressive demo of “ready-to-use capabilities”.

My clear vision was slightly blurred during Krisitina Kerr speech, who started to talk something about Monitoring and Planning servers being a part of the whole solution. I must admit, that even now after 15' browsing, I am a little bit lost in the whole complexity of the whole architecture, even knowing a little bit about OLAP. If it is just for implementation engineers, why to torture pure decision makers with such a level of information. BTW, plus for MS, for organizing headsets with english-polish translation; it was visible that surprisingly many people used it.

Summarizing in numbers, the whole conference was quite interesting even if there was about 60-70% percent of marketing talk cover like Monitor>Analyze>Plan flow around the Strategy bubble and just 30-40% of some real show. Only? Maybe, as much as!

90% of time was spend on presentation layer, which is definitely the coolest part and small part about the sweat and pain of collecting and clearing data (actually only Jarosław Szybiński touched that topic). I know from practice, that it is the most often the hardest part of any BI implementation (definitely not plug-and-play, regardless from how good the product would be). This I can forgive, but what I cannot forgive though, is that some sessions had the same content – it happened even once that some guy showed part of demo, which was just showed couple of hours before and it was publicly noticed!

In fact it was the only visible set-back. For such a mid size conference, it is not much and the whole thing was organized quite nicely. Year after year MS in Poland learns how to make truly social events. This time during the lunch break, they let people enter into the dark dinning room, where you had Halloween pumpkins (conference was 3 days before Helloween, which we traditionally in Poland celebrate differently from US citizens) and they left the place dark for some time; delicious ;) Also budges had interesting, modern outlook and about 83,4% of people had them attached, what I treat as a proof of acceptance ;)

The T-shirt is from Microsoft Technology Summit 2006 and budge is from the conference. I feel like MS Christmas tree commercial ;)

sobota, 27 października 2007

EPM Adventure - 1st Chapter

Mood: That is Saturday!
Music: The best videoclip ever and one of the best song

The topic of the day is to remove the EPM project. The task seems to be easy, but as some the things in real world it is not as simple as it seems.

1. Quick introduction
Within our installation of the EPM, there are three types of "projects":

A. Proposals - these are things, which you establish before the project is opened. It is very useful to plan and report the prepartion period and/or offering process etc.
B. Projects - that is a real project, with a regular project plan in MS Project
C. Actions - that is set of post-project tasks like support and/or closing things, which have not been included into the project period

The categorization has some special meaning as only Projects can have the real, advanced schedule, which you edit in MS Project. Proposals and Actions has just some simpler Web schedule editor which has limitations like you can not add two persons to one task.

2. The case

The problem is that user with "Project manager" role can easily remove his Proposal and Actions, but there are some big problems with Projects. As there appeared more and more out-of-date projects, I was willing to clean my desk up.

The first lead was saying that it is enough to change a status of the project...but the field was uneditable :(

The next lead was about finishing the work flow...but that did not change much and published projects, where still visible.

Couple of words about SharePoint workflows in here. That is truely a cool, new feature of MOSS. I strongly advice to take a second and have a look at two workflows implemented by default in EPM - acceptance and feedback collection, they truely work fine. Unfortunatelly just limited number of ready-to-use things is available for now and if you want to create some consistent, customized set of workflows you need to involve some SharePoint programmer - there is still not too many on the market.

But coming back to the main case... I had to make couple of other unsuccessful tries (like tring to remove all reources from the project, but I could not remove myself :( ), before finding out that the simplest solution is the best. It is enough just to open MS Project and right click on the project :)


3. Conclusion 1 - from administrator
And now the most funny part of the whole adventure. I came to my SharePoint administrator, told him about all my problems and my succcess. He looked at me, a little bit surprised and said...

- Well, you should be able to do something like that even with your privilleges

This short setence explains, why removing Proposals and Actions was so easy comparing to Projects. On the other hand it means that EPM has some security whole and even when the "delete projects" privillege is not added you still can do a trick from the MS Project - it is just enough to have the privillege of managing projects from that tool. How slimy bastard am I ?! :)

4. Conclusion 2 - project archivization
Just next step after I found out how to delete projects, the question has appeared how to archive the content and unfortunatelly the EPM does not provide any tool for it. If you have various type of 20-30 libraries per project and number of various documents distributed among them, lack of such a tool is quite painful. It is the next proof that EPM is quite a young solution and I hope that engineeres from Redmond will come up soon with some cool rocket science, which will allow me to do a trick with one click just for some extra 100$ in new version of EPM 2011 or 2012 ;)

5. Links
Just by the way I have found couple of nice links, which my be useful to you

niedziela, 21 października 2007

Project planning and EPM

Mood: Regular, despite it is the election day in Poland
Music: Bedshaped- Keane

Black screen. At the bottom appears the sentence written with the white, bold Verdana 18

7 years ago – Microsoft Project 2000

A manager is sitting in his cubicle and creates in silence the project plan in MS Project 2000. At the end, when he created his masterpiece (at least he thinks so :) ), he is willing to dispatch the tasks to a team. He starts the painful road of tries and dies.

1. Tasks
At the beginning he is ambitious and he wants to share the appropriate tasks to appropriate people. He notices that he can do it by emails! Wow! Great thing! He sends these… but somehow, after some time he is reported that some of the tasks does not reach the recipient, team is bitching and complaining

2. Project plan
He becomes less ambitious, so he wants simply to send everybody the whole project plan. Yes, you can do it. But the reader… must have the full, commercial installation. Bitching and complaining again.

3. Microsoft Project Central
I bet you did here about it. The solution were not too popular, despite it was quite interesting – the installation over the IIS is quite simple and the only disadvantage was a relatively not-comfortable way of browsing the whole plan, especially when it was a little bit more complicated. Bitching and complaining again.

So finally our poor manager, printed simply the plan in 5 copies and passed it manually.
Seven years passes.

Now the manager is sitting in front of the Project Web Access opened from the IE (maybe even Firefox), where the one sees, the central deck with all the flavours:
  • Schedules (personal and teammates)
  • Risks
  • Tasks
  • Status reports
  • List of projects in which we are involved
Yes, there is a difference and furthermore future seems to be promising even more.

The end
of the trailer… Let’s come back to the real life.

Since some time my company uses the Microsoft EPM Solution; I must say there is a lot of complaining in the house, that many things does not work as it should, but these are the most often some organizational / implementation problems. At the end of the road, personally I am pretty amazed by the capabilities of the system. It is still quite new version of the system, not adult yet, but it has truly great perspectives - the marriage of MS Project with SharePoint seems to be great shoot. I am pretty sure that many people on the world, looking at the screenshoots, says "Finnally". It would be actaully quite nice thing for MS commercial :)

The most important thing is to explain that EPM is not just the MS Project via Web Page, but the true implementation of the heavy weight project management methodology like Prince2 or PMBoK. It is a true Project Management Office.

Of course the tool is just a tool – you can build the chair with the hammer or kill your neighbor. If you have no common and detail vision of what you want to do with IT (whatever IT means for you :) ), you should clarify first the processes before the installation, instead of believing in the mysterious panacea for everything. There are no silver bullets – there is always the sweat and pain of the change management :)

I am just getting on the path, but I can already enlist couple of things...


Cons

  1. The solution is relatively young and not too many companies are using it
  2. There are still some small bugs like you can change the name of the project, but the portal name will not change
  3. Lack of archiving mechanisms
  4. The hardware requirements are pretty high
  5. System could be slightly quicker
  6. Administrator must know SharePoint solution in details
  7. You must have appropriate SharePoint license, which is not cheap
  8. Just couple of very simple workflows is installed and any new require coding
  9. Limited capabilities of creating a plan for Proposals and Activities on the web
  10. You still must to have couple of smart key users, who make the system living

Pros

  1. Common and nice GUI, which is truly user friendly after a while
  2. Very extensive administration/installation options and scalability
  3. Good integration with MS Project 2007 and Office 2007
  4. Focused on collaboration – discussions, alerts, white boards, lists, document libraries
  5. Wide possibilities of customizing – in fact new project runs the new SharePoint site using the template
  6. Nice idea of Proposal (before project) > Project > Activity (after project)
  7. Well-planned reporting mechanisms - eg. reporting hierarchy with accept-decline, status reports
  8. Nice workflow mechanism from user point of view - eg. Acceptance and reviews collection
  9. Possibility of creating any other SharePoint site side by EPM, when necessary like the Bug Tracking System
  10. Smart key users have the place, where they can show their talent
    (if you need more what MS Marketing says)

Before you turn on the system for users

  1. Establish the common vision of users groups, roles and privileges sets
  2. Establish the hierarchy of reporting and mechanism to control the way it works (or not)
  3. Establish the projects life cycle in the system (including projects versioning) – saying that we are Prince2 or PMBoK is not enough
  4. Establish some audit mechanisms to standardize content of the system, avoid duplication and ensure that system works well providing real data
  5. Train all users, especially key users
  6. Establish some working, feedback chain from users
  7. Avoid packing everything into EPM- if you need department site, create the separate SharePoint site
  8. Prepare for integration with the other systems
  9. Except the production environment, prepare the test system, where you can (pre)test various settings
  10. Remember that the main goal of the system is to make the life easier; it is for people and not backward

Other solutions
iPlanner
PlanView – (PlanView vs MS EPM)
Business Objects EPM XI

And at the end... EPM has actually very various meanings, but anyway I hope that at the end of the implmenetation process you will be the monkey walking on two feets :)

And couple of screenshoots (sorry for polish)...
1 - start screen with tasks, schedules, schedules to approve, status reports, problems & risks plus list of projects

2 - Schedules approval screen with filtering options and possibility to send marked elements directly to superior with a comment (at the bottom)

3 - Projects center

4 - Resources center (yellow lines are employees and green are their tasks)

5 - Your tasks list

wtorek, 16 października 2007

5 ways to produce valuable software

Mood: Regular
Music: This time instead the music - watch this!

Answering a question posted on the LinkedIn

If you truely plan to create the valuable software you must remember that your targets are...

1. Focus on the solution - fix the problem!
Joel Spolsky said once that, if you plan to make software it must fix a REAL problem - rule number. The best possible, the coolest solution will be bad, if it is just a toy. If you truly make the others life easier and customer surveys are saying that it means your product is good.

2. Focus at users - be stable, intuitive and user friendly!
The solution should behave as we expect it to behave. Whatever you say the MS Office package is quite a good sample in here (definitely 2k and 2k3). As my old IT teacher said… if your mother can install it, without a question and without the manual plus she knows how to use it after some time without cross wording – it means you are there.

3. Focus on the customer - has good value/price factor!
Of course, the best solutions are free solutions, but I guess we speak about the commercial packages. There are some articles, which are saying that there is a rule: “the barrier between 0$ and 10$ is bigger, than the one between 10$ and 100$”. That is a reason why it is sometimes better to provide the complex solution, which comparing to the other, similar things provides simply more USEFUL functionalities (1) for smaller money. Notice that most of users, use just a couple of small tools and most of them are free.
Wise price list may be a key to success. I love solutions like ZoneAlarm or AVG, which are free for private use and cheap for business.

4. Focus on fun - be cool and fresh!
LinkedIn the best sample for me – it is so easy to see if the company worked with some professional graphic / GUI expert or not J

5. Focus on community - do the they space for sharing knowledge between users, listen to them and support them
It applies also to non-web solutions; SAP has a very strong users communities. Microsoft focus less on the centralized MSDN right now and more on the communities, which supports people answering the direct questions. If the product vendor takes care about this community, it grows and helps to improve the product – that is a part of the Web 2.0 movement.
If your product is big enough, it should provide some place for plug-ins and platform for external developers to write extensions (AppExchange from SalesForce is good example).

... and this is it. So simple and so hard in the daily life, where you need work out the common vision of your product; it is so easy then to loose some or all of these focuses :)

poniedziałek, 8 października 2007

5 best ways to have the house full of bugs

Mood: Just after sex
Music: Elektrobank

There was a question on the LinkedIn "What are the Top 5 reasons that NEW applications are released to production prematurely?" and just 4000 letters to answer it! Not enough... Full answer published below...

It is quite hard to discuss with such a guru like Joeal Spolsky, who answers perfectly your question directly in the article. Anyway the life is about the challenge, so lets try to watch fellows, who causes that software is immature. They say:

1. We do not need QA!

It sound crazy, but that is true and I met it couple of times. Many software houses do not have the regular QA team! It happens not only because “we can not afford” (the number 5 on Joel’s list), but also because the decision makers believe “we do not need it”! I met once a very clever director, in a mature consulting company, who believed (despite number of my suggestions), that consultants can perfectly find all the bugs, when preparing the demonstrations and installations!

If QA exists, very often these guys are responsible for the other duties like builds, version management or configuration. I know the companies, where one tester is controlling the work done by 15 developers! Joel Spolsky says about 1 tester per 2. Gurock goes even further writing about dedicated software - one per one. In my opinion well trained programmers, who does unit tests can have 1 tester per 3 programmers, but they definitely need QA team, who is focused on testing and nothing else.

2. QA is tiring and boring!

Many people feel it inside their hearts and they are not strong enough to admit it. We are amazed by the possibilities of new technologies and so tired because of countless number of errors. Who like the messenger, who brings the bad news? Who wants to hear about hundred of the very specific situations, when the system does not behave, as it should? Why do we need to repeat the same routine (test script) again and again and again? Ooo my goodness, do you report the same error again? The damn QA team… they are the pain in my ass!

This is why many errors are hidden under the carpet, some inconvenient scenarios are omitted and test reports are so optimistic. It is so rare to hear: "Yes, that is sometimes boring, but it is necessary to do and I will not release the product without having this check list working in 100%!". I promise my QA team nothing else than sweat, pain and… support.

3. I want just demo version!

Very often the sponsors of the projects want just to feed sales forces, so they can present the amazing, break-through functionalities on the conference. The first one, the second one, then there is a first client... lets just install it only for this customer. We will do the real re-factoring later after we cash this deal. The real horsepower is irrelevant until the regular users start to report zillion of bugs and then the witch haunt starts :)

The other variant of this story is “add this, this and this functionality, and keep the quality!”. Sometimes it is simply impossible to froze the scope of the application (especially when agile methodologies are used) and then the application may truly explode with number of functionalities :)

4. Automated, unit self-testing is the panacea!

Part of many agile methodologies is the automated unit testing. Each function should have the shadow function, which automatically tests its effect. The idea is truly great, widely popularized, but even when the company says loudly that they use XP or Scrum only some functions are truly automated. Furthermore, in the situation, it is quite easy to neglect the other type of tests like integration, platform, destruction etc. Do we need it, if programmers do the tests on the lowest level?

Yes, we need them! If you do not do all these things, they will happen sooner or later unless you bankrupt before the first commercial release :)

5. Do not write papers - just test it!

If the QA team is not instructed to document the scenarios, work done, errors – they will not do it! Most of people prefer to speak than to write, to keep the knowledge than to share it. The decision of the final release must be based on hard, written information like the number of bugs per test iteration (how close are we to Zero Bug Bounce ), level of code coverage by tests, performance and security test reports plus number of the others. Feelings are not enough in this business!

QA team is paid for being a couple of steps before any user and knowing the strangest possible way of using the software (Joel’s 3rd story). If the final user is finding some unknown bug, the QA team fails . Not all bugs must be fixed, but all of them must be documented! You can do it only if you keep some reasonable level of documentation – check lists (test scenarios), bugs registry with reproduction list and statistics.



At the end I want to express quite brutally that the most often the business decision makers are responsible for these things as they take care about quality only verbally! Their declarations are not followed by real actions and investments. The regular quality reviews are neglected as the new, cool functionality or the customer behind the door is more important. Most of them are not capable to stay with Sara Ford talking at channel 9 until she gets into the lab. Yes, she is not sexy and she is boring :)

ps.
She probably can not also dance as the one on the videoclip, but she as amazing as the one :)
 
web metrics