Interviews News

Interview with Jarosław Krochmalski, the Author of IntelliJ IDEA Essentials

Every book is a source of wisdom and happiness. Every book about IntelliJ IDEA is also a source of productivity. Can you imagine how excited we were when we heard that Jarosław Krochmalski wrote his book on IntelliJ IDEA?

Now if you decide to give IntelliJ IDEA a try as a beginner Java developer or coming from another IDE, this book will be of great help!

6930OT_IntelliJ IDEA Essentials_Mini_0

We couldn’t miss this chance to talk with Jarosław and ask him a few questions about his book, IntelliJ IDEA, open source software, and of course Java. Enjoy reading!

Andrey: Your book says you started working with IntelliJ IDEA since its first release in 2001. As an IntelliJ IDEA user, could you tell us why you chose it and what it is that still makes IntelliJ IDEA your IDE of choice?

Jarosław: It’s hard to imagine, but in the beginning, there was no IntelliJ IDEA or Eclipse on the market. We were using IBM’s VisualAge for Java, Borland’s JBuilder and TogetherJ in Kredyt Bank (now it’s Bank BZWBK). It wasn’t bad, but it wasn’t great either. We especially liked the responsiveness and feature set of TogetherJ. When we heard that a part of the team formed out the new company and released their own new IDE, we decided to give it a try. Of course, IntelliJ IDEA had its up and downs but has grown up and it’s now fully featured IDE. Over those years many of my colleagues converted from using Eclipse and they’ve never regretted it. I see IntelliJ IDEA as the workhorse, the complete tool. The JetBrains team is always up-to-date with the development market, so no matter what framework or library you choose, there is a huge chance that the IDE can handle it. Also the choice of supported development languages gets wider. Nowadays you can develop and debug Java, Scala, JavaScript, you name it – all within a single IDE. It was a good decision to stick to it.

Andrey: What are your favorite IntellIJ IDEA features you can’t imagine your work without?

Jarosław: Usability and intelligence – this goes back to productivity. Almost all IDEs have the code completion features, but the way IntelliJ IDEA does that blows all of them out of the water. The code assistance which extends when you install the plugin for the language or framework of your choice is quite unique I think. I cannot imagine working without the refactoring tools. In IntelliJ IDEA, refactoring is available no matter what language you are developing in, and it just feels natural. Also the project structure and configuration; in the past, in earlier releases of IntelliJ IDEA, it wasn’t great, I must admit. But in the latest releases it improved greatly and is now perfect. You can import your project into the IDE no matter how twisted its structure is. The decision to treat Maven build files as a normal project files is a hit.

Andrey: How much time has it taken you to learn IntelliJ IDEA? Do you think learning tools is a big part of a developer’s trade?

Jarosław: Well, I still learn IntelliJ IDEA every day by just using it, so it’s tricky to measure. I cannot say that you sit in front of the computer just to learn how to use the IDE – you just do your job working on projects. In my opinion, IntelliJ IDEA is great for newcomers because of its gentle learning curve. You just have to know how the project structure works, have some plugins installed and you are all set. But the more you use it, the more features you learn. The “wow factor” increases over time. Of course, reading good books, blog posts, tutorials and looking at the cheat sheets helps a lot with discovering powerful productivity features. Once you learn the shortcuts and become a more advanced user, the productivity boost the IDE gives is so good that you’ll never look back.

Andrey: What other developer tools help you be more productive? Would you recommend any to other Java developers?

Jarosław: My external set of development tools is getting smaller and smaller because of the IntelliJ IDEA features. You just don’t need a lot of them anymore. Of course, I still use all of the usual must-haves like Maven and Git from the command line – everybody uses them already, probably. I use zsh as my main shell; combined with Antigen plugin it is a very, very powerful tool. If you develop in JavaScript, look for the Bower package manager and Grunt or Gulp as the build tool. Yeoman ( is fun to use and saves a lot of time also. As for more general tools, I must say that Dash for Mac, which is the API documentation browser with downloadable documentation sets, is very impressive. Also Alfred is indispensable tool that helps you be more productive, not only when it comes to development.

Andrey: All developers have their favorite frameworks (like all kids have their favorite toys ;-). As an experienced enterprise developer and consultant, what are your personal and professional preferences?

Jarosław: I’m a big fan of the Spring Framework, I use it for backend development like creating REST endpoints for example. The whole Spring family is growing and is now a complete package. In my personal projects I also use node.js together with Loopback for doing the backend. It’s fast and fun to work with. For the frontend, Angular.js with some nice Bootstrap template is my favorite choice. I’m a little bit concerned about the future of Angular.js and the whole 2.x development roadmap, but I think we should continue to work with the current version and just wait.

Andrey: In your opinion, how does the open-source concept influence and shape the enterprise software? Have you used any open-source projects in your professional career? Which ones do you like the most?

Jarosław: Again, the Spring Framework is in my opinion the best example how open source can shape the development process even in serious businesses. I’m still amazed how it changed the whole JEE development landscape. Additionally, I believe it would be very hard to find enterprise software which doesn’t use any of the Apache Commons stuff, Google’s Guava, some logging libraries like Log4J or Logback. I have used Spring, Struts, Vaadin, Vert.x, Hibernate and many others. The same for the frontend – jQuery is kind of a standard now. Angular.js keeps amazing me with the whole concept and definitely changed the way I think about JavaScript. Open Source is like a goodie bag. Get what you want – just try to pick the right tool for the job. Open source certainly changed the way enterprise software is being created these days.

Andrey: You’ve been using Java since v1.3, and I believe you’ve seen most of its evolution. Do you like where it is right now? What do you think about its future?

Jarosław: A lot has changed since 1.3 in Java SE. Honestly, it makes me feel old! Now we have non-blocking IO, generics, great concurrency utilities, and – best of all – an insane amount of security and performance fixes. It’s a lot easier now to develop in Java. In the future, a lot of interesting things will probably be available, like better support for multi-gigabyte heaps or self-tuning JVM. The Money and Currency API will probably be introduced in version 9 – this interests me the most due to my profession. I cannot wait to see this!

When it comes to JEE, first of all, I think that the Adopt-A-JSR initiative is a great idea that gives people the chance to shape the future of enterprise Java. Certainly, it’s going in the right direction. Open source projects help a lot with the change, compare Spring and EJB 3.1 for example.

Andrey: What do you think makes Java unique as a language (or platform)?

Jarosław: It’s a portable, object-oriented, architecture-neutral, high-performance language, and it’s combined with a powerful and well-designed set of APIs. I enjoy programming in Java and usually I’m amazed at how quickly I can get results with it. I believe that switching to Java increases your efficiency. But the real power of Java is the choice of libraries and frameworks you can use. The JVM as a platform allows you to change the programming language if you like and still be able to run in on any machine.

Andrey: Have you tried Scala, Groovy, Kotlin or other JVM-based languages? Do you like the diversity of the Java language ecosystem? What are your thoughts on languages that have emerged recently?

Jarosław: The Java language is more than sufficient for my professional or personal purposes. I have tried some Groovy and Scala development and I liked it. I think that the diversity of the language ecosystem on JVM platform is a good thing – if you think that a specific JVM language can be more effective than just pure Java, you can pick what suits you best. I like the interoperability of the new languages with Java, so you can call Java code from Kotlin and vice-versa, for example. This makes the transform process easier with the existing projects. I have read a lot of interesting things about Kotlin and Ceylon and I know they have all the benefits of Java, plus more. I believe I will have a chance to use them in my work. For the time being, I will stick to Java.

Andrey: Please recommend two other books on development you enjoyed reading recently or just consider important.

Jarosław: I consider a lot of books to be important for me. Some all-time classics are Martin Fowler’s Refactoring, Uncle Bob’s Clean Code, Brian Goetz’s Java Concurrency in Practice, and Joshua Bloch’s Effective Java.

Recently I liked Pro AngularJS by Adam Freeman because I wanted to go deeper with Angular.js – I needed it for my project. This weighty tome presents a lot of useful information and examples of how to use Angular.js right. The book is well-written, easy to follow, and explores many of the topics that you will not find anywhere else.

I recently got my hands on Java Lambdas Pragmatic Functional Programming. It’s not very long and it introduces you to a much more functional style of programming. It presents the core of the new features of Java 8, like lambda expressions, streams, enhanced collections and Collectors or data parallelism. If you want to stay current, I think it’s a good read.

Andrey: Thank you for the interview!

You can buy IntelliJ IDEA Essentials on Amazon or the Packt Publishing website.

About the Author

Konrad MalawskiJarosław Krochmalski is a passionate software designer and developer who specializes in the financial business domain. He has over 12 years of experience in software development. He is a Certified ScrumMaster and a fan of Agile. His professional interests include new technologies in web application development, design patterns, enterprise architecture, and integration patterns.

Develop with Pleasure!

image description