Welcome to the second in a series of interviews dedicated to learning more about JetBrains Development Academy Experts. In this interview we have a conversation with Academy Member Radosław Holewa. Radek is Polish Java User Group leader, co-founder of GeeCON as well as a Java, Scala and Groovy developer. You may also check out the previous interview with Michael Hüttermann.
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 Radek, can you tell us who you are, where you are from and what is your passion?
A: Hi, my name is Radoslaw Holewa and I live and work in Krakow, Poland. My daily job is mostly Java development but I also try to use other languages like Scala & Groovy. Besides coding I am also a community person. I am one of the Polish Java User Group leaders, GeeCON conference co-founder, and a proud member of the JetBrains Academy.
Q: In addition to your technical expertise and activities, you are a community guy. You are co-founder of the GeeCon conference and a JUG leader. What is the focus of GeeCon, and how vital is the Polish Java community?
A: So, GeeCON is a 3 days long conference with a strong focus on the JVM languages and technologies.
It is purely community oriented. Our goal is to go beyond the traditional scope of Java conferences and besides having presentations about the hottest topics we also try to improve networking. We do that by organizing additional events during the conference days, for example our participants really love our after parties that give them a chance to meet their peers and idols in person. The conference is primarily organized by the JUG leaders from our Polish Java community which is now very strong as we have around 13 JUGs and many larger events. I think we have a very big boom for user groups in Poland (not only JUGs) which is of course great!
Q: As a Java expert, you are interested in programming languages like Groovy and Scala. Why are these languages interesting to you? What will be the future of Java, Scala and Groovy, in your opinion?
A: I think that the real power is in the JVM and there will be always be a place for JVM alternative languages. The main language for JVM is Java and that's why we are so focused on it, on the other hand different problems require different solutions and that's where there’s a place for alternative languages like Scala, Groovy. You will use Scala when you will need more flexibility and make the development of multithreaded applications easier, you will probably use Groovy when you will need to quickly develop webapps and DSLs. You can mix different languages in one project; create implementation in Java but write BDD tests in Groovy or Scala. JVM is a real polyglot world, whether developers like it or not :) It is also good that we see ports of other languages like Ruby (JRuby) and Python (Jython). The power of JVM will give them a boost.
Q: Is it all about languages? What about the importance of processes? What do you think about Agile processes?
A: Of course the choice of any programming language will not make your project successful; there must be some processes that will drive the project to the successful end. Agile is very popular in recent days but most developers use it only as a cool buzzword. Some of them try to adapt it blindly without understanding the real idea behind it.
I think Agile methodology choices are really interesting when you want to introduce them in your team, but as always if you will choose one and use it without adapting you can get stuck somewhere in the middle of your project timeline and realize it was not a good choice. My personal opinion is that every process should not be introduced blindly and it should adapt to the current needs of the team no matter if it is Agile or not. But Agile has some common tools and techniques that should always be introduced in the programming projects. These include continuous integration, unit testing and refactoring, which are in my personal opinion mandatory for a successful project. A successful project is not only a project which you can deliver, but also project which you can support without pain. So, here is the right place to mention the book I have contributed to – “Agile ALM” by Michael Hüttermann. As the title says it is about the application lifecycle management. The book will give you an overview of useful tools and techniques which really help in improving build process, code quality etc. It is a really good to read because many great specialists have shared their thoughts in it.
Q: What role does tooling play and how does JetBrains’ IntelliJ IDEA fit in?
A: The right tools are a very important aspect of every programming project. Tools can help you to avoid many errors and bugs, and also to develop faster. I think now is the time for intelligent tools that help developers analyze the project and find issues as soon as it is possible. It is a place where continuous integration servers in a connection with code analysis tools, like PMD or FindBugs, and IDEs with strong code analysis, are so important. IntelliJ IDEA is one of the shining stars in the Java development world as it provides very advanced code analysis and refactoring options.
Q: IntelliJ IDEA 10 EAP is now available. Have you tried it?
A: Yes, I have installed it on my machine and it looks really great! Beside cool GUI improvements on Mac there are also very useful usability improvements like colored tabs representing files in the main window (different colors for main code and test code files). These tabs help you select the right file when you have many opened file tabs.
There are also spell checking improvements which are very useful for non-native speakers. Spellchecker checks not only the code but even messages you type in the commit description window!
But the best new feature for which I was really waiting is part of the Maven support. The project I am currently working on is very big, has many different modules and hundreds of dependencies. Enough said, it is a really big pain to control all these dependencies directly by hand. Now I have a great tool that helps me in organizing poms! In IntelliJ 10 I can not only generate the diagram of dependencies but also manage them directly from that window! I can also view dependencies in different scopes! For example, I can show only dependencies used only in tests. When there is a conflict between dependency versions (for example my project will contain two versions of the same library), IntelliJ 10 will mark it using red color, so I cannot overlook it! It is really cool!
Q: What is your take on the evolution of the IDE and direction of features? Where is tooling headed in the future?
A: I am not sure if there is much work that can be done in the refactoring and code analysis scope (for sure some things could be still improved). So, in my personal opinion IDEs will be more focused on new frameworks and technologies, it is the direction where they will go.
Q: What is your favorite IntelliJ IDEA feature or one that you like most?
A: In IntelliJ? I really like the stability and performance of refactoring in IntelliJ, I can even say that refactoring in IntelliJ really works which I cannot say about other IDEs. No matter where my classes are referenced, IntelliJ will find those references and do the refactoring in a way I expect. And it always works!
Q: What do you do in your free time?
A: I do different things. I am interested in investing and economics, and also like to listen to good music and watch movies. Krakow is also a really awesome place with hundreds of pubs so it is always a good time to have a beer with good friends :)
Q: Do you have any Polish music or film recommendations for our readers and where can we get the best beer in Krakow?
A: Unfortunately, Polish bands and movies are not popular in the world. But the Polish band I like the most is T.Love, regarding movie I would say my favorite is “Poranek kojota”. The best place to drink beer in Krakow is for sure C.K. Browar where they make a really fresh and tasty beer. As a city of hundreds of pubs and clubs, you can spend the whole year on visiting different places :)
Q: As our final question, can you tell us something about yourself that most people wouldn’t know?
A: I really like changes, experimenting and discovering new things. I am one of those people who are always looking for opportunities to move forward and do something new. Maybe that's why I am so active in the community - it gives me the possibility of exchanging experiences every day. Even now I have at least a few ideas I want to realize :)
Thank you very much for your time.