Friday, December 04, 2009

Top one reason projects fail

.. it's not about a person, but about the process

This morning I came across an article by Amit Sarkar "Top Ten Reasons Why A Project Fails And What You Can Do To Change" and it triggered me to write a long comment to that. I don't know if anyone will ever read it as nothing appeared on the site. Might need moderation. Still I copied what I had typed into the box to reproduce it here. And the added some more text here and there.

First I suggest to hop over read the article.

My comment

Having been involved in quite a number of projects myself I think that I can honestly say that you are clearly a project manager that works according to the book. The problem is that the book is not correct. Or it might be the not the correct book. The Bible is not the best source of knowledge for project managers, nor is the Koran. Nor Harry Potter.

Genral objections

I will not break down all your 10 points.

But the biggest mistake in managing IT projects is the misconception that everything can be known at the beginning of a project. Requirements are never completely clear and will change during the project because of changing insights and demands from other systems.

Same goes for risks. Some can be identified ahead, but most risks are only becoming clear when the projects moves ahead and bumps into related systems that have limited possibilities.

It all sounds too familiar

Waterfall ModelImage via Wikipedia

The solutions you propose are related to the 'good old' waterfall model and that is no longer a best practice in IT world, if it ever was. Nowadays we would like to work in iterations taking small steps to make things work a bit and have close commitment from all team members and the project owner, the stakeholder or at least someone who can and will take decisions and who is a member of the project team as well. That way progress can be made in short cycles and the stakeholder is always involved and knows every step of the way.

Typically in such a process it is not known what comes out at the end. You might think beforehand that you need a better mobile phone and end up with something like Twitter.

Then ... what

IMHO a project manager is a facilitator for the project team. The project manager makes it possible for the team to do their work. At best he goes around serving coffee.

I have seen project managers who spend a lot of time in endless meetings with all kinds of layers of management and keeping all kinds of lists, but were never around when you really needed them. I pity them for the time wasted and myself for the time waiting for them to come back from the trenches.

I think that the points you mention are known problems, but the solutions you mention are not the way to go. In IT so many times the stakeholder has no real knowledge of IT in general and has no real idea about what it really is that he needs or wants.

To me it is important that a project team together with the stakeholder iterate over the product that will be delivered. Not everything will be known at the start (and that's okay), but that also means that you can't really plan anything ahead. It's impossible to have all requirements and all risks assesed and have solutions for these as well.

A final great to Amit Sarkar:

Good luck.

I love it when a plan comes togetherImage by Phillie Casablanca via Flickr

Conclusion

I know, I know, I am all wrong. I am not a project manager. Happy for that in a way. But I have been involved in a lot of projects that failed not because of bad team members or project managers, but because of the process that was chosen to do the project. Not as much the project management methodology (Prince or Cadence or whatever) but the process that was used to get from the start (nothing) to the end (something that all involved people can live with).

I think project management has come a long way (to the moon and back) and that in IT projects people need to understand that we do not know at the start of a project to which moon we are going and whether we are going any further than the coffee shop around the corner. Most of the time it is not rocket science.

So once again: Good luck.

Reblog this post [with Zemanta]

Tuesday, November 10, 2009

Streetview spreads fast

.. but is slow rolling out

Today I jumped up in joy as I could see some house where I used to live in The Netherlands on Google Streetview. I saw the Pier at Holwerd and the house of my sister. All great.

But the house where I live is not there (yet)

Uhm?

Somehow there seem to be some large squares of Streetview missing from the maps. Must be some data issue, I guess. Maybe some more files need to be synced between servers or what.

But why just my area that is missing? Have to wait I guess.

Means more wear and tear for my F5 key.

Looking beyond

Looking a bit beyond the borders of my small nation I see even more interesting things.

  • The coverage in Spain is quite extensive and probably on the same level as in The Netherlands. (Once these holes get plugged.)
  • Switzerland had some fuss about faces that were still recognizable, but still has some fair amount of Streetview.
  • The United Kingdom has Streetview splattered here and there over the map.
  • The coverage of France seems to be mainly limited to the Tour de France route that was covered last year.
  • Scandinavia is too ... cold? or reluctant? for Streetview
  • Italy has the same type of coverage as the United Kingdom
  • And the Czech Republic is the only country in Eastern Europe with Streetview
Looking even further beyond

Outside Europe only the The United States in Northern America and Australia, New Zealand and Japan have Streetview presence.

There are still a lot of miles to travel for the Streetview cars and tricycles.

I just wonder if it wouldn't be possible to somehow let the crowd fill the cloud? When enough people take enough pictures that are geolocated accurately enough than that could accumulate to a nice extra input for Google Streetview.

Wednesday, November 04, 2009

Perfect Pitch

.. for the sake of democracy

Visit this link:
http://adactio.com/journal/1623/

Helping Adactio get that perfect pitch. To nail it, even. You should probably link to his page too, if you’re so inclined to fight DMCA take-downs for the sake of SEO.

uhm

Well, when you have read the article then I do encourage you to create your own link to
http://adactio.com/journal/1623/

Thursday, March 12, 2009

Been a bit busy lately

.. again

It's been a busy couple of weeks. The project that I am involved has had another deadline that moved and moved and finally was met. Somehow. One way or another.

All done with the usual fuss of project managers, stake holders en more managers running around asking whether things are finished yet. And now? And now?

You get the picture.

Deadline Split LP album coverImage via Wikipedia

So, it has been quiet here.

I haven't really had time to progress with my own pet project. Too bad.

And now the second part of the hockey season is back in full swing with my Ladies team once again winning their game, so there's not too much time for fun programming.

Hopefully, soon I will find some time again to make some progress again.

Reblog this post [with Zemanta]

Sunday, March 01, 2009

Building an application (4) ...

.. weird debugging problem

One more thing that I have encountered on my wonderful journey in building my first Silverlight application is a debugging issue.

It just not works straight out of the box in Visual Studio 2008. I know, I know, it must be me with all sorts of software loaded or what. Or the missing hotfix 98662654a. But just keeps biting me.

What's up, doc?

I start VS 2008 and make some very very clever changes or just want to try out something. So I set a breakpoint at the right line in the code and hit F5. Easy.

Lots of things happen. The application is built. Well, three applications are built: the Silverlight app, the web app and the web service. So far, so good.

I start my testing and the breakpoints are never hit. At least the IDE does not stop.

And yes, I am running in Debug mode.

What's the cure, doc?

I have found that stopping the debug session (by hitting Shift-F5 in the IDE) and the right-clicking the Web Service project and selecting Debug - Start New Instance does the trick.

Breakpoints are once more hit and they do cause the code to break at those points.

So, what's up, doc?

I honestly can see here that I have no idea. The trick above works for me and to me that is enough.

So, if you come across breakpoints never really breaking than the above trick might work for you.

Reblog this post [with Zemanta]

Friday, February 13, 2009

Building an application (3) ...

.. exchanging and serializing objects

One the interesting things I ran across while building the Trainer Tool was that I had exchange objects between different parts of the system. I have the excercise and its data in a couple of classes and it's the data that's is used in all parts of the system. I store it in my database (in an XML type field). The HttpHandler requests an excercise object through the web service and uses it to generate an image that is shown on the webpage. And so on. Simply said all the blue arrows in the diagram are used to transport an excercise object.

The excercise object

So all the different components need to have access to the defintion of the excercise object. Well, that's easy. Create a separate project, a class library, and simply set references to that from the other projects. Well, almost. It works for the Web Service and the Web Application, but not for the Silverlight project.

Why not? Well simple enough setting a reference to a project copies the compiled assembly (dll) from that project to the referring project's bin folder. And that just will not work with a Silverlight project. Simply because the it's a different type of dll.

The solution is very simple. Since both the .NET parts and the Silverlight files use the same C# (or VB.NET) code you can use the code in both projects.No, do not copy the class files from the .NET class project to the Silverlight! You will be doing all updates twice. It is quite easy to link the files from the class project. Create a folder to link the files into. And then use the context menu to Add Existing items.

In the following file dialog choose the files you need and then notice the small arrow on the add button. That produces a dropdown menu where the option to link the files is hidden.

Now, you have linked the class files. When you open one of the files through either of the projects you are in essence opening the same physical file. In the project explorer you can see the linked files with the little shortcut style arrow, which hints at that behavior. You get a warning when you try to open a file for the second time (once directly and once linked) and that makes perfect sense.

That was all

Another time some more information on how serialization poses some trickery as well.

Window shopping at Eaton's department store.Image via Wikipedia
Reblog this post [with Zemanta]

Thursday, February 12, 2009

Building an application (2) ...

.. coming full circle

In the first part of this journey I have sketched the outlines of my application. The combination of web pages, web service and Silverlight as I plan to build it.

Jumping hurdles and dodging bullets

While building and debugging I have run into numerous obstacles. Not only did Chrome give me an unexpected headache by not refreshing the Silverlight XAP file in the cache, also Visual Studio behaved weirdly during debugging sessions. At first I couldn't make any of the breakpoints work. Only after using the context menu on the web service and picking 'Debug - Start a new instance' did execution break at the breakpoints. And then after a couple of hours it failed all breakpoints completely. Restart of Visual Studio and browser did not work. A full reboot did the job.

BTW I have logged a bug with Chromium for the caching problem.

However

My Proof of Concept piece of spaghetti has now come full circle:

  1. I drag and drop some players, balls on the pitch.
  2. Enter some extra info: name of the excercise and some extra text.
  3. Save the data to the data base using the web service.
  4. The asynchronous callback adds some html to the DOM, which is an image that is generated by a special HttpHandler.
  5. The image shows up in the browser.
  6. I have a smile on my face.
Lots of work to do

en: Picture of a girl rubbing her temples.Image via Wikipedia

There is still lots of work to do:

  • a real user interface has to be designed
  • better, I need to sit down and get the complete UX designed
  • have to add the boring user authentication stuff
  • try out the concept on a real web server
  • implement some of the missing graphical pieces, like lines with arrows
  • think of good way of editing the lines
  • undo / redo ?
  • make the database complete
  • add functionality for picking existing excercises, sharing these, copying, editing etc.

Yep, there is lots to do and so little time.

A little bit more tchnical info in Part 3.

Reblog this post [with Zemanta]

Sunday, February 01, 2009

How Microsoft made me leave Google Chrome

.. well, not really

As I wrote in my previous post I am busy building a Silverlight application. This week I did some more work and ran into some very weird behavior.

I was debugging the communication between the Silverlight app and the web service and I ran into very strange errors. I noticed that in my final call in the webservice two string values were assigned to the wrong variables. They were swapped. The variable username held a piece of xml and the variable drawingXml held the username. Looking through my code I could not find the line of code where I made the mistake.

It was getting late already and this is still a POC, so I decided to just swap the place of the parameters in the method definition and investigate further at some other moment.

I stopped the debugger, made the change, inserted a breakpoint and started debugging again. That's when I completely lost any understanding of what was going on.

It was late already as I said and I blamed that and I was too tired to think straight and probably was debugging at the wrong place in the application. I decided it had to be me and had to just let it be. I walked a block with the dog and went to bed

The next day

The problem stuck and I had to investigate further so I started to change my Silverlight application so it would show some debug info in the browser to make things easier to debug.

That's where things started to go even crazier. The Silverlight application didn't show anything. The TextBlock I had added to the XAML wasn't showing up! I tried again and again. But nothing!

Google ChromeImage via Wikipedia

Then I realized that Google Chrome (my default browser) had a problem with caching. The Silverlight application in the browser was an old version of the application. Apparently, Chrome was not refreshing the XAP file!

Googling about I saw some posts about the same problems developers had with Flash. Then I sighed and I knew it was not me.

Google Chrome

So, that was it for me. I had to revert "back" to Firefox for debugging Silverlight applications. A weird feeling having to step away from Google Chrome.

I still remember that I watched the launch live on my laptop. I watched the first part in Firefox and started downloading during the presentation. Installed Chrome and watched the last part in Chrome. I also set it to be my default browser and only occasionally I use Firefox and other browsers. Well, I have to I build websites!

Microsoft made me do it

So, in a way Microsoft made me switch browsers, made me move away from Chrome.

But it's not that dramatic. I only use Firefox now for debugging Silverlight and for day to day browsing I still use Chrome.

Had I been a Flash developer, it would have been Adobe that made me switch from Chrome back to Firefox. But still only for debugging.

Reblog this post [with Zemanta]

Monday, January 26, 2009

Building an application ...

.. from idea to reality

As posted before I have some plans for this year. One of these plans is building a complete on-line application all by myself using interesting technology. In this first post I will tell you a bit about the architecture I am using to build it.

Let me first explain (maybe again) that I am web developer and I specialize in C#, ASP.NET, HTML and CSS. Above all I like to experiment with these and do ineteresting stuff from time to time.

With the application I am building I want to solve a problem that I experience myself. This ensures that I will have at least one satisfied costumer. First I will very briefly describe the problem I try to solve and then I will tell a bit about the architecture I have planned.

The problem to solve

When you try to build any application you must have a purpose for it and understanding the purpose is part of the solution. Also being able to relate with the owner of the problem is a big advantage. In this project that is all taken care of. I am the owner of the problem.

In my spare time I am trainer slash coach of the Ladies fieldhockey team of MHC Steenwijk. They are doing great this season and have so far won every of their ten games. This puts more pressure on me than on them as I need to give ever better training to them. I see that as an extra challenge and it gives me even more fun and satisfaction.

As part of the preparation of each training I give I need to document my training. I have to think of a subject for the training (like improve position play, penalty corners, scoring) and then I have to find excercises that support that goal. These excercises need to be drawn in a diagram. I simply have to place some pilons, players, opponents and then add some arrows showing where the players should run and pass.

This is something I usually do on paper with a pencil and I can do it in just a few minutes. But if I want to have these drawings in a digital form, then I could scan those or fire up Visio with a special stencil or go into an even bigger tool like Photoshop or Fireworks. All these tools are way too big for this and way too expensive. I want something that is simple and fast and does that what I want and maybe a little more.

Basic archtiecture

Being a web enthousiast I decided quickly that I want to build as an online tool. I looked at drawing using Javascript libraries and even studied SVG. But I let that be and thought this would be a really interesting project to build using Microsoft Silverlight.

All in all I needed a couple of components in my solution that makes it a complete, fully fledged application.

  • First there is a ASP.NET web page that holds the components.
  • One of the components is the editor with a drag and drop interface and some textboxes for inputting data like name and description of the excercise. This is done in Silverlight.
  • The Silverlight editor uses Isolated Storage for storing intermediate data on the client.
  • The Silverlight editor saves the data to the server through webservice. I have implemented an asynchronous call.
  • The webservice is the layer that gives access to the database, which will hold all excercises and, later, user data.
  • There is also a SQL Server database for storing the data.
  • Also on the page a PNG is shown as the result of the lines and symbols placed within the editor. When the excercise is saved to the database succesfully a callback function to the Silverlight editor the adds some HTML to the DOM among which is dynamically generated image.
  • The HttpHandler generates the images using the data from the database, which it retrieves through the webservice.

All these components are relatively simple. Well, except maybe the SilverLight editor. That will have all sorts of editing functionality. The image handler will just take the excercise data to generate the image. Quite a straight forward process. The database is quite simple and have only a few tables and stored procedures.

Status

At this moment I am close to having solved all the problems that are part of this solution. I can save and retrieve data, drag and drop symbols. Save to Isolated Storage. I have the HttpHandler producing some output.

Basically, I can start to fill in the gaps and then start to test in a real server and see if I can get the configuration all set up correctly. But then it just starts, there is much ore that needs to be added and there's a lot code that I need to rerfactor and clean up.

I have only just begun.

But do read on in part 2.

Reblog this post [with Zemanta]

Wednesday, January 14, 2009

A new year

.. a time to look forward

Sunrise shown in time lapse.  The motions of S...Image via Wikipedia

Now 2009 is officially on its way and it is passed the day for sending best wishes I will give a quick update on what I am upto in the coming time.

Currently I am involved in some projects at work (both insourced and outsourced) and personally I am doing a bit of a project as well. Let me tell you some things about these.

Work projects
Normal working hours
HTML syntax highlightingImage via Wikipedia

Working as a consultant I am since May last year working on a huge project for the Dutch Taxes. I was hired out to Getronics PinkRoccade, which was taken over by Capgemini. It's an interesting project. I think that's a nice way of putting it. My main activities are in programming parts of the Intranet site using things like C#, ASP.NET, WCF, HTML, CSS, SQL Server, SharePoint MOSS. All in a nice Team System environment on a virtual machine.

The funny thing is that my first ever job orientation I did was with Capgemini (I declined, finding it did not fit me). The first ever real job interview was at the Dutch Taxes. I completely flunked that as I had no idea what a job interview was. There were seven (!) people sitting across the table and that completely got me confused.

Other moments of the day

That project is not enough apparently and we are working on some in-house side projects. One of those is a Saas application we are devleoping. It's an online version of Microsoft team Foundation Server. Currently we are busy setting up the service. The accompanying site is getting close to full launch. The actual service is (still) in alpha testing and we expect soon to start with the first beta tests. All in all really exciting.

Coming soon

If that still does not seem enough there already running plans for a next in-house project. This is at the moment still hush-hush. But we intend to outsource some of the coding and also make use of our own Online TFS service. Can be really exciting as well.

Is there still time left?

Well, hardly any time left. But time enough to squeeze in a little project of myself. I am writing a small Silverlight application. To learn that environment, but also because I am need a tool to draw the excercises I use in my field hockey trainings. Usually I just jots some lines and arrows on piece of paper and that's it. But I want to go one step further and have something readable for others.

I have looked around the web and found some tools / sites. These are either big downloads and cost a little or a lot of money. But they all lack some of the things I want. I want to be able to share my excercises and let others use them as inspiration to create even better excercises. Very Web 2.0, very social app.

So, I am trying to set all these things up and have chosen Silverlight as the rich UI element for drawing the excercises.

Enough to keep me busy?

It seems I have a family as well and a hockey team and a dog and a cat.

Better get to work and than quick to get back again and be socially responsible.

Reblog this post [with Zemanta]