The hare wins a short race
If managers are rewarded for achieving short term goals, a tortoise doesn't stand a chance.
How do you react to a manager who instructs you to take time to ensure that your code is " high quality. Remember, two years from now all people will see is the mess, they won't see how fast you got it done. Nobody remembers the speed, they only remember the mess. So do it right". In Also in Java Today we point to The Tortoise and the Hare in which Robert C. Martin writes that they reacted with disbelief. Uncle Bob uses a tractor pull analogy to explain why, in the long run, it is better to "go well, not fast. Care about your code. Take the time to do things right."
The responses to his post are interesting - here are some highlights:
- When you've spent a career doing projects with arbitrary deadlines set by quarterly revenue-driven, technically ignorant executives, what you believe is that this manager, like all the others, will turn into a crazed schedule-monster as the required release date draws near, driven insane by the heat applied to him from above.
- ... since we weren't maintaining the code anyways, "clean code" truely wasn't as big of a priority as speed.
- in most companies if a good quality project ships late then the managers will still get it in the neck whereas if poor quality project ships on time then the managers say "we did our best - obviously the dev team seem to be of a poor standard".
Then Chris Morris hits the nail on the head. "I think one reason it's hard for people to believe that going well will be ultimately faster is because it's a long term notion. It's an investment. I'm not penalized in the early stages of my project for not building extreme quality infrastructure, so doesn't it slow me down for no reason?" We won't get tortoises if we keep rewarding hares.
This doesn't disagree with the points that Bob raises in his article. Bob is talking about code in the long run. Code that will need to be maintained. Chris gets to the issue that management rewards are often based on achieving short term goals. How do we get people to appreciate and value that, to repeat, "two years from now all people will see is the mess, they won't see how fast you got it done. Nobody remembers the speed, they only remember the mess."
If you haven't yet, take the time to learn " the basics of how to write an Ant task in Java, compile and package it as a .jar, and put the .jar in a place where Ant can find it. [D]efine a task and invoke it within an Ant build file [then] do some experimenting." In Writing Ant Tasks he extends these basics to explore a Jing Ant task written by James Clark.
In today's Projects and Communities , the Jini community's UCLP project investigates the development of software solutions for enabling users to control interfaces on network elements for the purpose of establishing End-to-End (E2E) connections across optical networks.
Can "a web service using GPL code on the server side could be called from a client?" In today's Forums, Joe Cole continues the Selling a Service thread by pointing out that " Because the client isnt actually distributing the code, it shouldnt be in violation? So as long as the server code is not distributed it should be fine? There are tons of GPL products I can think of which would be annoyed if this was possible. Quite a few are VERY expensive for commercial use."
John Reynolds considers the case for making your own stuff open-source. In the case of building blocks, "you can probably make the case that open-sourcing it will share the burden of maintenance. With more users and more eyes on the code, more bugs will be found and squashed. If "your own stuff" encourages folks to buy other goods or services from your company, then you can definitely give it away for free, but it's less obvious why you would benefit from releasing the source (unless it needs to be ported)."
Where is the comprehensive example on table sorting. Tackline writes, " just gives an example of how to use table models. Unless I've missed something (not unheard of) then there is no direct support for sorting tables within J2SE. You can't just write something along the lines of: table.setSortable(true);"
In today's java.net News Headlines
- Sun Launches JDesktop Integration Components API (JDIC) project
- SDE for NetBeans 1.1
- Excelsior JET 3.0RC2
- SmartCVS 3
- JChemPaint 2.0.2
- Exchanger 2.0
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
- June 11-13 Research Triangle Software Symposium
- June 15 Debugging and Profiling Your Code Webinar
- June 21 6th Workshop on Learning Software Organizations
- June 23 NYJavaSIG: 1.5 Concurrency Utilities in Practice
- June 24 Accelerate Productivity with Sun Java Web Application Framework Mod Chat
- June 25-27 Western Canada Java Software Symposium
- June 27 Javapedia Workshop and Community Meeting
- June 28 - July 1 JavaOne 2004
- June 28 - July 2 WWDC 2004
- June 29 Java Communities in Action
- June 29 NetBeans Software Day at JavaOne
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.