Automate, else Enforce otherwise Path of Least Resistance

These are my Three Principles of Pragmatic Process Establishment. From my experience, these are the only ways to successfully implement a process, no matter how much value it may add, or how simple it may be to follow. If these principles are not followed, neither will the process that has been put in place when it comes to the crunch.


Automation is the most desired and beneficial option. The benefits are obvious. If a process is automated the value-add from that process is gained, without extra effort from the team. For example, the simple process that developers should run the unit tests. The value is obvious. Errors are found earlier and higher quality code results. However, although this is a simple instruction to follow, running unit tests has blockers for many developers. Firstly, they take a long time to run. Secondly, not all are relevant to you. Thirdly, they may have environmental requirements you cannot or do not want to setup. This simple process also has a simple automation solution: have a continuous integration build server that runs all the tests for the developers on each check-in. All the benefits gained, and everyone will perform the process.

Another example is having developers log their time spent working against work items. Having developers do this is controversial (individual developers should never be measured, only the team as a whole), but the value is the schedule becomes very realistic and accurate based on actual burn-down rates. Time tracking is however, time consuming and error-prone. Developers tend to forget to record the time started, time finished and minus interruptions against each work item. The numbers are then fudged voiding all the value of the process. The automation solution utilized has been to use TFS Working On. The tool allows developers to very easily track their time, without wasting their time. The data is providing us with accurate reporting while dog-fooding our BI product.

Automated processes also have the benefit of accurate repeatability. If an installation package is fully created each build, the risk involved in following a multiple step process is gone. A typical Standard Operating Procedure (SOP) is usually a long manual process that is error prone, especially when under time pressure and reduces confidence in the end result, compared to an automated solution. Of course the negatives of this process implementation solution is that not everything can be automated, it may not work for all required cases or require ongoing maintenance, or may take a long time to implement.


When Automation does not fit enforcement is usually the next best. The reason a process even needs enforcement is that it will most likely not be the easiest thing to do. There is much value in doing it, but not necessarily by the person doing it, or not at that time. The enforcement itself must be a physical enforcement, not a SOP document stating “thou shalt follow”. By physical I mean generally technical. A document cannot be uploaded to SharePoint until it has certain properties set. Physical is like ballot papers must be folded, so they don’t fit in the slot on the box, until they are folded.

In the development world check-in policies are one of the best examples of enforcement. Here you can define your coding standards, code reviewer, check-in comments and work item association for example. Having these particular policies helps maintain higher code quality and readability, easier searching of history, and better reporting. The danger of enforcement is going too far and having people overwhelmed with the number of hoops they have to jump through to get things done, making them feel inefficient and ineffective. Each process enforced must be reviewed occasionally to ensure it is still adding value, and if found to be less value than that of the time it costs, it should be dropped immediately.

Path of least resistance

When a process cannot be automated or enforced it must be the easiest way to get the task done. If not, it will require someone to be the Sergeant to enforce the process which itself is time consuming, error allowing, inconsistent and demoralizing. Essentially a path of least resistance process is very simple and value is seen clearly. It could however be artificially made the path of least resistance by making the other paths more difficult or less effective.

Using a wiki for team collaboration and information is a good thing and seems like a simple enough process to follow. However, most wikis require custom syntax for mark-up and uploading images is a pain. What I have seen happen is email is just used instead, since it allows simple rich text editing, inline images and the information is directly sent out to everyone right away. This is almost an acceptable process over the wiki, but distracting email threads tend to occur, important emails are overlooked and new employees cannot access the information. What we have implemented instead is Microsoft OneNote for our wiki. OneNote is a rich client application that automatically synchronizes all the content locally, is searchable including text in images, can show a list of recent changes if you want to follow what is happening and all sections show who modified it and when (still needs proper versioning though). It has become the easiest way to share information among the team, and is a great resource for new employees.

General Tips

Begin a new process with as little as possible. Do not start a new form with a large amount of mandatory fields. Grow them as the required. The process will have fewer blockers, less red tape with little perceived value, and get more user buy in.

Do not over analyze. Analysis Paralysis is state I now know I use to get stuck in. Do something. Keep it light, nimble and able to be adapted quickly as it matures.

Re-evaluate occasionally. Make sure you are getting value out of what the process is requiring people to do. If the cost is high and value is low, either look at how the cost can be reduced through automation or trim some of the fat of the process that is yielding low returns. If people are having trouble with the process, don’t blame the people. Focus on smoothing out the bumps that are causing them to fall of the path.

Do not provide much documentation of the process. The process needs to be simple to follow and self documenting, i.e. each step points to the next. Documentation tends to be TAGRI and will either stop a process being nimble or quickly become out of date with the process. The best option for documentation if it is required is to have it automatically generated.

A good process will perform under pressure. Do not abandon it to save a penny now, because it should save you hundreds later.

Opera please compete, not complain

I really like Opera. When I need to do some browsing, I open Opera. It’s full featured yet not cluttered. Mouse gestures and the render speed make it very fast and efficient to do browse many things at once. However, the gap I find it has in speed and ease of use is closing. I still use Internet Explorer. It is set as my default browser. Opening links from emails or whatever, IE is just far more convenient. It feels lighter for the smaller tasks. And now with IE 8 on Windows 7, pinned web pages and frequently visited have an even lower barrier of entry.


I wanted to know, before I install the beta, does Opera 10 make proper use of Windows 7 Jump Lists. How nice would it be if your Speed Dial was in your Jump List? I don’t know whether it is or not, but my problem is when I searched for it I don’t find what I want, and I find myself reading again the garbage about the Opera CEO complaining that Opera isn’t installed by default on Windows but IE is and users should have none, or all browsers installed for choice. What annoys me about this is that it is the OEMs Opera should be pushing to install their stuff. Prebuilt PCs come with plenty of crapware, it would be a pleasant change if some of it was good. Also, they do not complain about Apple including Safari in OS X, or Ubuntu including Firefox, and do not push them to install Opera. The Google Chrome guys made the point with this video that the end user really does not even know what a browser is (I tried this one on my wife, who I have using Opera, and my Mum, both gave the same kind of answer as the people on the video. I found it fascinating, try it on your friends.). So claiming that the end users are the ones that want more choice seems difficult. Multiple browsers installed as a suggest best solution, is by far not the best solution. The end user only cares if it is simple and works. More choices for most users is just more confusing.

I am probably being too hash on Opera. More competition is certainly good. Firefox’s popularity gave Microsoft a kick to finally get moving again with updating IE from the dated version 6. Personally I don’t understand why Opera is not more popular. The guys at Opera are doing awesome work. Simple features like mouse gestures, speed dial, custom searches and Opera Link make using it quicker and simpler than others. Opera 10 has some nice features like inline spell checker and auto update. I’m unsure how Opera Unite will go. The video show the purpose of Opera Unite is really cool. The feature that I find potentially useful at the moment is the file sharing, for access to my home PC from work, but there are other ways to do that. So as with any platform it will succeed if it is embraced by developers with some killer apps. Until then best of luck to Opera.

Technorati Tags: ,,