• 19May

    The first page of the preface of this book made me wince! Not because the book is bad, far from it! The immediacy of Scott’s insight into the pain of software development can only come from someone who has been there and experienced the trials and tribulations of project failure (more than once).

    I was expecting this to be yet another book on Design Patterns, but it really isn’t. This book attempts to look deeper into questions that cannot be easily answered and suggests a road map to evolve the profession of software development. It concentrates on practices, principles and disciplines that developers should follow when creating software, especially when thinking about how to implement features. It covers a wide range of practices, including analysis, refactoring, testing, and looks at how existing patterns should influence our design decisions.

    The appendix includes some very good examples of common design patterns. Different styles are applied to each pattern to teach or remind us what type of problem each pattern is used for. UML diagrams, procedural code alternatives, non-software analogies and basic OO code for implementation are included for each pattern.

    Since so many of us have to deal with legacy code bases, it’s always helpful when a book like this addresses that issue. Scott mentions hearing comments such as “this code is too hard to unit test,” “unit testing takes too much time” and “too many permutations to unit test.” He explains how these all point to design issues, and that leads into a great chapter discussing refactoring.

    Why should we refactor if the behavior does not change? This and other similar questions are covered too, explaining the concept of technical debt and the frequency of developer burnout: “Decaying, hard to maintain software will disable a development team faster than anything I know.”

    I would thoroughly recommend this book to any developer, however experienced or inexperienced, who wants to understand more about design patterns and how thinking in a design-driven manner can evolve our profession.

    I caught up with Scott at SD West, to ask him a few questions about his book.

  • 07May

    With JavaOne commencing this week, there will be much persuasion for those not yet upgraded to Java 6 to do so.

    Although not as rich in features as the move to Java 5 was, Java 6 still has benefits. My favorites include:
    - A scripting engine (Rhino) for languages such as Javascript
    - Wildcard inclusion in Java classpaths
    - JTable sorting, filtering and highlighting in Swing
    - Zip files no longer have a limit on entries (was 64k) and include long filenames
    - Java DB included (based on Apache Derby) with support for JDBC 4
    - GIF support for image I/O
    - A limited HTTP Server

    A few nice API additions include:
    - Deque (Double Ended Queue), intended to replace Stack in the Collection Framework
    - NavigableSet and NavigableMap, ideal for dictionary types
    - Methods such as getFreeSpace() and getUsuableSpace() available on drive partitions

    Performance improvements have been seen on certain environments such as JBoss running on Linux, just by upgrading to Java 6.

    For a full list of enhancements see this.

    I spoke with Jason Hunter about some of these new features, Java’s popularity and the much-debated issue of including Closures in Java 7. Here are his thoughts…

   

Recent Comments