Enterprise Java Development on a Budget
I had the privilege of writing the forward to a new book, Enterprise Java Development on a Budget: Leveraging Java Open Source Technologies. I just got their book in the mail. I'm proud of what I wrote, so I thought I'd share it here.
J2EE development is hard. I have been developing with Java for the past 6 years, and there are areas of the enormous API that I have not touched. J2EE covers security, distributed transactions, persistence, messaging, web services, interoperability, and much, much more. Enterprise Java development does not mean coding only with this API, but rather involves the entire suite of Java editions. J2EE layers on top of the standard edition (J2SE). And to make our heads spin even further, J2ME entered the rapidly growing mobile world.
To exacerbate matters, our industry still reels from the great .com shakeout. Like many of you, I experienced the joy of being dot bombed twice. We rise from the ashes to contend with more complexity and fewer resources than ever. Our teams are smaller and budgets are tighter. Failure is not an option. Do not despair, however.
In fact, times have never been better! Smaller teams allow us to act and react more quickly. Attention to fiscal responsibility means we focus on client satisfaction and quality workmanship. From our need to simplify, the agile methodologies speak to us at an instinctive level. "The hard and stiff will be broken. The soft and supple will prevail." (Tao te Ching) We create software. As such, it is malleable. Refactoring keeps code clean as requirements change. As code evolves, keeping top-notch quality demands we test. Testing addresses complexity, partly. We can focus on a single unit at a time, test it thoroughly, and build upon it with confidence.
Kent Beck said, "Any program feature without an automated test simply doesn';t exist", which speaks to the importance of confidence and another facet, automation. Repetitive tasks are vital, such as a heart beating. Such repetitive tasks, though, should be effortless. Failure of such tasks requires grave concern. Effortless, yet unmistakably vital, otherwise the complexity would overwhelm us and suffocate our projects.
Open source factors into both the testing and automation realms of Java development. JUnit and Ant are the de facto standards, and built into all modern development environments. These projects, and the others discussed in this book such as Struts, Hibernate, and XDoclet represent more than just free software to use. Communities are thriving around these projects, and we benefit from the collective contributions of individuals around the world. Besides addressing our limited budgets, open source addresses the complexity and quality issues from several angles. Common problems generally have open source alternatives; avoid the reinvention of the wheel and concentrate on adding business value, not plumbing. Many open source projects have comprehensive test suites, relieving you of concern for reliability. And when the inevitable bug appears in an open source library, or a need for enhancement, robust test suites make opening the hood a real joy. Tune into the mailing lists, and other avenues of collaboration including wikis and blogs, of the open source projects you leverage. It is commonplace that questions are answered within minutes, putting to shame most commercial support contracts.
All of this philosophizing leaves us wondering what to do next. We have real work to do, and real deadlines to meet. Deriving from a Greek word meaning to do, we must be pragmatic. As pragmatic programmers, books are a fundamental part of our craft. The book you are holding contains many gems of wisdom gleaned from hard work. There is no substitute for experience, but it would be foolish not to learn from the experiences of others. I prefer practical examples and the voice of experience on technical topics, and this book shines in both. Chris and Brian have made one of life's greatest sacrifices, the authoring of a book. I commend them for their effort, and applaud them for the quality.