Introducing Dino Esposito, JetBrains Technology Evangelist for Java and Android development.
1. Hello Dino and welcome to JetBrains! For those who don’t already know you, please tell us a bit about yourself and your background.
Upon graduating I started as a developer. It was the time of Windows for Workgroups and I ended up leading the development of an ambitious project that we would closely compare to Flickr today. Unfortunately in 1996, it was way ahead of its time and the project and company collapsed. I then decided to follow my instinct and started writing. I wrote articles, books, whitepapers, tutorials, courseware on just about every programming topic around Windows, IE and the .NET platform. Two years ago I discovered mobile. Now I’m body and soul devoted to investigating and applying mobile development patterns and techniques.
2. Can you tell us about your progression from using JetBrains product(s) for the first time to joining the team? Why JetBrains and why now?
I started using ReSharper some five years ago; more or less at the time I made my shift back to coding. Needless to say, it was love at first click. Today, I can’t even imagine writing a single line of code without ReSharper, or using Visual Studio without ReSharper. When I started on some mobile projects, specifically Android, I tried Eclipse just to drop it one hour later. Then I found out about IntelliJ IDEA. Likewise, today I can’t imagine coding Android outside of this IDE. So over time I built a profound respect for JetBrains products and skills. The rest came naturally I’d say.
3. What will you be working on and what are you looking forward to the most?
I’ll focus on mobile related projects and products. In particular, Android development with IntelliJ IDEA using both Java and Kotlin. At some point in the future I may add AppCode and Objective C.
4. You are the author of “Architecting Mobile Solutions for the Enterprise” for Microsoft Press and you also wrote the column “Android for .NET Developers” on DotNetSlackers.com. Could you please tell us more about your experience with mobile development and Android platform in particular?
Mobile is primarily a matter of strategies not technologies. This is a big common mistake I try to explain to companies. You typically don’t need an Android or iOS app per se; you need instead to offer some services (reworking existing services or creating new ones) via mobile channels. Mobile channels certainly include Android or iOS apps, but are not limited to that; furthermore I’d say that plain mobile sites should often come first and then native apps. I think that mobile is often mistaken for a showcase of technologies whereas it is instead a critical (more than just tremendous) opportunity for all companies. You need go mobile whether you like it or not.
Android is just one aspect of implementing mobile strategies. Coming from a C# background, Java didn’t represent a high hurdle to leap over. Sure, Java is sometimes boring to deal with, but overall, native Android development was for me a natural extension to my C# and .NET skills. My point is that Android is a smooth step for .NET people unlike iOS.
5. Whether the free Community Edition or Ultimate Edition, what in your eyes puts IntelliJ IDEA above the other Java IDEs on the market?
It is hard to say. My experience with Java is limited to Android development and a bit of BlackBerry for which you need Eclipse with a proper plugin. I have nothing against Eclipse and can even hardly explain why, but I never felt comfortable with it and felt instead, the strong need to try something else. A quick Google search pointed me to IntelliJ IDEA. I work with Community Edition and I think it is more than fine for the needs of Android development. I particularly enjoy recent additions such as the graphical designer and of course, I love the underlying machinery that makes compile and deploy a one-click operation.
6. What do you think about Kotlin and who will use it?
My zodiac sign (Taurus) says I’m a rather stable person so this means that I don’t really like change for the sake of change. When a new technology comes out I’m never the first who wants to use it. Probably not even the second. I must first find a strong and credible business reason for it in my own domain. I don’t call myself a Java developer, so for me Kotlin and Java are just two foreign languages. Now I understand that Kotlin is here to make the Java platform a better place and this is more than enough to trigger my curiosity.
7. What are three trends you see impacting software development in 2013?
I bought once a crystal ball but it never worked and the vendor always failed to fix or replace. That said, I believe that companies and developers should look into some of the following:
- Turning websites into mobile-friendly sites. Mobile-friendly doesn’t mean accessing content by pinch-and-zoom; it means instead, rendering pages appropriately on various classes of devices.
- Spending more time on applying effective object-oriented patterns.
- CQRS (Command Query Responsibility Segregation), especially in combination with Event Sourcing, is really a design trend that will pick up. In the end, you face events in the real world, not models. So a methodology that relies on domain events rather than domain models is closer to the metal.
8. Thank you for your time and taking part in this interview. Is there anything else that you would like to mention such as events that you will be attending, an upcoming book or hot topic?
Mobile development and software design are my primary areas of interest at the moment. So anything that’s hot touches on these areas. I’m now one of the people working around WURFL, a server-side device description repository used by large organizations such as Facebook and Google to optimize the mobile web experience. Also, I’m preparing the second edition of Microsoft Press bestseller “Microsoft .NET: Architecting Applications for the Enterprise”. The second edition will focus on CQRS and Event Sourcing. By the way, my coauthor on this book, Andrea Saltarello, is a proud early user of ReSharper. Yet more proof that software design and code assisting tools really make good development a sustainable effort.
Thank you for your time and the interview.