Saturday, May 27, 2006

Piece of Mind from IBM

I picked this lovely quote as I was reading Michael Bowler's follow-up of our Agile Coaches meeting:

"People don't do what you expect; they do what you inspect".
- Lou Gerstner, former CEO of IBM.

AddThis Social Bookmark Button

Friday, May 26, 2006

How Do We Start with a New Project?

When we start with a new company, a new team, a new project, we want to make a difference. How do we begin? Some make a furious and forceful start - "What a nice day to make a revolution". Some take a careful stealth approach - "A slow camel goes farther than a fast horse". What course do you choose?

I was reading about John Kennedy and his and first weeks in the White House. In two months after taking the oath Kennedy had issued 32 official messages, delivered 12 speeches, published 22 executive orders, sent 28 communications to foreign chiefs of state, and held 7 press conferences.

This performance is fascinating. I can only guess what it takes to write an executive order, but as a Competent Toast Master (CTM) I witness that 12 speeches in 2 months is a full time job by itself!

With his vibrating energy, hard work and outstanding performance Kennedy set up the pace for everyone in Washington. He won support, sympathies and admiration of millions in America and the respect of billions in the world.

Kennedy chose a race start approach inspired by Richard E. Neustadt's "Presidential Power". Neustadt wrote that the public impression of a chief executive "takes shape for most constituents no later then the time they first perceive him being President".

History didn't give Kennedy much time. He couldn't afford to move slowly. He hurried up as if he knew it. He made a great difference.

When we start with a new company, a new team, a new project, we want to make a difference. How dare we think we've got much time?

AddThis Social Bookmark Button

Saturday, May 20, 2006

Pain of C++ Refactoring, 2006

It was the end 2004 when I wrote about the "Pain of C++ Refactoring". What has changed?

Many hopes were held for Visual Studio 2005. It came out with first class refactoring support for C# folks, who by the way were already happy with beautiful ReSharper. For C++ people, the new Visual Studio was a big disappointment: no C++ refactoring whatsoever.

What else do we C++ developers have around in 2006? Well, not a whole lot.

Xrefactory crawled from version 2.02 to 2.08 with no major changes. Maybe for UNIX folks auto-completion and full undo are new and exciting features well worth $400, but I'm just too spoiled by Visual Studio to give up its usability for Emacs with primitive refactoring support by Xrefactory.

Ref++ Visual Studio plug-in grew a lot since I tried it last time, making its way to the top of Google. Under active development, it is $60 for a single license and may be worth a closer look. So far I am not aware of any team using it for real. If you do, please let me know.

SlickEdit is the new kid on the block. It comes as three products: a full blown code editor, an Eclipse plug-in, and a Visual Studio plug-in. To get it, I had to fill in the web form, register, give them my email, and wait for the trial key. When I finally installed the plug-in on VS 2003, it failed to do any basic refactoring on a two file project. The Slick broke its neck somewhere in STL because I dared to use stl::string! In frustration, I threw it away. Later, it turned out I was not the only one who uninstalled it in 20 minutes.

There are rumors that Eclipse C++ Plug-In will soon have some C++ refactoring, but 1) so far it is only rumors and 2) I don't see mainstream C++ developers migrating from Visual Studio to Eclipse.

Why is it that 7 (!) years after Martin Fowler published his "Refactoring" bestseller there is still no reasonable and recognized C++ refactoring tool? I think there are two reasons. First, C++ as a language is just too complex. Making a refactoring tool is a challenge, let alone making it perform reasonably. Second, C++ folks are outnumbered, and outdated. They are not doing refactoring, not interested in doing refactoring, and do not demand the refactoring tools. For software vendors, the market isn't worth the challenge.

A silver lining: C++ is not so bad. Try COBOL.

AddThis Social Bookmark Button

Thursday, May 18, 2006

Pain of C++ Refactoring, 2004

A year ago I wrote:

Why are Java people so lucky (have you ever saw how easily they do their refactoring in Eclipse or IntellJ?). And we, C++ developers, are doomed to spend such huge efforts for simple changes like "rename class", that we experience great deal of resistance for doing it at all. And finally we either give up and leave stinky code as it is, or, without good tool support, try and fail, resulting the code to rot and stink even more.

Michael Feathers, author of "Working Effectively with Legacy Code" and developer of a famous CppUnit, asked exactly this question: Aren't C++ Programmers People Too?

I wondered is the situation so desperate indeed, and found just two refactoring tools around:

Ref++ tool (integrates with Visual Studio.NET)
http://www.ideat-solutions.com/refpp/index.htm

XRefactoring (that's actually for EMax user)
http://xref-tech.com/xrefactory/main.html

In 2004, none of the tools didn't come any close to what I needed. What had changed to the better since then? Will share with you in Part II.

AddThis Social Bookmark Button

Friday, May 05, 2006

Role of Software Architect

Excellent article: An Overly Long Guide to Being A Software Architect by David Ing. It is a long read, so make yourself some comfort time to enjoy David's 11 bits of advice. Some of them is a good repetition of old truth, well worth repeating. Others brings new thoughts and ideas. Reading some of them made me laughting at my reflection in their funny mirrors. Enjoy.

AddThis Social Bookmark Button