Comment Re:It's all about productivity. (Score 1) 1055
As a contractor/consultant I work in a multitude of environments. When management asks me about IDEs here's what I have to say.
1.) The ideal IDE user works on a stand-alone program, on the same platform as deployment. Productivity problems multiply manifold with IDEs when, for example, Java development is on Windows but production deployment is on Linux.
2.) The ideal IDE user works on homogeneous code with no heterogeneous requirements for legacy run-time integration. I've seen companies spend lots of productivity resources pulling third-party packages of a different language into the IDE. Usually the only ones capable of pulling this off are the most senior of engineers. Their productivity gets wasted doing build integration work on behalf of the IDE.
3.) The ideal IDE user works on a project slice only. Too many companies require, in effect, the entire source tree to be compiled because dependencies spun out of control and everything depends on everything else. Again, senior engineers are the only ones capable of solving the IDE failures and their productivity gets wasted.
4.) The ideal IDE user works on small code bases.
5.) The ideal IDE user is not required to run build scripts to build a project.
As a contractor, by the nature of the work, I cannot depend on any particular IDE to be installed at any site. Also it is incumbent on me to use VI and Emacs in production. Good luck finding any production box with Visual Studio installed.
I rarely work on stand-alone programs, I work on distributed software. As a systems program my code runs on multiple machines. While it is possible to attach to foreign processes on 10-20 machines, IDEs are very poor in doing so. Emacs, on the other hand, can fork as my shells as quickly as you like.
As a contractor I work on legacy code nobody else wants to touch as full-time help. I have to integrate legacy and new code.
As a contractor I have written Perl scripts that cobble together the legacy code and new code to create the entire production environment. This is not uncommon. An IDE is not a an ideal environment for complicated build script required to get the run-time working. They are very hostile to the work spaces that need to be checked in and swapped with other developers.
I've seen senior developers waste days on why code compiles and runs in production, but doesn't run in the IDE environment. I've seen tons of productivity wasted by each developer trying to integrate legacy code with each build.
As a contractor I have to say that as a lowest common denominator, Emacs and VI are always productive since they are found everywhere. In an Ideal setting, perhaps someone using an IDE is more productive than myself, but I'm a senior engineer and I doubt if I'm the target for any productivity debate about an IDE. IDEs, as has been noted here, best serve the less than senior developer who is working on code that is ideally completely written and maintained by them. Most Fortune 500 companies do use IDEs, but arguing that an IDE is always more productive is flat out false. In fact, I think if you wanted to pin the notion of a "religion" on the camps, the IDE camp is for more zealous than the Emacs and VI camp: I can use an IDE easy enough and that zealotry has killed productivity as it is not based on reason, but emotionally attachment to the bells and whistles that are not required. When it comes to refactoring, etc. I have personal Perl scripts that make any IDEs capabilities look like child's play. Perl is the ultimate refactoring and reporting tool in the right hands.
Finally, as you may have noticed, much of the productivity that gets lost by the use of an IDE is that of senior developers fixing the nasty integration issues. The trade off of lost senior development productivity due to IDE maintenance vs. the gain of productivity of the more numbered typical developer by use of said IDE is a management call. I have to say though, as a senior developer, I do not relish being brought in to fix IDE bugs on behalf of those who claim superior productivity because the lost productivity is not their time.