I recently had the opportunity to talk with a couple of software project managers from IBM. That company is of a kind that I have never worked at, and many of the companies I have worked at are of kinds that these IBMers have not worked at. There was thus plenty of opportunity for us to have different opinions and to explore those.
One such difference, though one we did not investigate in depth, is over IDEs. There was no doubt in the IBM view: a developer with an IDE is a more productive developer. If your programming team wants to license some proprietary IDE to use on your project, you’re probably better off paying for the licensing.
That’s not the world I come from, and indeed I may even have removed IDEs from my consciousness completely. Sure, I use a few, but what’s wrong with emacs, TAGS, and a bit of gud.el
and M-x compile
? I don’t mind launching an IDE when it’s there, but I don’t miss it when I work with separate tools.
So, are the people who write Rails apps in Sublime Text or vim doing it right, or are they missing out on clear productivity gains? More fundamentally, was it a good idea to build out something like Rails without keeping the IDE support in sync with the features?
There are all sorts of reasons to believe that IDEs are better.
- IDEs are actually better, and IBM has a mature enough development system to be able to measure that.
- IBM believes the Rational marketing (Rational’s price ticket was at the high end of software company acquisitions and perhaps IBM’s culture has, ahem, rationalised that).
- There was a time that IDEs were better than developing without, but now bloatware text editors like emacs and vim have caught up without IBM’s view updating.
There are also reasons to believe that IDEs are not better.
- IDEs are actually not betSourceKit Service crashed.
- The cynic in me doesn’t believe the facts presented by the IDE vendors’ marketeers.
- The bloatware text editors have actually caught up.
- The productivity problems I have do not stem from my choice of editing environment.
What’s kindof interesting is to compare the views of dyed-in-the-wool IDE evangelists, dyed-in-the-wool text editor/command-line proponents, and fence-sitters and find out why they have different views, whether there are facts that can be teased out of these positions or assertions that can be validated. What’s really fascinating is general situation of which this is a single example: there are whole regions of the software development phase space that I have yet to experience.
It is curious when I think about it.
I cannot imagine developing Java without an IDE.
But then again I always use a plain text editor for JavaScript, SCSS and HTML development.
I believe it comes down to the following points
1) verbosity of the language we use and the ecosystem around it. Consider Java, C# which we cannot imagine writing code without IDE.
2) Consider Java. To open and read a file, we have to go through the following steps
– create a File object with a String(file location)
– create an input stream from the File object
– create a bufferedInputStream from the input stream.
Ofcourse we can only read bytes of the File from this. We have something called Reader to read characters and Writer to write characters. The developer has to remember all this and all the unchecked,checked exceptions,private,public,protected, various rules regarding interfaces and implementations. Whereas I can recite entire Javascript syntax, weird prototype properties in my sleep. Also agile(as defined by these companies does not help either)
3) For our application, we use spring boot. When I build my webapplication, the war size is 75MB in which the size of dependency jars are 72MB. My code just uses 2% of these dependencies(which in turn uses all these other 72MB) I am not going to remember all the checked, unchecked exceptions, multiple constructors for each class, interfaces for all these dependencies. It is crazy, do i need all these ? Ofcourse not but that is what my employer expects me to use. So I have to live with IDEs and these so called agile does not help either
4) the developer mentality. I am still yet to see one person who actually goes through the javadoc API of the library they are using(unchecked exceptions, checked exceptions), all the methods that the library provides. Rather they depend on the IDEs to do it for them.
So from my experience, for enterprise(Java apps) IDEs are a must.
As a former IDE developer, I would say it depends. :)
An IDE is a big fat gun. It takes time to learn how to use and maintain.
Code is text, but only on the surface. Underneath it is a structure. A good IDE should help you understand navigate and refactor this structure.
If the structure is simple, we don’t need much assistants. We can think of it just in text form and this gives us a benefit of ease of use.