Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage Interviews IDE's and Developer tools, current state and future

IDE's and Developer tools, current state and future


1. This is Michael Hunger from InfoQ and I’m sitting here with Hadi Hariri from JetBrains to talk about development tools and development on this part of software development. Hadi, what are you doing at JetBrains? What’s your task?

Hadi: My official role is technical evangelist at JetBrains. Well, my main focus is kind of on our .Net tools but I’m interested in everything so I’m expanding a little bit and I’m covering a little bit all other products and other languages apart from the C-# which is most in my focus right now.


2. Last year has been quite turbulent at JetBrains - lots of things happening and lots of new products coming out. What were highlights for you last year?

Hadi: We’re constantly coming out with new products. I mean just in my field, in .Net. I mean I think the biggest one was our release of ReSharper 5 and the new tool we presented which was dotCover which was our code coverage tool for unit testing in general just code coverage in .Net. That was just last year. Then we introduced a couple of IDEs as well, I think the release of some of the new IDEs and we started a couple of new projects which have come to light this year, for instance: dotPeek, which is our free decompiler for .Net, AppCode which is our Objective-C IDE. So it was also the start of some great improvements like ReSharper 6 which we released this year which has JavaScript support which has opened up the doors. I think JavaScript is a great language and it has opened up the doors for many people now to try and leverage it a little bit more.


3. So in the .Net land, if you have so many tools already available, it seems to be only a small step to provide a full functioning IDE out of that. So certainly lots of people have asked this question: is there anything…?

Hadi: I think that there isn’t a day that doesn’t go by that either someone asks or someone tweets: “When is JetBrains going to provide an .Net IDE?” I can’t really say much about that, I mean, the thing is that right now, a lot of value to Visual Studio and people that use ReSharper know that, they appreciate that value. The problem is that there’s a lot of different types of developers out there. It’s not just you and I. And in our kind of echo chamber we’re the kind of developers that, especially like in Scandinavia, you come to a conference and most of the developers here are doing unit testing, they’re doing test-driven development, they’re doing these things. But still there is corporate environments that aren’t doing these things, they are doing WinForms, they are doing, you know designers using WPF, using SAML. But lots still are on WinForms. So it’s not just about providing an IDE that allows you to do coding and refactoring and run unit testing, but then people want other things, they want WinForms designers. It’s still going on. Despite us being on the edge in the corporate environment, you know yourself there’s still legacy code going on. So it’s not as simple as that and it’s hard to get people, especially in the corporate environment, to say: “Oh, well, we’re going to dump this and go and use a new IDE from JetBrains.”


4. So it’s also about educating developers, right? And JetBrains has started some efforts on educating developers and improving development practices and so on. Can you say something about it?

Hadi: It is. I mean our effort has always tried to be that, has tried to promote best practices and I’ll kind of quote Ted Neward on this. He said that the “best practices are based on context”, right? He always says “Breathing under water without equipment is not a good practice”, although breathing is but I mean we try and promote kind of best practices. And what we do is, both in my role as an evangelist and other people we try not only to show you how to use the tools but to show you why there are certain things you need to do. I mean the value in why refactoring is important not just because we’ll sell you the tool, but the reason behind refactoring. And also you know yourself we started a few years ago JetBrains Academy which is kind of key people in the community that are not only very well-known but very well respected and focused on good practices and getting the best out of software not only that kind of “drag and-drop”-approach that companies like Microsoft tend to push and trying to get them to champion out focusing on good software development which, as I said, you yourself joined I think couple of years ago. So that’s our kind of our effort. We really want to try, both ourselves learn the better ways to do software and guide people in that area.


5. Can the 'intelligent' IDEs you provide help there as well? I think for instance about the intentions available in IntelliJ, they really drive you to at least think about what you’ve just written. The code, you’ve just written or you come across, and want to suggest improvements - things like that. So are there quite often things that really improve your code and code base and they also complain about staff like overly complex methods or too long classes classes. Could something like that also help to educate developers on how to become better and how to improve their skills?

Hadi: I think so. I mean a lot of times when people start to work with tools like IntelliJ or ReSharper, especially more season developers, shall we say, they are kind of reluctant, because they put it like “You shouldn’t teach me how to code.” But again so often we are talking about the echo. You know, we’re in an echo chamber, we are talking about the top notch, but a lot of developers that are new to the language or new to constructs or new to ways of doing things or do not know about certain ways of doing things - that’s the value we add. We say to you: “Look, this is how you’re doing it and this is the suggestion on how you should do it.” In fact we’ve go one step further with ReSharper now. We even have an option now like what you call the intentions and context actions in ReSharper where tells you why we’re suggesting this which takes you to a wiki and gives you an explanation with examples of why we’re doing that. So in a way, yes we’re helping educate developers on certain constructs and you yourself know that we’ll also have another feature in both ReSharper and IntelliJ based products which is called “the structural search-and-replace”, which is about detecting bad code smells. You yourself, your team, your architect, lead, your developers define patterns in that are identified as code smells and show, provide ways to replace them which would be equivalent to a quick fix. So this is now giving you the power to educate your team, to educate your new developers, to educate new people that join your team and how things could be improved. It’s not only us suggesting ways but giving you the possibility to do that.


6. Especially as you can derive code actions or intentions from structural search-and-replace, so that’s a really powerful tool. Regarding developers and all the new languages, we’ve seen lots of people went back to using just basic editors like vi and emacs to programing in JavaScript or Ruby or Clojure, for instance. How do you see that? Is it just like also the top notch that does this or is it the general trend to go to simpler tools?

Hadi: I think that’s been promoted by various reasons, I would say. First of all, in Visual Studio, for example, in the Microsoft space, Visual Studio is heavyweight. I mean it really is heavyweight. There is no reason to deny it that, when you add a plugin, for example like ReSharper, of course, because it offers you a bunch of improvements, it adds a little bit to that. But there are a lot of people that, like you and I don’t do designer-driven development, we don’t do WinForms or anything like that and for us an editor with refactoring etc. would be great. So that’s the kind of the heavyweight side of it. The other side is in a lot of the tools that we have made - both in .Net space improving with support for JavaScript and these other languages like for example Ruby, that’s been promoted by Rails, now there’s JavaScript with CoffeeScript with Node - most of these languages are dynamic. So there hasn’t been really been tooling in the dynamic space. People have not really been used to refactoring, to unit testing. I mean even in PHP we made it I think 4developers. You know we had a session there on unit testing and half to 90% of the developers didn’t know unit testing. So they’ve been hacking things together with TextMate or whatever. Since there hasn’t been really innovation in the space of dynamic languages, a lot of people haven’t actually seen the value that an IDE can provide for you. Now we’re seeing for example in PHP a lot of people are starting to use our PhpStorm IDE because they are actually starting to see: “Hey, you know, this is actually valuable! I can refactor, I can have integrated unit testing running, I can do integrated debugging!” So I think it’s both sides from more like the seasoned .Net developers, they feel a little bit heavyweight with Visual Studio but then the dynamic language developers, I think some of them might be they haven’t actually sat down to see: “Hey, this is actually providing me value!” I think that’s what’s kind of causing this!


7. It’s interesting because I was just thinking about that those tools could help like not the top five percent developers to get better at a daily life. They just have used editors so far because there was nothing else and now they have lots of other opportunities.

Hadi: Because we have a tool which is called WebStorm, as you know, which is focused on HTML, CSS, JavaScript, CoffeeScript etc. it’s an IDE. When we introduced however, JavaScript support for ReSharper 6, it opened up JavaScript for a lot of developers because now they got code analysis, code detection, incorrect usage of the reference of JavaScript in wrong places and referencing self or this in places where you shouldn’t. It was kind of similar to JSLint and all that it provides to you. And it kind of opened up doors to people. It wasn’t only about IntelliSense, it was about: “We’re now detecting potential issues in your code.” And a lot of people are hesitant or afraid of JavaScript or dynamic languages because of that lack of tooling support around it. So I definitely think it adds a lot of value, for sure.


8. You already mentioned the AppCode, the new IDE for Objective-C development. So it has been released as Beta this year?

Hadi: Yes, we opened early access program last year and recently we went Beta and now we’ve gone Beta 2 and the Release will be soon. And it’s currently, if you have experienced IntelliJ or any of our IntelliJ or ReSharper-based IDEs, you are going to love AppCode because it gives you the same experience using Objective-C. I have started, I’ve been about two months now on and off learning Objective_C and I started out with Xcode because I wanted to see actually what the value that AppCode is providing me. So I started out with Xcode and I used Xcode for like two three weeks and then I switched over to AppCode and I appreciate the value and I appreciate having the familiarity with the key bindings and how to go to declarations and find types and find usages and all that. So it brings all that value in and again you know the feedback that we’ve received on that has been very good. People like it a lot.


9. Also from existing Xcode users?

Hadi: Existing Xcode users, yes! There are very few people like me that have jumped onboard and after two weeks started to use AppCode. It’s existing Xcode users that are seeing the potential that AppCode offers and liking it. So we’re hoping that once that goes released, it’s going to get a good user base.


10. I really like App Code as well Xcode was quite horrific to use. Another trend that I’ve seen in the last years was more and more integration of additional tools like version control systems, task management, static analysis tools and so on. What do you think, where is the trend of that going to? So will it become more and more of the IDE being the epicenter of your development process and the other tools are really well integrated into that?

Hadi: If you really think about it, this has been going on forever. I mean if you go back to Borland days, Borland came out with ALM, the Application Lifecycle Management and they came out with Borland Studio which was an integration of back then it was called TogetherSoft (the software that they had) and they had a version control which they acquired StarTeam back then and then they had the IDE. Then Borland went out of business for whatever reason and Microsoft continued with the ALM. And ALM, if you look at Microsoft now Team Foundation Server you have version control, you have IDE and you have issue tracking and you have your Scrum board, etc. I think that direction is going to continue. From our perspective, I mean from what we offer, JetBrains, we have different tools as well for this, we have youTrack for our issue tracker, we have TeamCity for our continuous integration, we have our IDEs and then we integrate with other version control systems, like Git, Subversion, etc. The benefit from our perspective though is that we are always trying to keep it as open as possible. So, if people don’t know TeamCity, you yourself know TeamCity, but TeamCity doesn’t lock you in. When you use, for example, a tool like Microsoft TFS up to recent versions it locks you down pretty much to what Microsoft pushes out the door. If you don’t use MS TFS and you want to use NUnit, you can, but it’s not easy, you have to fight it. Whereas we want to keep the doors open, be free to use what you want, but value that integration between all these adds obviously to a certain point it does have value. I mean why shouldn’t I want to look at a file in that instance and see which work items were associated to this and which build was associated to that so I don’t see why there is a reason to not add that because ultimately it’s adding value. I mean I used Git from the command line, I love the command line, I mean I write PowerShell scripts in that, but I would also appreciate to have a certain level of integration with that. And there are people that are not comfortable with the command line, there are people that like integration so I don’t see a tendency of changing. I don’t see a great steep climbing in that area either, I just think it’s just been on a continuous path of integration for a long time now.


11. Speaking of openness. There's the community edition of IntelliJ IDE and regarding that are there plans to also provide the community editions of the other IDEs? Is there something around that?

Hadi: Currently as far as I know there is no plans. As you know, we’ve released the community edition and in the year that it was released I think we had (it was mentioned) like a 25% percent increase in sales of our ultimate edition, which is great. People saw the value that it adds but as far as I know in terms of the other IDEs, currently we there are no plans. We did recently release youTrack which is our issue management system, we’ve released a free edition for ten users, no other limitations, only limited to ten and also TeamCity we lifted up all the restrictions apart from the 20 projects and 3 build agents and again we got rid of the restrictions of user accounts, etc. So combining that with the open source of IntelliJ and with how much we provide in terms of open source, I mean pretty much any open source project out there that’s been established for like two-three months has the benefit of getting all our licenses for free and then we provide academic licenses at a high discount. In terms of the community we do push out quite a lot. Of course open source per se is currently only IntelliJ and MPS which you are familiar with - our Meta Programming System.


12. Regarding community and open source, how much contributions did you get back from the community? You put IntelliJ on Git. Were there significant contributions from the community?

As far as I know, I mean I’m not heavily involved in the team of IntelliJ, but as far as I know there has been, yes. That’s why they actually moved to Git and they have contributions from the community, the plug-ins and we kind of embrace a lot of things that the community does like for example a lot of plug-ins that people develop for IntelliJ we bring them onboard and then we help maintain them. So in that sense we are not trying to duplicate efforts that community members are doing which is wrong because, I’m trying to create an ecosystem here. So we do bring it onboard but as far as I know there has been and there are constantly contributions to IntelliJ, I mean it’s run completely as an open source project, that edition.


14. It was quite interesting approach but I never got beyond the initial introduction and I never got a beta testing account. So this is a really radically different approach to develop code. And Web-IDEs for instance for JavaScript development. So what do you think will the future look like? Will it be more graphically, or?

You know, unless they come up with a really nice idea, I’m not sure I would be too keen on the graphic approach because from one side we’re focusing on topics like domain-driven design, I’m focusing so much more on the code being more expressive, writing things out in code and from the other side, if we are going to abstract this too much, I don’t know if it would be of any benefit. I looked briefly at bubbles, I don’t know if it’s going to be viable, at least not in the state that it was. I hope that we don’t deviate too far off unless something really revolutionary comes up. I hope we don’t deviate too far off from the actual writing in the code. In terms of Online IDEs, currently Online IDEs, I mean, if you’re doing web development, it’s great. Outside of that there is a lot of shortcoming still. I mean a lot! I mean I’m not even talking about compiling on a server side. You can’t have 3000 people hitting that server compiling, it’s not going to scale. If it is, you’re going to charge a hell of a high price because, Amazon, everything, they are charging CPU. You just can’t. For compiled languages it’s not viable the model there is now. Whether it will be in the future or there’s other ways of collaborating online - no doubt. And I think that in the future we have to look towards there, towards how to collaborate better between distributed teams because we’re becoming more distributed day by day. So the online IDE is great for that kind of scenario but I think that we’ve not seen everything there is for IDEs, we’ve not seen everything there is for source control. Git now is the new kid on the block but I think distributed is not the last thing either so I think more things will come.


16. But Google Documents is the same. Five people can type at the same time.

I’ve been working remotely I think for 14 years. So more or less I work at home and I work alone and I still develop a lot. I mean I have to, I can’t be evangelist if I’m not developing, it just doesn’t make sense selling tools. And I love writing code and I really miss pair-programming because there was a couple of years that I was doing pair -programming on site and when I was doing consulting I was doing pair-programming and I miss it a lot. And I would love like you say, to be able to have that immediate kind of feedback of pair-programming like you’re sitting next to each other with the benefit of “I don’t care if you use the IntelliJ key bindings and I use the Visual Studio key bindings” because that is a problem when you do pair programming. Or “What does your keyboard look like? Mine is Spanish and yours is German.” That would be awesome because I mean I’m a big fan of pair programming. I think it’s way more productive than just solo. So yes, I would like to see things in that area.

Jan 13, 2012