Archive for September, 2008

DRY for training

Most developers know the term DRY, don’t repeat yourself. To code monkeys, it is second nature. What’s funny is it can be applied to everything, not just coding. Most developers don’t get this.

Today, one of my team leads did a tech talk for his team. The talk was an intro to MVC, specific to their project. It was awesome. You might be thinking, MVC is second nature to me. I have been using MVC for years. Any noob should know what MVC is. That’s not true.

At Mailtrust, the vast majority of our developers come from the coolest school across the street, Virginia Tech. Many of them didn’t learn MVC in school. Even if they did, they have never used it in an enterprise environment working in a team.

Camtasia to the rescue. For this tech talk, we did our first screencast recording. Now we have a reusable, applicable, and awesome training tool. The next time someone asks what MVC is, they won’t get the 5 minute high level talk that leaves them more lost than before. They get an hour long presentation, with full demo and discussion. Sweet. No more repeat training sessions.

KDiff, try it

I had the need to compare two different directories on a Windows box and I came across KDiff. It integrates with Explorer and does exactly what I need. Try it.

Break the Feature Paradigm

I was thinking about product backlogs today, and I realized that they represent an interesting paradigm. In short, they equate features to a checklist. Once it is done, it is marked off. Completed. Done. Finito.

In reality, this isn’t true at all. A feature is a commitment to your users. For every feature, the initial cost is usually design, development, testing, documentation, and support. What’s funny, is every single one of those is a continuing cost that usually gets overlooked. For every feature, there are bugs that developers need to fix, testers need to verify, and writers need to document. For every design, there is usability testing that reveals flaws. For every feature, there is support.

To succeed, I think there are really two choices. One, eliminate as much continuing cost from each feature as possible. This can be accomplished by reducing uncertainty. Unit tests, functional tests, usability tests, continuous integration, and multiple testing environments all reduce this uncertainty. Unfortunately, this slows your turnaround time down unless you can hire at a rate greater than your continuing cost, which is hard.

Or you can implement less features. This means every feature you implement has to be super important and you can spend a lot of time making it awesome. What’s funny is you now have time to do all the things necessary to build a feature with a very low continuing cost. The obvious downside is, you may not be able to compete because your competitor has everything you don’t.

What’s better? I honestly don’t know. What I do know is every feature should be thought of this way and not as a checklist item. Then skipping that useless unit or functional test doesn’t seem as appealing.

Business of Software 2008

I just got back into town from the Business of Software 2008 conference. It was awesome. Nearly every speaker had something meaningful and inspiring to talk about. Even though the conference was just two days, I am absolutely worn out because I can’t stop thinking about everything I learned.

So, in order to actually finish this post, I am going to give three sentences on a few speakers I really enjoyed.

Seth Godin: We live in a cluttered world, where most people settle for adding more clutter to compete. Make something remarkable, and people will talk about it. Don’t find customers for you products, build products for your customers.

Jason Fried: Keep your momentum by being iterative and not planning because decisions are temporary. Red flag words like need, can’t, easy, everyone, and nobody are bad because they usually not true. Interruption is the enemy of productivity.

Dharmesh Shah: Measure everything, otherwise you have no idea what works and what doesn’t. You can guess how happy your customer is, because you know their usage information. If your not embarrassed about your product, then you waited too long to release it.

Steve Johnson: Product management must know who is and who is not shopping and why. Find the potential customers and stop thrashing on competitors customers.

Steve Krug: Analyze what people are searching for on your website, because that indicates where you are lacking. The biggest problem with web design is the disparity between what we think people are doing and what they really do. Do usability testing and keep it so simple you can’t skip it.

Joel Spolsky: Make people happy while they use your product. Obsess over aesthetics, because something that looks good helps make users happy. Misattributes are awesome :)