Home  Gregor Work

Professional Interests

Enterprise Integration & Web Services
Over the last couple of years, I spent a lot of time working with with EAI packages like Tibco and Vitria to integrate applications across the enterprise. The benefits are lucrative, but only if a large portion of the enterprise can be integrated on a common information bus. One of the largest issues is that each vendor has a proprietary solution that is being hailed as that common bus. Web Services promise to provide a standards-based approach to integration, but many of the features required for enterprise deployment are not part of the standards and again reside in proprietary extensions.
In my opinion, the most interesting part of Web services movement is the renewed focus on Service-Oriented Architectures (SOAs). While the concept is intriguing, a lot of hype overshadows many of the real issues to be resolved. My latest article on SOA tries to shed some light on this.

I started to collect a set of enterprise integration patterns. I found that many integration projects reuse a set of common patterns, but very little of this knowledge is available outside of EAI architect's heads. My paper on enterprise integration patterns was accepted to the PLoP 2002 conference. This has now become the basis for my book Enterprise Integration Patterns.

Application / Integration Servers
There is a huge amount of interest in .Net. I have seen a lot of die-hard J2EE developers convert. I need to spend a little more time on .Net.

It is interesting to observe the application / integration convergence. .Net is great example, Web Services-based integration is completely integrated into the development environment.

At last, we are seeing some better IDEs in the market. IntelliJ IDEA is the best Java IDE I have seen. It has many built-in refactorings. Eclipse is interesting as well as people start to add integration-related panels (e.g. visual XSL editors).

Cranking Code
If you haven't put a flame mail together yet for my views on the first few topics, maybe you are ready to hit the 'Send' button now. I firmly believe that an architect that has not sat down in front of an IDE for a long time is losing a significant portion of his or her effectiveness. I believe that a good architecture takes characteristics of the tools and languages into account. That's hard to do if you have never written a line of code. I do not deny that there are some very good architects who never code, but I have seen a lot more bad ones...

Software Development Processes
I am convinced that one of the key factors to successful software projects is the definition of a process that takes factors like technology, tools, staff experience into account. Too many people seem to rely on high-level, top-down 'methodologies' like RUP etc. Nothing bad about the RUP, I like many of their ideas, but it does not (and cannot) tell the project manager what to do next. Understanding the technology in detail, knowing the tools and their quirks (I guarantee there are some), understanding the solution architecture is the key to my task planning. My task plan resembles the architecture. Systems architecture is driven by dependencies and layers of abstraction. The same philosophy applies to the task plan. I believe that a good architecture is a key factor to a successful division of work, and a successful integration.
Currently, I am working with Martin Fowler on developing an agile approach to EAI projects (see our LOMA talk). My previous EAI 'Methodology' was built on top of ideas extracted from RUP as well as a series of books written by Gerald Weinberg.

Visualization of Technical Concepts
I spend a fair amount of my time creating presentations and drawing diagrams. While I am often dismissed as a "PowerPoint Jockey" or "Marchitect", I believe that the visual representation of architectures or dependencies is one of the most neglected areas in the field of software design and architecture. Using UML does not necessarily guarantee readability. Creating correct, meaningful and appealing diagrams remains a very difficult task. Maybe it is the combination of left and right-brain interaction that makes it so challenging.

Human Aspects of Software Development
My interest in this area really started when we read 'Peopleware' by DeMarco and Lister for the Technology Management class at Stanford (thanks to Prof. Tom Kosnik!). I agreed with almost every sentence in this well-written book. It is hard to believe how many project managers run a software project the same way they would run a meatpacking plant. Software development is still a maturing discipline compared to other engineering disciplines and human factors like developer experience and the working environment are the biggest determining factors to project productivity. Day in and day out I work in environments where people work in noisy cubicle environments where their days are interrupted by 'status meetings'. It seems like consultants end up at the bottom of the food chain when it comes to work space -- surprising when you consider that the client pays some $300 per hour for their services.

© 2002 Gregor Hohpe. All rights reserved.