Tuesday, 23 December 2008

Code Review - How to miss the point...

Sometimes your arguments just don't weitght enough in the balance... 

I had the opportunity to "attempt" to contribute to Esther Schindler's article on Code Review.  She reached out on LinkedIn and I offerred help.  Now that I am reading her article I have many dissapointments.  Mostly related to not being able to make my contributions useful. 

Right from the get go I warned her about "meeting driven" code reviews.  These code review sessions where people each bring a tree's worth of paper and then beat the s**t out of the code worked on for a month.   They generally also spend a day reading a massive and scary amount of code before the meeting, a very costly process needless to say with limited output in general (at least from my experiences 10 yrs ago at Bell Northern Research and later at Nortel).

I could see from the other contributions she was provided with that this was the route she was about to embark when talking about code reviews.   Her article is filled with reference to "weekly review meeting"... or "meeting driven" code reviews. 

A couple good take aways are:
  1. Jason Cohen from Smart Bear who is talking about a code review style that makes more sense, closer to what we believe in at Macadamian. 
  2. Someone from Google who's is suggesting to do design review before you even consider doing code review. 
If I had to write that article I would put emphasis on what has helped us here to improve quality:
  1. Small and frequent code review.  Get code reviewed on a daily basis.   This ensure you catch errors as soon as possible. 
  2. Do design patch review - Just In Time Design - JITD (expression first heard from the mouth of Francis Baudet's sometime in the summer of 2008... ;-) )  This process, not only ensure that the first line of code will be a valid one, but also ensure that the deveopper starting the work took a step back and thought about the code to be written before to start writting it. 
  3. Tools stack.  Do not neglect the use of proper tools to do the job, emailing a patch to each other works, but now a day there are very good tools out there.   
Last but not least, for code review to be effective you need:
  1. this process to be part of your culture,
  2. to foster an egoless programing environment, ensure understanding of the "what's in it for me" for your developpers,
  3. to not only rely on this process to ensure quality.     
First and foremost, you need to not do code review once a weeek but have this process part of your complete breakfast.

Thursday, 18 December 2008

Innovation through UX

This blog post by Jen has attracted my attention... I will probably state the obvious the same way Matt is good at doing (so he claims)... ;-)

Jen's post makes it obvious to me that the UX phase in a project might very well be the "easy" way to innovate in a project.  By comparison to a project without UX.  Here is why. 

First, software engineering people are mostly concerned about construction of the software.  Their focus is delivering the code.   

Second, software engineering people are... software people., this is their expertise. Many of these guys will be concerned by usability or innovation but this is not their primary focus.  They are first and foremost experts at software technology, tools, languages, software design patterns, mostly software creation centric stuff... (I believe for most of them at least)

Our UX team is by contrast much more in touch with the research world, it seems to be a natural aspect of their role to be aware of what is out there so they can integrate these academic projects into a real projects. 

In the example brought up by Jen it is clear that a software engineer could have thought of the multi-vibration thing but probably without awareness of the research project done in a particular university.  It would probably be a "wouldn't it be cool" kind of enlightment.  

As valid as this "wouldn't it be cool" idea might be it would lack the link to the academic research and would probably be much harder to sell if at all possible.
 


    

Thursday, 11 December 2008

Tasks in Gmail!

Finally!  This is a premature post because since I have not played with it very much yet but in case you did not notice that it was added recently, now you know!

The one sad thing is I have not found a way to import from RTM... That's going to be annoying... Hang on... Google API... Mmm nothing there yet... 

This is to my knowledge one of the key feature that was missing to the "Google way" to email...

Tuesday, 18 November 2008

ProjectTools part of the InfoWorld 2008 Top 100 IT Innovative Products

What a nice way to start the day! Yesterday Macadamian was awarded one of the top 100 company that have made use of technology to enhance their business.

Somewhere back in 2004 we started to be concerned by the effort that was required to be effective at project startup, monitoring and status reporting.

We envisionned that it would be a real challenge to provision all our projects with the apprioriate knowledge management technologies and to monitor them with consistency.

With now more than 100 projects starting and ending every year we can say thanks to this early vision. Needless to say that the pressure at being efficient and predictable was high and this is still an important concern at Macadamian.

"Let's automate all that". Our concern for efficiency and predictability gave birth to what we called Project Tools. What is Project Tools?

Project Tool is a software product that aims at:
  1. Automating the innitiation of our project's knowledge management infrastructure (KMI). All tools needed for our projects are ready to go in no time (issue tracking, wiki, source control, mailing list, news groups, SFTP, continuous integration, IRC, etc...)
  2. Managing access control towards all system of the KMI
  3. Collecting projects progression metrics.
  4. Reporting objective information on progression.
It is outside the scope of this blog post to go deeper about what it is, how it works and so on.

Today I want to say kuddos to everyone who contributed to this project.
Thanks to you Francois, Pierre, Benoit, Sebastien, Jake, Jimmy, Richard, Rafy, Karen & Irina. It would not have been possible to achieve this without you.

Last but not least, this award would not exists without Teresa who submitted ProjectTools to InfoWorld. Thanks to you!

Wednesday, 27 August 2008

Predictability and objective historical information

Over the last two weeks I have been involved at the process of interviewing project managers for an coming project.

A few positive things are striking me:
  1. Eloquence. All the guys I have talked to seems to have a facility at talking. This is not a skill you can filter from their résumés. You expect this from a PM but I was expecting some to be weaker on this front.
  2. Deep understanding of what they did. Although their experiences were high level project management (not technical) they would all be able to describe in a fair amount of details the projects they worked on. That's good.
However, a few not as positive things are striking me too:
  1. Predictability. Let's face it, software projects are slipping for many reasons. However as a project manager you want to reach a point at which you will know with a rather high level of certainty when you will be completed. Periodically pushing back the delivery date is a bad thing both internaly and externaly. None of the guys have brought this up. It feel like this is even not a word they know about. It's like if this is external to them, don't shoot the messenger kind of attitude. I think this is wrong.
  2. Historical Information. When talking about estimation, re-forecasting and schedule slippage one would hope that historical information is valued as a way to improve predictability. Apparently not.
  3. Subjective info is king. Last but not least, it would seem that very few metrics are being used by the people I have talked to. This surprises me, they all had some form of PM certifications. What if the people that brings you back the info are bad at estimating? This one beats me.
Obviously, maybe the questions I have asked were misinterpreted, but I am telling you I did all I could to get them to tell me about predictability, historical and objective information.

The lesson here to me is that we will have to train this new project manager to consider looking at the past to improve predictability.

After all, this is rather simple thing to do. Take your velocity/productivity/burnrate (call it however you want) and apply this to the remaining work to do. Chances are that the estimation mistake you made so far are existing in the up coming work too.

With this approach, at least, you have an objective basis for the project change (feature, time, $$) you will have, like it or not, to ask for.

Monday, 25 August 2008

This is so 1990

Sometimes I just can believe how people are getting stuck in their comfort zone. In this case, using folders as THE way of organizing email. I was 100% sure that this debate was over now, that folders (and trees of these) were bad, one of these evil creation of software people.

Coincidentally, I have a draft blog post which is totally the opposite of this guy's perspective. There is no way I could have been more effective at dealing with my Inbox content when I came back from vacation than through the Gmail client. (note that I have not tried Yahoo recently - last news was that this was simply another Outlook on the web)

His discussion on the whole unmanageable Inbox made me laugh too! Effective handling of incomming emails can be imroved through the use a powerful email client but most importantly I believe it is process thing. Looks like he did not buy into the Zero inbox concept I am referring to here.

I need to publish this "Back From Vacation" blog post...

Saturday, 16 August 2008

GPS for software team

I referred to my vacation in one of my recent post. We left NYC on a Monday at around 19h. That was fun. Thanks to my GPS.

It reminded me my father who, 20 years ago, got lost while attempting to leave NYC. He ended up in the Bronx (or was it Harlem?). He luckily got assistance from a police man, who told him something like "follow me I will escort you out of here, do not stop if you do not want to loose all you have with you". He was driving a shiny mini van full of bells and whistles. A quite scary moment for a unilingual Quebecois.

This made me realize that we have several tools at Macadamian that serves the same purpose to a team than a GPS to a driver.

The most important is probably what we refer to as the "Remaining Effort" graph.

With the assumption that:
  • All substantial tasks are recorded in the tasks system
  • Tasks life cycle is followed
  • Time spent on the project is recorded in the time sheet system
This graph shows a quite accurate representation of the remaining effort and the remaining time budget for a project.



In the case of the project above, the team has been beating the estimates throughout the project. The remaining effort - red line - was always below the budgeted effort - green line.

When this happens, we are in for a nice and smooth ride. Obviously, we also have cases where our estimates are wrong. It is then, that we - and our customers - get the most value out of our project progression monitoring technology.

Obviously, this graph is not telling which direction to take but it is at least telling you that you are on the wrong track and this, sooner than later.

Friday, 15 August 2008

Estimation

I am receiving the news letter from the TechRepublic. Most of the time I am only reading the titles and move on. Yesterday an article attracted my attention.

Use a pilot project to confirm estimates and lessen risks.

That is interesting in the context they describe where they have a project involving the execution of a task many times. If you made a substantial mistake at estimating the repeated task, sure you will slip big time.

In my humble opinion what is important with estimates is that:
  1. You estimate everything you do.
  2. You get everyone involved in the estimation process, especially the ones doing the work. This way your whole organization improves on this front.
Last but not least: you give exposure to your estimate and make it clear that they serve a purpose: being predictable.

Tuesday, 29 July 2008

your process -> my process

Picture this. I am back form Cape May with my family, we went to a restaurant altogether once. 18 of us, 10 adults, 8 kids from 5 families.

When we showed up they opened a new room for us. We sat down at three tables, one kids only, one adults only, one mixed. As you can imagine, a waitress nightmare.

When we started ordering we learned that they could not make 5 invoices, they could not simulate that we were using 5 tables, we would not have eaten at the same time (I did not get that one).

Seeing this I decided that I would take the bill and split it myself.

This is clearly a case where one's process has created a mess on another one's process. The ordering process had to win over the paying process.

It took me a few minutes to categorize the orders by family and and split the bill appropriately. Not a big deal but a clear annoyance when you are the one paying.

Could the waitress have avoided me this? I still think so. But what has happen? It is simple: a lack of consciousness that a failure at one process causes negative consequences onto another process down the stream.

This is something we are careful with at Macadamian. One critical area where this could dramatically slow down a development team is with the patch creation and code review processes. The former flows into the later. A failure at creating a high quality patch will add delays and waste in the code review process. We teach our joining team members about this in our Dev-101 training session.

Thou shalt create a high quality patch for the code review to go smoothly.

This sound like a no brainer. That said, it's easier to convinced someone of something when "there's something in it for me". In this case, a good quality patch will reduce your chance of rejection and speed up the code review process. Which is clearly in your advantage.

What was in it for the waitress? Simple, a more satisfied customer will leave a bigger gratuity.

Friday, 11 July 2008

It's got to hurt....

Yesterday a citizen from Gatineau was publishing an comment in LeDroit newspaper about innovation.

He was talking about the how messy and broken our roads are by referring to their numerous holes they have (nid de poule in French). He was somewhat pissed at seeing how the blue collar can mow lawn and do all sorts of tasks with efficiency by using various smart tools and comparing this to how poor they do the job at fixing the roads.

He was, in other words, asking them to innovate and fix this problem once for all.

That made me realize that it's got to hurt for one to innovate. The cities by sending a team of 5 with one rake and one shovel to fix these holes are not creating a context that will trigger innovation.

Similarly, I got a urge to improve (and maybe innovate) this week following a rare but terribly bad project customer survey. That whipped me to ensure we put in place the measures to avoid these problems in the future - even if they are not common. This is my role after all.

When I look at the feeling I got this week related to that, it seems more and more obvious to me that to improve "it's got to hurt", and believe me it hurt.

Innovation does not imply improvement, nor does improvement impliles innovation. It seems however, that adding some pain in the mix you might get one or the other, and if you have the good people in place, you may get both.

T&M: Time and Money

I just discovered this Video broadcasting platform - MyDeo. This is like a private YouTube. The problem is I got a problem with their account creation process.

After emailing their customer support team, I immediately got a reply. Obviously I created a "Corporate Account" this probably raises the importance of the incoming requests. However, they nonetheless reacted within minutes and even called me to resolve the problem.

I did not even had the time to consider trying another such service provider. It is taking me longer to write this post than it tool them to help me. That is good customer service. You might want to check them out if you need to share videos in a private manner.

So maybe as Jason is right when he says that T&M should mean Time for Money but I believe that T&M can also mean Time and Money... With the little time it took them to help me, they are getting closer to get my money. ;-)

Wednesday, 9 July 2008

The AgileJournal

The AgileJournal is publishing an interesting series of article about distributed software development in this week's issue. Have a look.

Saturday, 7 June 2008

FIXME and TODO

Part of our development process is the need to show your code - by the mean of patch/diff files - on a daily (aka frequent) basis. Doing so, you are more often than not showcasing work in progress.

There are several benefits in enquiring frequent feedback on your implementation:
  • optimizes design quality
  • reduces potential waste caused by misunderstanding sooner than later
  • promotes top-down software development
However, the team need to pay attention to the various TODOs and FIXMEs that are creeping into the code base. Unmanaged TODOs and FIXMEs will come and bite you at one point in the project if you are not managing them - this is stating the obvious - they can be evil to your project.

If you do not want to create tasks and estimates for each of these you have to keep them visible to all team members at all time. Some IDEs offer the meachanism to create warning in the build log when they encounters certain keywords, this does the trick nicely.

When this is not possible a simple: cat logfile | grep 'TODO' part of your build process will do the trick.

It also appears to be a good idea to ask your developpers to put their name beside their TODOs this way you will know who to talk to in two months when you will be wondering how to get rid of the TODOs.

Sunday, 25 May 2008

Checklists in the real world...

This afternoon I understood the real reasons why checklists are important.

I flew a small Cessna-172 Golf Bravo Golf Zulu. Although I have been a believer in checklists - even though their use is challenging in the software world - I realized how critical using them can be and how useful they ought to be when comes time to inspect a plane before to take off.

No, my pilot was not holding a piece of paper and a pen, checking things off a list. He did not even know the exact number of items on the list. He just did the inspection required by this process with our possible death as a consequence of a checklist failure. This was enough for him to do it diligently. Thanks Marc!

We have many occasions to use checklists when creating software products, there are indeed plenty review processes at all phases of the job:
  1. Specification
  2. Estimation
  3. Architecture and Design
  4. Code
  5. QA
  6. etc...
I am observing that we sometime fail with checklists. Although we do it correctly most of the time, sometimes we still fail.

After today's experience, I believe that the answer to checklist success lies in a couple factors:
  • Professionalism
Understand your role when reviewing and the impact you can have on the overall quality and risk mitigation.
  • Agility
Assuming professionalism, you do not need to tick things off a list to claim that you have applied a check list. In doubt, go back to it when needed, revisit the checklist to confirm your understanding of the checklist.
Next time you are provided with a checklist, do not necessarily think that you have to print it or tick things off of it to use it, be smart and agile enough so you can perform the review process with diligence.

To help with applying checklist, imagine that you are reviewing a component of a plane that you will fly, I can assure you that you will likely do the right thing!

To get a feel of my flight load this into Google Earth, select it and hit play.

Tuesday, 20 May 2008

Your customer (or your boss) is using a newer MS Office than you...

Install this Microsoft Office Compatibility Pack for Word, Excel, and PowerPoint 2007 File Formats

Although the converter is crashing on me more often than not it seems that it converts file properly...


Friday, 16 May 2008

Remember the Milk for the BlackBerry

Motivated by Fred's post this morning, I decided to have a look if the BlackBerry interface to RememberTheMilk was ready. Well, guess what? 2 days ago was released V1.0.6 for BB OS 4.2.

This is not what I was expecting. This is simply a sync between the RTM and the BB tasks application. Although this makes sense in theory, it is very limiting compared to the awesome Web2.0 RTM plugin for Gmail, and I was hoping for a BB app along these lines...

In any case, for now, this is much better than nothing although once the 15 days trial is over I will need to register to RTM Pro edition.

All in all, considering that RTM allows me to be in control of my action items buying the Pro version is just a no brainer to me.

Measuring Project Success

We probably have in general more than 50 projects going on simultaneously. This is a lot of projects. They start, they end, we move on.

How do we know that we have succeeded?

It ultimately comes down to one or two factors, these two questions are asked in our customer satisfaction survey sent out at the end of every projects:
  • Would you do business with us again?
  • Would you recommend us?
Getting yeses on these two is THE indicator that you have succeeded. Obviously the fact that our customers believe that we have met or even surpassed their expectations does not mean we have built the right product - which is something we greatly care about - but at least we have built what they were asking for.

When our customer are telling us that they would do business with us again and/or that they would recommend us we are happy.

I was reading this article about Measuring the success of a project and although the suggested metrics make sense, they neglected to consider the fundamental questions above and focused on secondary aspects (schedule, scope, budget, market acceptance, customer sat in terms of # of complaints).

In a service company, getting repeat business is what makes you successful even though you could not respect the schedule at 100% or meet the budgetary expectations.

Getting repeat business especially after though times implies trust and this is a warm feeling.

Tuesday, 13 May 2008

Powerful team collaboration using wikis

We have been using wikis for several years at Macadamian. After looking at a few options we decided to go with Atlassian's Confluence and are quite happy with it. It is not uncommon for customer's to tell us that they are more informed about what is happening within their Macadamian team that they are about their internal team.

What we do and how we do it with Confluence is partly responsible for this.

A recent verison upgrade has brought to my attention two plugins that are key in getting the most out of such a collaboration tools. Here what they are. Maybe your wiki provides similar functionality, if not let me know I can help. Macadamian is an Atlassian's partner.

Most visited page.
{popular:timespan=30d|events=create,view,update|
max=10|space=msp|types=page}
This provides you with the most frequently visited pages. In the context where your project assets are stored in your wiki. These pages are likely hot topics in your project.

Search

{livesearch:spaceKey=MSP}
Unless you are stuck in the 90' chances are that you are not browsing the web but searching it. This simple macro does this nicely for you, allowing to narrow the search to a particular space/project.
Last but not least, a wiki that offers the ability to create RSS feeds is very powerful. If your people do not like to go to your project home page to digg out recent changes, promote the usage of RSS feed.

The idea is that people will converge on your collaboration platform if there is something in it for them. If used properly, any project team member should find important project resources in the project wiki.

Oh, and finaly, do not neglect to train your people!

Sunday, 4 May 2008

When an image is worth 1000 words...


Earlier this week Francois (from Cluj - Romania) and I (in Gatineau - Canada) could not use email to solve a situation, it was simply not the right tool.

We quickly got connected on VoIP and still managed to fail at understanding each other.

This is when I remembered http://www.twiddla.com/. Thanks to their guest trial thing, no accounts to create nothing, nada, niets. We were up and running on their online white board in no time.

We managed to resolve the situation in about 5 minutes, this wouldn't have been possible otherwise. When email and voice is not enough, an image might very well be what you need.

Realistically, this image above is not worth more than a couple dozen words to you but it was worth one thousand to us. ;-)

Thursday, 3 April 2008

Test Driven Development

One of my esteemed college has been talking this week about the importance to train people on the Top 10 Bug Patterns. I thought this was a very interesting idea that we should pursue.

After all it is not that complicated to inject these common defects in a dummy application and let people chase them.

However, this led me to think about what can we do to avoid these bugs in the first place, and then looking at them one at a time, it became clearer that most of them (if not all) can be prevented using Test Driven Development.

I believe that having strong debugging skills in a team is a must but I too believe strongly that there is no better debugging strategy than one that requires from you that you do not let them get into the code base in the first place.

Obviously, TDD does not apply when you are provided a broken application to work with but this is not the normal case, we generally start from scratch.

I would not sacrifice our XUnit testing training in favor of a debugging training... Thanks Didier for the seed!

Tuesday, 1 April 2008

Bar Camp

We had a lot of fun yesterday playing with Google Android. We have not created the killer app yet but this BarCamp process is very powerful as it consists of bringing together a bunch of passionate people around a subject and let them run with it.

Looking for innovation form your people? Give them the opportunity to make it happen and who knows maybe you are on the road to create the next killer app.

This is one thing I like at Macadamian, we all have the freedom to make these events happen, the company is behind such initiatives big time.

Monday, 31 March 2008

Killing inefficiencies one at a time... (Part-1)

This theme is based on Gille's famous "Twelves Weird Links of Christmas", he has been posting funny links on our Intranet, I am proposing a similar series on common inefficiencies in the work place.

This could be ugly, I am a sarcastic person (yep this played against me in the past), hopefully it will be more funny to you than anything else, however, if the hat fits you, I will propose alternatives to these inefficiencies so you can act on right now.

Jason Womac is earning a living telling people how to use Outlook. More recently (not that recent anymore) Merlin Man from Google posted his famous Inbox Zero


These guys got it right, there is a serious problem with email (we all know it) but it is pathetic to see how few people seem to be acting on this problem, the sad things is that there are solutions and they do not require a huge investment.

Somehow inefficiencies in managing email seems taboo, you can offer help as much as you want people will generally ignore you. Even when they are in a crying need for help.

To me, my email handling inefficiencies started to fade away with Womac's talk, I then reached more recently paramount when I got rid of Outlook in favor of Gmail. (more on my tool box later)

In the mean time, if you are recognizing yourself in the quotes below chances are that you are in need of help.

- I am often looking for that email but I can't find it anymore.
- My inbox has more emails in it that the screen can show.
- I am frequently wandering in Outlook folders, scrolling like a mad man, for this email.
- What should I be doing now, I know I have a few tasks hidden in my inbox.

(to be continued...)

Wednesday, 19 March 2008

Another Epheblog?

EPHEBLOG: noun, (gr. blog that is of short duration) 1.Is said of a blog that last for a short period of time. Said to be pure when for a specific short punctual event.

I am making this up.

This got to be my twentieth blogs since 2001. Most have been pure
epheblogs. A couple with more depth... But a readership of zero has always made me wonder about the value of the exercise...

In anycase, for posterity, you can expect to find here some thoughts on Process Improvement.

Btw, it.is.pi comes from the title of a slide I created one day working on my objectives related to Information Technology, Information Systems and... Process Improvement.

A lot of what makes life interesting in the work place is often due to the smartness we see in our peers. Working on a project where everyone knows where they are going (and seeing they are effectively going there) is a chance.

This certainly means one thing to me, although a lot of the challenges are external and we have no power at them, we can certainly have an effect on what's internal to each one of us... getting better at doing this, using this tool for that, eliminating waste when possible, etc...

This is what process improvement is all about, this is what I want this blog to be.