Caring about your work
"The quality of the work you are doing is important. It contributes to the overall impact or effect of the project."
Pragmatic Programmers Andy Hunt and Dave Thomas talk with Bill Venners about software craftsmanship, the importance of fixing the small problems in your code (the "broken windows") so that they don't grow into large problems, and making design decisions that are reversible and adaptive in the java.net featured article Craftsmanship in the Face of Requirements . Andy explains technical debt.
Every time you postpone a fix, you incur a debt. You may know something is broken, but you don't have time to fix it right now. Boom. That goes in the ledger. You're in debt. There's something you've got to fix. Like real debt, that may be fine, if you manage it. If you've got a couple of those - even a lot of those - if you're on top of it, that's fine. You do a release and get it out on time. Then you go back and patch a few things up. But just like real debt, it doesn't take much to get to the point where you can never pay it back, where you have so many problems you can never go back and address them.
Dave provides the metaphor of your email inbox. If you don't answer email for a little while, soon you pass a level (for him around 250 messages) where you realize you are " never going to answer these messages. And it is the same with pending changes in software." Andy adds "As soon as something is broken - whether it is a bug in the code, a problem with your process, a bad requirement, bad documentation - something you know is just wrong, you really have to stop and address it right then and there. Just fix it. And if you just can't fix it, put up police tape around it. [...] It is as important to show you are on top of the situation as it is to actually fix the problem."
The article is the first of a two part "best of" from Bill's original interview with the Pragmatic pair. Their book the Pragmatic Programmer is one of those in my list of books I've had to buy more than once because I lend it to people and need to replace my own copy.
Also in Java Today
Michael Nascimento Santos explains how to use a new feature of Tiger in a way that it may not have been intended in Playing with the Tiger: Measuring the size of your objects. He writes about the package "java.lang.instrument that allows you to intercept a class before being loaded and modify its bytecode, for example (can I hear standard entry point for AOP support? :-P). Well, let's use it for something different: measuring the size of some objects. "
In today's Weblogs , Michael Nascimento Santos is Playing with the Tiger: Measuring nanos . He shows "you how to use the new nanoTime() method in System. An important thing to notice is thatnanoTime()'s return and currentTimeMillis's are not necessarily related to each other - meaning they don't have to use the same reference to zero. This example also uses the new static import feature."
Chris Melissinos is a bit distracted. He asks Can you repeat that? I was busy crushing a civilization. He reports that he "downloaded the MIDP build for the PalmOS and found that it is pretty capable. Sure there are some issues with it on the Zodiac, but that is to be expected as the Zodiac is ushering in an entirely new generation of capability in the nerdy PIM world."
In today's java.net News Headlines
- Public Review JSR 176 J2SETM 1.5 (Tiger)
- Eclipse Sneak Peek
- Redhat's Tiemann: Eclipse Could End Java Apartheid
- JCaptcha Initial Release
- Omnicore CodeGuide 6.1 - Java 1.5 compatible IDE
Registered users can submit news items for the
href="http://today.java.net/today/news/">java.net News Page using
our news submission
form. All submissions go through an editorial review by news director
Steve Mallet before being posted to the site. You can also subscribe to
News RSS feed.
Current and upcoming
- February 9-12 O'Reilly Emerging Technology Conference
- February 12 JAIN Technology Day @ Munich
- February 17-18 Sun Tech Days
- March 22-26 Game Developers Conference, 2004
Registered users can submit event listings for the
href="http://www.java.net/events">java.net Events Page using our
href="http://today.java.net/cs/user/create/e"> events submission
form. All submissions go through an editorial review before being
posted to the site.
Archives and Subscriptions: This blog is delivered weekdays as the
Today RSS feed. All java.net members can subscribe to the email
updates for the site at the href="https://java-net.dev.java.net/servlets/ProjectMailingListList">
java-net Mailing Lists page. You must be logged in to subscribe
to the javanet_Daily and javanet_Weekly lists. Also, once this page
is no longer featured as the front page of
java.net it will be archived along with other past issues in the href="http://today.java.net/today/archive/">java.net Archive.