Archive for June, 2005

Another MSF agile release, but still no sign of it’s big brother and it’s big brother is coming!

Wednesday, June 29th, 2005

Last month I posted about the latest MSF agile release. Another release of MSF agile has been posted, with no official word about MSF for CMMI, or so I thought!

In a recent post on his blog last Sunday, David J. Anderson reveals that: “We’ll be releasing the beta of MSF for CMMI Process Improvement on MSDN next weekend”. I hope it’s been worth the wait.

Steve Balmer in oz

Tuesday, June 28th, 2005

I was fortunate to be invited to “gatecrash” the presentation by Microsoft CEO Steve Balmer to the Microsoft’s Australian partner community yesterday.

I say gatecrashed because I was invited to go by a previous employer who is a gold partner, and managed to get a seat right at the front in the third row.

The presentation was kicked off by Steve Vamos, the CEO of Microsoft Australia, before Steve Balmer’s presentation.

Steve had obviously been through the presentation several times before and had had a long day, so his presentation was excellent by Australian CEO standards, but well shy of a Steve Jobs Keynote or even himself running into the room and shouting: “Developers, developers, developers, developers, developers, developers, developers, developers!”

Microsoft CEO Steve Balmer onstage with Australian CEO Steve Vamos at the Microsoft Partner briefing, yesterday.

The most interesting part of the presentation was the last question that was asked by the crowd: “Why was Microsoft even bothering with MSN search?”

Steve’s response was an enthusiastic, motivational retort that to me, highlighted the difference between CEOs like Balmer and his aussie counterparts.

Steve Balmer’s persona creates a larger than life character, who embodies the DNA of his company, truly believe in their products, and can motivate even non-employees to the Microsoft cause. I can’t think of any Australian CEO that has the same level of passion for their work, or can motivate their employees in a similar fashion. At this point the ex-Microsoft employee sitting next to me turned to me and said; “now THAT’s the Steve I remember”.

Unfortunately very few, if any, Australian employees will ever experience a CEO that can truly inspire them to action, or to join the fight in a “war” against a direct competitor that must be won at all costs. I know I am still waiting, and I don’t expect that day to come any time soon.

TDD. Yoda get’s it! Do you?

Friday, June 17th, 2005

Do you get Test Driven Development (TDD)?

I would like to think I am a TDD practitioner but, honestly, I’m not. I understand TDD, I know the theory inside out and back to front, I can write automated tests in my sleep. I can perform cylcomatic complexity analyses of code and reduce my testing efforts through combinatorics, but none of that matters, ’cause TDD ain’t about testing.

Chris and I met with Jonathan Rasmusson from Thoughtworks the other day to discus a presentation that he will be delivering to our developers next week about TDD. During that short session I finally realised why people have trouble using TDD. They think it’s a testing technique.

Signs you don’t get TDD

The first step to recovery of most problems, is to accept you have a problem, and only then you can do something about it. A lot of people think that they get TDD when actually they don’t.

If you answer yes to any of these questions, you probably don’t really get TDD.

  • Do you think TDD (and other Agile techniques), are just a new name for something you have been doing for years anyway?
  • Do you develop your unit tests after you have written your code?
  • When you estimate a development task, do you include separate time for design, construction and unit testing?
  • Are unit tests something you will do only if you have time, and they are the first thing to be cut when the schedule gets tight?
  • Do you see little value for writing new tests for existing code, even if it is under active development?
  • Do you think that unit tests are all about meeting a requirement that has been forced on you, and they add little true value?
  • Do you feel, achieving 100% code coverage with tests is a completely unrealistic goal?
  • Do you think that test code does not need to be of the same standard as the code of the application itself?
  • Do you see no value in writing a new test for each defect that is found in the code?
  • Do you think TDD is a testing activity, as opposed to a design or coding activity?

Ok, so I don’t get TDD, what am I missing?

I think the key to truly understanding TDD is to stop thinking of it as Test Driven Development, and instead think of it as Test Driven Design. The practice of writing failing tests first is the nut to crack. Once you buy into that concept, and get to the point that you are no longer comfortable writing any code without tests, is when you truly get TDD.

Let me use an example. Say we are developing an application to book passengers on a flight from Sydney to Brisbane. The first thing that we would be able to want to do is to create a passenger to allocate to our booking. So we would write a test that creates a passenger and confirms that it is not null.

[Test]
public void CreatePassenger()
{
    Passenger Booking = new Passenger("Bruce McLeod");
    Assert.IsNotNull(Booking, "The Passenger created for new booking is null.");
}

Just by writing the test we are already making design decisions about the eventual implementation of our passenger class. We have decided on the name of the class, if the class is static or not and we have decided how the object’s constructor will be called. We are still yet to write a single line of actual code, and we are already making design decisions around how our code will be implemented.

This is what TDD is all about, making design decisions before we implement the code, and then validating the code implements our decisions by running the tests.

I have just scratched the surface of TDD, and there are far better people than me to teach you how to do it. To start with I would highly recommend the original Junit article, JUnit Test Infected: Programmers Love Writing Tests, a TDD webcast given by Jim Newkirk MSDN Architecture Webcast: patterns & practices Live: Test Driven Development, and Kent Beck’s book Test Driven Development.

So if you think this all sounds great, and you decide to give TDD a go, be prepared for a challenging journey. When the pressure is on, you will naturally fall back into your old ways of doing things. You will probably be slower than usual, and feel like a beginner again, and be concerned about all the “extra” code you are now writing. As pressure mounts try and stick with it. Remember, no one said changing old habits would be easy, and one day I may have even broken my own.

Remember the wise words of Master Yoda: “You must unlearn what you have learned. … You must confront Vader. Then, only then, a Jedi will you be.”

New MSN Toolbar adds tabbed browsing to IE6

Monday, June 13th, 2005

MSN have released a new version of their toolbar, which adds tabbed browsing to the current version of IE. One question immediately comes to mind; why is this being delivered via MSN, instead of as a core feature of IE?

Hell freezes over… Apple to will start using Intel processors

Friday, June 10th, 2005

At his keynote speech at the 2005 WWDC, Steve Jobs announced that they will begin switching to Intel processors in their macs, beginning in 2006.

Interestingly, he also confirmed that Apple had indeed been developing an Intel version of Mac OS X in parallel to the PowerPC version since it’s inception.

This comes as no real surprise to me, as NeXTStep was running on Intel before NeXT was acquired by apple and the design of the system frameworks, and application bundles has supported multiple binary images from day one. This means that a developer can provide a single download for an application that can seamlessly target multiple processor architectures transparent to the end user.

I thought I would pull out my crystal ball and predict what I think will happen from here on out.

So why has this not happened sooner?

I think the main reason that this has not happened sooner is 64 bit processors. There would have been little point switching to a 32 bit intel processor only to then have to switch to a 64 bit processor as well.

So will I be able to run OS X on my PC?

The short answer, is no. Apple pride themselves as being the last of the vertical integrators, and are hardware focused company. I expect that apple will go to great lengths to try and ensure that Mac OS X only runs on their hardware. However I expect that we will see a repeat of the work that Compaq did to reverse engineer the original BIOS of the IBM PC, and a round of lawsuits will follow. So eventually you may be able to do this, but it will not be officially supported, and expect to wear an eye patch, have a parrot on your shoulder and say “Arrgh me harties” a lot.

Does this mean that new Mac’s will be cheaper?

Hopefully, but don’t count on it. Apple are a premium brand, and they pride themselves on their design and ease of use. The change in processor will only represent a very small percentage of the overall cost to produce a Mac, so I expect the cost to remain the same. What I do expect, however, is that we will see increased performance for the same price point.

Will I be able to run windows applications?

This is something that just got that little bit easier, but the short answer is no. Apple are not about to start supporting Win32 or WinFX on the mac, and nor should they. So don’t expect to be able to install SQL Server on your mac any time soon. What the move to Intel does do however, is open up the possibility for open source projects like WINE and Mono to allow some windows applications to start working, as they do on linux today. And the Microsoft Mac Business Unit may one day realize how nice C# is and decide to port the .net framework. I wouldn’t hold my breath for that one if I was you, as I don’t think it will happen before 2010, if at all. (Personally would LOVE to have Visual Studio 2005 run natively on my powerbook, heck even XCode if it worked with mono.)

Virtual PC should run quicker as the processor emulation code can now be removed, from the intel version, so It should run at a similar level of performance to the PC version. I would also expect VMWare to now enter the mac market and provide a Mac OS X version.