Thinking, Speaking & Dreaming about Technology: An Interview with Michael Hüttermann
The Agile Zone is brought to you in partnership with JetBrains. Learn how Agile Boards in YouTrack are designed to help teams plan, visualize and manage their work in an efficient manner, with support for both Scrum and Kanban processes.
Welcome to the first in a series of interviews dedicated to learning more about JetBrains Development Academy Experts. In this interview we have a conversation with Academy Board Member Michael Hüttermann. Michael is Cologne JUG leader, author, senior coach, consultant, and freelancer for Java/JEE, SCM/ALM and agile software development.
Members of the JetBrains Academy are recognized experts in various areas of software development. They contribute to Java and .Net communities by advocating development best practices through formal and informal publications and meetings, and serve as a versatile source of expertise.
Q: Hello Michael, can you tell us who you are, where you are from and what is your passion?
A: My name is Michael Hüttermann and I am from Cologne, Germany. I’m an independent developer, coach and author for Java/JEE, SCM/ALM and agile software development, including strategies and tooling. I’m a community guy. The JetBrains Academy is one community where I’m involved. The Academy fosters the community around JetBrains products and best practices, and accelerates communication and knowledge transfer. It is an interface between developers interested in or using JetBrains products, and JetBrains, its’ product teams and evangelists.
Q: You have two new books hitting the market; can you tell us a bit more about them?
A: My book "Agile ALM" delivers an agile approach to application lifecycle management, covering and integrating major project phases like build, configuration, release, test, requirements management and delivery. It is a comprehensive, practical "one-stop shop" that consists of advanced strategies and real world use cases, and how to implement them with best-of-breed tools. The German book "Fragile Agile" is about the Agile Manifesto, its four value pairs and 12 principles. It explains the message of the manifesto and discusses best practices as well as many widespread misunderstandings and adoption smells (and how to do better). It arrives on the market at a good time as the 10th anniversary of the manifesto is coming soon.
Q: Who is the target audience of your books?
A: "Agile ALM" is for developers, testers, technical leads, and all IT people who want to improve their development process along all development phases. People with Java skills will profit most from the book, especially those who already use or plan to use the tools introduced. "Fragile Agile" is for developers, decision makers, and all people involved in software engineering. It is a controversial and entertaining discussion.
Q: It has been quite some time since you wrote your previous book, "Agile Java-Entwicklung in der Praxis.” Has your view on agile practices evolved since then? And why did you again write books about agile development and strategies?
A: Ultimately, Agile has become mainstream. Many small, mid-sized and large companies, as well as projects, apply agile strategies, or even use agile process models and methods. It is crucial to deliver high quality software, deliver on time, and implementing requirements the customers want. More than ever, I‘m convinced of agile strategies and environments being critical in this regard. But what I also say in my books, it is not enough to claim to be agile. Teams which are claiming to work agile often aren’t. In some cases those teams are still performing better than traditional teams however there is still room for improvements in many teams.
Q: What role does tooling play and in particular JetBrains’ IntelliJ IDEA?
A: Tooling is very important. For many people it is still a big surprise that the Agile Manifesto states exactly that. It is essential to choose the tool that best fits your requirements and your process. One concrete aspect of working the agile way is to set up and run productive environments. Especially those tools are of big interests that accelerate your work flow, improve collaboration, and help sharing information. Talking about IDEs in particular, it is the major difference between a plain ASCII editor and a smart IDE. The wise IDE anticipates your intentions and is doing much more than just enabling editing text files. IntelliJ IDEA often acts as a hidden, magic guy who already knows what you want to achieve, and helps you to do so. Another important aspect is barrier-free development, integrating languages and bridging different project phases. For instance, it should not matter, whether you are working on a Java file, or any other artifact type. IntelliJ IDEA is excellent in this regard, too, because of its great support for different languages and artifact types. Also, its integration capabilities are of big value. An example for a nice integration is its bridge to component repositories like Nexus or Artifactory.
Q: How do best practices fit into the mix?
A: Best practices are important, because you don’t want to start on a green field again and again, making all the same errors, repeatedly. Look at the agile development; it is all about best practices. Moving closer to software development itself, best practices also apply to design and code. Although development (in the narrow sense) does not depend as much on patterns as e.g. software architecture does, it is of big importance during daily work nevertheless. A good IDE should help you in detecting design and code smells. Look at IntelliJ IDEA’s 600+ inspections for detecting smells. That’s a big help for sure.
Q: IntelliJ IDEA 10 EAP is now available. Have you had a chance to take it for a spin and if so what are your first impressions?
A: Sure, I’ve already tried the first EAPs. Again, enhancements and bug fixes were added in all areas, thus everybody will benefit, and much more stuff is on the run before the final release, I’m sure. Examples of what I like particularly are: further improvements for editing XML like introducing or refactoring namespaces easily, the handy database table editor and viewer, or further features for using marked objects while evaluating expressions during debugging.
Q: What is your take on the evolution of the IDE and direction of features? Where is tooling headed in the future?
A: On one hand, IDE tooling continues its movement to even more integration and smart one-stop shop solutions. On the other hand, tooling will further enable slicing according to your needs, by simple configuration, or provide scoped solutions. This is the reason both ways are interesting, a full-fledged IDE that can be integrated with lot of other tools, as well as a targeted, light product that serves a special target audience or domain. Both product categories profit from each other by interchanging a platform or basic features. Alternatively, you take the tool and switch off features that are unnecessary for you, being still able to extend the product with plugins on-demand though. JetBrains’ product strategy fits nicely into this, and I think, this more coarse-grained orchestration of features, together with a configuration to align the package with your requirements, is more helpful for many end users, compared to providing a thin platform, and adding a lot of fine-grained plug-ins, with its version nightmare. Eclipse is doing that as well meanwhile, by providing packages and release trains.
Q: Can you share with us your favorite feature, or a feature that you like most at the moment?
A: That is a tough question, because there are many excellent and very helpful features. Of course there is the support for many frameworks and languages. For me and my daily work the main benefit of IntelliJ IDEA is that it allows you to work with the keyboard exclusively most of the time. This way, together with an intuitive usage of the IDE, you can work in a very productive way. But there are so many small and almost hidden concrete features that are so helpful. What I like particularly are the many options the code completion offers. It is not limited to the “normal” completion everyone knows. IntelliJ IDEA also suggests suitable class names or statements for completion, not mentioning its helpful ability to complete statements containing chained method calls.
Q: When you are not thinking, speaking, or dreaming about technology what are you doing?
A: Actually, as a work-life balance, I write books, and attend and speak at conferences. That is what makes it fun. Besides that, football is very interesting for sure, and having drinks with good friends.
Thank you Michael for your valuable time. You can learn more about Michael by visiting huettermann.net and keep up-to-date with his latest activities at twitter.com/huettermann.