Skip to main content


developerWorks  >  WebSphere  >  Community  >

Author spotlight: Bobby Woolf

developerWorks

 


Bobby Woolf's bio
Photo: Bobby Woolf Bobby Woolf is a Consulting IT Specialist with IBM Software Services for WebSphere, part of the IBM® Software Group, where he helps customers achieve success with J2EE products such as WebSphere® Application Server and Rational Application Developer, and related technologies such as service-oriented architecture (SOA). He is a co-author of Enterprise Integration Patterns, and writes a popular blog on the developerWorks Web site, WebSphere SOA and J2EE in Practice. Bobby is a frequent conference speaker.

Bobby started his career at Ascent Logic Corp (ALC), where he helped to develop one of the world's largest Smalltalk applications. This taught him a lot about designing code for clarity and maintenance, and is where he first experienced the necessity of refactoring code to keep enhancing its value. Having learned a lot from his ALC co-workers, he then sought out a new learning environment and found it at Knowledge Systems Corporation (KSC), a leading Smalltalk consulting company. The variety of consulting projects helped him improve his development skills quickly and learn about team dynamics. It's also when he first started publishing articles and started writing patterns. He presented papers at the first five PLoP conferences, culminating in chairing the conference with Dragos Manolescu in 1999. Meanwhile, Bobby and Kyle Brown, also from KSC and now with IBM, developed a tutorial, Understanding Smalltalk Graphics, which used patterns from the Design Patterns book to describe the Smalltalk frameworks. They presented this tutorial at the OOPSLA and Smalltalk Solutions conferences. Bobby and Kyle went on to write The Design Patterns Smalltalk Companion with Sherman Alpert, also of IBM.

After KSC, Bobby moved on to Java™ and worked a stint at Interpath Communications, a dot com, where he honed his Smalltalk skills into Java skills, experienced the birth of J2EE, and learned all about workflow and workflow engines, messaging, and saw the birth of JMS. Those skills landed him a job at GemStone Systems, consulting with customers using their GemStone/J product, a J2EE application server with a built in object database. Bobby and Gregor Hohpe then, at the invitation Martin Fowler and Kyle Brown, went on to write Enterprise Integration Patterns. These experiences led Bobby to IBM in 2003, consulting with customers using WebSphere Application Server. He developed specialties in multiple disciplines, including J2EE application development, messaging and application integration, and patterns. He publishes frequently on developerWorks and presents at IBM conferences like WebSphere Technical Exchange.

In his free time, Bobby likes getting involved with activities that help the community, and helps like-minded individuals develop their leadership skills. He's written a paper for a community services organization on how to be a successful member of their board, which has become the best demonstration to his non-technical peers of what he actually does for a living. Bobby also likes to read non-fiction that explains how the world works.


Back to top



Bobby's articles
TitleDescription
Blog and wiki:
Blog: WebSphere SOA and J2EE in Practice (October 2004 - present) This is where I talk about whatever is on my mind, roughly organized around J2EE development, including IBM products and broader technologies like SOA and ESB. It has also become fertile ground for links to interesting items buried within IBM Web sites.
Wiki: WebSphere SOA and J2EE in Practice (May 2006 - present)I plan to use the wiki as a space to organize reference material that hopefully will be relevant over time, I may need to update over time, and you may wish to browse to get a more complete picture. That's hard to do with a blog, which is chronological. I plan to continue to use the blog to post timely material (stuff that isn't as interesting weeks and months later) and to point you to updates on the wiki.
Books:
Enterprise Integration Patterns (2003)This book has sixty-five interrelated patterns, which comprise a vocabulary and visual notation for developing application integration solutions using messaging. It includes examples covering a variety of different integration technologies, such as JMS, MSMQ, TIBCO ActiveEnterprise, Microsoft®, BizTalk, SOAP, and XSL.
The Design Patterns Smalltalk Companion (1998)This book discusses the twenty-three patterns from Design Patterns, exploring how the patterns can be applied when developing business applications. It's written for Smalltalk, but also applies to Java/J2EE development as well.
Book chapters:
Framework Development Using Patterns (1999) Chapter 26 in Implementing Application Frameworks. This is a book on how to implement frameworks, so it explains how to do so using patterns. This is not patterns for developing frameworks, but how to take your favorite patterns and use them to develop frameworks that embody them. In many ways, this paper builds on Kent Beck's article, Patterns and Software Development.
The Object Recursion Pattern (1999) Chapter 4 in Pattern Languages of Program Design 4. A GoF-style pattern that explains how behavior surfs though object structures like Composite, Decorator, and Chain of Responsibility. It's the recursion technique from procedural programming, updated for object-oriented programming.
The Abstract Class Pattern (1999)Chapter 1 in Pattern Languages of Program Design 4. A GoF-style pattern that explains what abstract classes are for, why you don't just use concrete classes for everything. This is a subtle issue in Smalltalk; it's much more obvious in Java. If I were to write this pattern again, I'd adapt it to Java and split it into two patterns, Abstract Class and Interface.
The Type Object Pattern (1997)Chapter 4 in Pattern Languages of Program Design 3, also available at Knowledge Systems Corporation. Another GoF-style pattern, this one describes objects that have a meta/type relationship to other objects. I updated the GoF format, adding a Keys section that attempts to serve as a litmus test for determining whether a potential example fits the pattern.
The Null Object Pattern (1997)Chapter 1 in Pattern Languages of Program Design 3. My first pattern written in the Gang of Four format. A Null Object is a special implementation of an interface that does nothing. Martin Fowler refers to this pattern as a special case of his Special Case pattern.
Partitioning Smalltalk Code into ENVY/Developer Components (1996)Chapter 3 in Pattern Languages of Program Design 2, also available on the Portland Pattern Repository. This pattern language explains briefly what a layered and sectioned architecture is, and how to map that into ENVY/Developer, a now defunct source code management system for Smalltalk. Still interesting as a quick overview of how to broadly architect an application.
Understanding and Using the ValueModel Framework in VisualWorks Smalltalk (1995)Chapter 25 in Pattern Languages of Program Design, also available on the Portland Pattern Repository. This pattern language explains how the Value Model framework in ParcPlace Smalltalk works, using well-known design patterns to explain its design. A tidbit of trivia: The pattern language is in three parts that are basically problem, solution, and examples, making the pattern language as a whole a bit of a higher-level pattern.
Articles:
developerWorks Podcast: Bobby Woolf (August 2006)In this podcast, I talk about the utilization of event-drivent architecture (EDA) and service-oriented architecture (SOA), and the Enterprise Service Bus (ESB) that enables the use of an EDA and SOA together.
Introduction to SOA governance (June 2006)This article defines SOA governance - learn what it is and why it's critical to the success of your SOA project.
Insight and outlook, Part 6: Defining the most important IT architecture issues (May 2006) Aligning IT with business. Aligning IT with business has always been a big deal, but we're getting better at it now.
Insight and outlook, Part 5: What is IT governance, and why should you care? (April 2006) In a world without governance. How do you control who's using your service, and who's responsible for maintaining it, and how much you can rely on the services you're using?
Insight and outlook, Part 4: What's the best software to implement as a service if you're just starting SOA? (February 2006) Data encapsulation, legacy systems. Services tend to be data dependent, so use services to encapsulate common data manipulations.
Comment lines: A quick intro to WebSphere Business Process Management (February 2006)Introducing WebSphere Business Process Management, IBM's solution specifically designed to model, assemble, deploy, and manage applications with service-oriented architectures.
Insight and outlook, Part 3: What is the most valuable IT architecture skill and how can you learn it? (January 2006) Understand the pieces and how they fit. An architect understands all of the different parts that can go into a complete solution--application, database, workflow, messaging, hardware, security, performance, etc, and how to make them fit together.
Streamline SOA development using service mocks (December 2005)Simplify SOA development, especially if your project involves multiple teams, and raise SOA application quality with use cases and mock objects.
Insight and outlook, Part 2: How do I translate business needs into IT requirements? (December 2005) One word: use cases (OK, two words). Employ use cases not just to model software, but to model your business as well.
Insight and outlook, Part 1: Why and when should you choose SOA? (November 2005) The good, the bad, and when to be careful. When SOA is helpful, when it's not, and what to watch out for.
Comment lines: Bobby Woolf: Where, oh where, can I learn about WebSphere? (September 2005)There is a vast amount of reference material on WebSphere products available at your disposal, and nearly all of it is absolutely free. The trick is knowing what information you need and how to find it.
Why do developers need an Enterprise Service Bus? (August 2005)This article helps you understand why an ESB is a useful and necessary part of application integration, including SOA. The article doesn't focus on definitions or products, but on the functions and capabilities an ESB implements for you so that you don't have to. It shows what an ESB does for you.
Deploying publish and subscribe applications into the Service Integration Bus (August 2005)Roland and I talk a lot about how the SIB works. He and Chandran already documented how the SIB implements point-to-point messaging. This article documents how the SIB implements publish/subscribe messaging.
Simplify integration architectures with an Enterprise Service Bus (August 2005)Fellow blogger James Snell and I kept talking about what ESBs are good for, how architectures would be so much simpler if they could leverage a good ESB, and son on. We finally decided to capture our thoughts in an article.
Make WebSphere MQ the JMS provider for applications deployed in WebSphere Application Server (May 2005)Can you use WebSphere MQ from WebSphere Application Server v6 (or even v5)? Yes you can! This article shows how.
Developing a standalone Java application for WebSphere MQ (February 2005)Can you use WebSphere MQ from J2SE? Yes you can! This article shows how.
Meet the experts: Bobby Woolf on J2EE architecture and design (December 2004)I answer reader questions about J2EE design and development. It spawned a discussion on The Server Side about how to handle exceptions in EJBs. The latter questions (Learn EJB? Synchronous or asynchronous? SOA or ESB?) are really the most interesting.
Eliminate caching in service locator implementations in J2EE 1.3 (October 2004)This article shows how implementations of the Service Locator pattern that include a resource cache can cause code to run incorrectly in J2EE 1.3 and later versions. While the Service Locator pattern itself is still useful, this article shows how caching with this pattern is harmful rather than helpful, why it should be eliminated from service locator implementations, and offer some practical alternatives.
Configuring and using XA distributed transactions in WebSphere Studio (June 2004)This was my first article as an IBM employee, based on my frustration with learning how to use WebSphere Studio Application Developer, and people's lack of understanding of what transactions are and how to make use of them. This article shows a template I've since used a lot. The first half is theory and background info, the second half shows an application using the products. The second-half may quickly become obsolete, but the principles in the first half are timeless.
JMS 1.1 simplifies messaging with unified domains (August 2002)While working on Enterprise Integration Patterns, the JMS 1.1 specifications became public. The unified domains were very helpful, so I used it to write the JMS code examples for the book. I then rushed to publish an article on this, before all the vendors came out with products. Little did I know that the J2EE 1.4 application servers wouldn't hit the marketplace for another two years!
Designing For Object Serialization (July 2001)I got on a project that had certain complex object structures. A small part of the work was to be able to serialize the structures. This turned out to be rather difficult. This article describes lessons learned, presented as an explanation of how serialization works and how to handle the tough cases.
An Introduction To Workflow and Workflow Management Systems (September 2000)I had been working on my first workflow/business process project for the past year and decided to document what I learned. Hopefully this article describes what workflow is all about. Even today, many people are confused about workflow, confusing it with messaging a data flow, feeling like they should just implement it themselves, so we still have a long way to go.

Back to top



Bobby's recommended reading list
TitleComment
Becoming a Technical Leader: An Organic Problem-Solving Approach by Gerald M. WeinbergJerry Weinberg is a developer (PL/I Programming Primer) who decided that the problems with development projects aren't technical, and so started writing books on how programmers and teams can work better. He has several good books. If you can only read one, start with BTL.
The Fifth Discipline: The Art & Practice of the Learning Organization by Peter M. Senge How to create a learning organization, one that gets better as it keeps running. The secret is systems thinking, understanding what you do affects others and vice versa, and getting out of the habit of only worrying about your own work.
The Servant: A Simple Story About the True Essence of Leadership by James C. Hunter The foundation of leadership is not power, but authority. Authority is not exerted by the leader, but bestowed by those who choose to follow. Authority is built upon relationships of respect, responsibility, and caring for each other.
Manifesto for Agile Software Developmen A simple one-page document that explains the simplicity of developing software. The very antithesis of the all-too-popular heavyweight methodologies.
The Pragmatic Programmer: From Journeyman to Master by Andrew Hunt and David Thomas Just plain common sense on what programmers should do to do their job well. It's not written as patterns, but the bits of advice are patterns. If you're not following these practices, why not?
Extreme Programming Explained by Kent Beck The original XP book. The twelve practices! The four values! How could this possibly work? It does. A process that brings the humanity back into software development. A big influence on me on how to do things well.
Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, et al The mother of all software pattern books. Actually a strange example of the patterns form, and it totally misses the pattern language opportunity to create synergy between the patterns. But, still a great way to learn how to create high quality OO frameworks. The first chapter taught me so much about OO design.
Smalltalk Best Practice Patterns by Kent Beck The first and best example I've seen of a software pattern language. Kent said he wouldn't write a line of code without a pattern to explain the decisions he was making. Shows how patterns can make an expert out of a novice.
Core J2EE Patterns: Best Practices and Design Strategies, 2nd Edition by Deepak Alur, et alSome very handy patterns for how to use J2EE to architect and how to design an application well. The second edition is significantly improved over the first.
Patterns of Enterprise Application Architecture by Martin Fowler Similar to Core J2EE Patterns, it's broader in scope, but less specific in application, because it covers both J2EE and .NET, domain model-based architectures and scripting architectures.
Domain-Driven Design: Tackling Complexity in the Heart of Softwareby Eric EvansA very good, but not well-known book on designing the most important part of an application: the domain model. Rather than a heavyweight methodology like those that became popular in the 1990's, this is a pattern language that walks the reader through a simple and useful process.
Refactoring: Improving the Design of Existing Code by Martin FowlerPatterns for how to make existing code better. One of the best books around for becoming a better programmer.
UML Distilled: A Brief Guide to the Standard Object Modeling Language, 3rd Edition by Martin FowlerThe best book I know of for learning UML. It has a very simple philosophy, in that it doesn't try to document all of UML, just the parts you'll actually use.
Writing Effective Use Cases by Alistair CockburnUse cases (and XP stories) are the best way to document functional requirements. This is a really good book for learning how to do so.
The World Is Flat: A Brief History of the Twenty-first Century by Thomas L. FriedmanA very interesting account of how much the world has changed over the past 10-20 years. From the digitization of information to outsourcing to wireless access, the way we do work and who can do what is changing radically. Friedman sees what's going on, and has put all the pieces together to explain it to the rest of us. Use this book to explain to your parents what you do for a living.
"Patterns and Software Development" in Dr. Dobb's Journal by Kent BeckThis article describes software reuse through two development roles: abstractors, who create reusable components; and elaborators, who hook together the components into apps. The abstractors use patterns to document what the components are good for. This article really broadened my view of how useful patterns can be.
XML, Java, and the future of the Web by Jon BosakThis paper explains how a Web client should access XML data that it decides how to display, not an HTML documen. This was way ahead of its time, a precursor to Web services and SOA. This paper contains what is perhaps my favorite phrase in computerdom, "XML gives Java something to do."
The Daily Show with Jon Stewart Presents America (The Book): A Citizen's Guide to Democracy Inaction by Jon StewartThe most fun way to learn American history and how the government really works. It looks like a grade school text book, with lots of pictures and quizzes at the end of the chapters, but it doesn't read like one. Lots of good laughs, and you might even learn something.

Back to top


 logo

Document options

Document options requiring JavaScript are not displayed


New site feature

Check out our new article design and features. Tell us what you think.


Related information
developersWorks community
WebSphere forums
Meet the experts
WebSphere Developer Technical Journal

Special offers
Download websphere software
Industry formats & services with pureXML samples

More offers