Brian Richardson

Coding, traveling, etc.

Better Software No Matter What

The talk from Scott Meyers was excellent. He is a great speaker and really understands the root issues that lead to many quality issues in software. Mark has already posted some comments, so I will just touch on a few common issues Scott kept stressing time and time again.

One of the basic principles of developing quality software is consistency, from the UI to the code and even the unit tests. Without consistency you will never be moving toward quality software. One of the ways to go about doing this is to provide developers with a set of guidelines and best practices. If developers are not given this guidance they will each develop code and unit tests as they feel the tests should be done, which is fine, but will never result in consistency. To be able to move towards consistency provide the development team with guidelines for: code styles, naming conventions, unit test layout, refactoring standards, etc.

The point he stressed was the most important of all, above everything else is “Interfaces must be easy to use correctly, but difficult to use incorrectly”. He was talking about not just user interfaces, but all the way down through the classes, the methods, the APIs, etc. If the interface is not clear then you have failed to fix the number one issue. If the user interface is confusing, users will leave, if the code is hard to understand, developers will be less inclined to refactor and instead will make the smallest change possible every time which will lead the project further and further from being quality software.

The afternoon talk from Scott Meyers was just as good as the morning talk. I have to say that his talk is one of the most useful presentations I have ever attended, including conferences I have been to in the past. Scott Meyers really knows a lot about software quality and explains it well in his talk. He stresses in the talk about how ALL bugs are an embarrassment, not just big issues but even minor issues that are considered “cosmetic” and often ignored. Minor issues are often the ones that do not prevent a user from performing the task they wish to do, but are enough to cause annoyance and frustration which does not create a good impression of the product.

March 4, 2008 Posted by Brian | Uncategorized | | No Comments Yet

Tuesday Morning – Better Software No Matter What

The first day was long and very intense. I managed to get some information posted on the blog, but not nearly as much as I would have liked.

Today we are attending the talk that other presenters have been recommending, Better Software No Matter What by Scott Meyers. This looks like it will be a very interesting talk.

March 4, 2008 Posted by Brian | Uncategorized | | No Comments Yet

Monday – Overview

Mark and I started this morning with a pre-conference standup meeting. Mark awarded me the goose for finding the IHOP. After another hearty IHOP breakfast we headed over and registered early this morning for the conference. I grabbed as many free publications as I could. Some more items for our magazine rack in the developer area.

It is impressive the number of people from big name companies that are not just giving talks but that make up the list of attendees. From reading attendees’ conference tags the company names I saw most often were Google, Yahoo, Boeing, IBM, Microsoft, Nortel Networks, and Sun Microsystems just to name a few. It was unusual to see a company name I didn’t recognize.

Each talk we attended today provided a wealth of excellent information. The following is a very brief overview of the talks.

To Catch a Bug You Have to Think Like a Bug

This talk was given by a developer from Google who previously worked for years on the JBuilder IDE tool. He gave a talk on how to trap bugs in code and surround them with targeted meaningful tests. This was more a tutorial than a lecture so he had us all fire up Eclipse and write test cases in JUnit to test methods in his example application. Much of the session was on not just writing tests, but figuring out what tests need to be in place to cover a method, but the catch was to do it in the least amount of tests possible. It was interesting, at the start of the session we were all coming up with much higher numbers of test cases, such as 8 to test a method, when he was able to show us how to get basically the same coverage in just 2 tests. It was a very helpful exercise. The end of the talk focused on refactoring existing code for testability.

Several books that came highly recommended were:

Code Quality – Diomidis Spinellis

Code Complete – by Steve McConnell

Is Agile Working for You

The lunch time keynote address was by Scott Ambler who is the Practice Leader Agile Development with IBM. His talk focused on issues with putting into place Agile development practices. The part of his talk I really enjoyed was about database testing. He mentioned how it is so common for the focus in unit testing to focus so heavily on application code, that the development of test cases that test the database without the application present are often ignored such as tests to test stored procedures, triggers, etc. He also stressed the value of writing a suite of database data integrity tests that can be run on a regular basis to check existing production data for problems.

Patterns of Refactoring

This talk was given by the author of the book of the same name. It was a live coding demo where he took us step by step though each of his refactoring patterns. Also he showed us many simple tactics he uses for doing refactoring in small simple steps to reduce the risk of making the refactoring changes. Some of his refactoring patterns such as Gradual Cutover, Parallel Change, Inline Refactoring, and Narrowed Change I have used in the past, however the valuable part of this task was really in seeing the steps to implementing each of these patterns in small simple steps. As he stressed the number one mistake made in refactoring is in trying to change too much too fast. Spreading it out in a series of steps is much safer and also an easier sell as it allows new development to be done in parallel with refactoring work.

For all of the live coding demos the presenter used Eclipse and both Java and C++ code samples. However, he did talk briefly about C# and highly recommended ReSharper. The refactoring tools in Eclipse were very impressive.

 

Beautiful Code

The keynote address in the evening was a Q & A session with 6 of the authors of the “Beautiful Code” book. They discussed the basics of what makes beautiful code (Readability, Consistency, Simplicity, etc.) Later on they got into a discussion about languages themselves that they considered beautiful. Python was the main topic of the conversation.

That’s just a very brief overview of the talks, barely scratches the surface. It was an interesting first day. A blog post wouldn’t be complete without a few more pictures so here they are:

Hey, that’s me! Attending the first talk of the day.

Attending a Lecture

Taking a break for lunch around the fountain and Palm trees out front of the conference center.

Taking a break for lunch

The Conference Center

Conference Center

March 4, 2008 Posted by Brian | Uncategorized | | No Comments Yet