On IDEs

All programmers have used an integrated development environment (IDE), but some have never stopped, no matter how buggy and slow they are. But an IDE provides nothing of real value, rather make it more painful to use better tools. A programmer's most useful tools, apart from the required ones (editor, compiler, linker), are tools like grep(1) and sed(1). If your IDE provide this functionallity is most likely extremely limited. But what about more adhoc tools? IDEs are only really built to provided an editor and integration with language specific tools (e.g. compiler and debugger) and version control systems. We can just hope that the integration will as great as the real deal (okay, integration between the debugger and the editor may improve things, but that's it, and we will discuss debuggers in another article) — it will not be better. But I've found that integration with the version control system lacking, but good enough. But what if your IDE of choice doesn't support the version control system you are using or the language you are using. Then you have to find another, and it will be painful, because it will be different, and you will spend a lot of time configuring it; where as if you just use the multiplexing terminal and your editor of choice, the worst thing that can happen is syntax highlighting is missing for your language (or completely), but not only is it an easier issue to fix, it doesn't need to be fixed at all, syntax highlighting is superficial, almost cosmetic, it doesn't actually help you when it is working, but when it's off-sync, it can actually get in the way, it will annoy you. But surely IDEs are good text editors?, after all that is no most important function of an IDE. Compared to Notepad, yes, but anything more advanced than that will probably be at least as good as your IDE's. Ever used Emacs or Vim? I'm guessing not if you are using and IDE, these are truly powerful and wanderful editors, even long before you have truly learned them. In particular power, pure editors will usually let you view multiple files at the same time, are keyboard focused, have have a much richer set of keyboard commands for navigations and editing. They may also let you run external programs to process text. This is just the beginning, the terminal, especially a multiplexing one, will surely improve your workful. But these are just in inconveniences — there are actually two critical issues with IDEs (not counting you will probably pollute your source code repository using them): (1) If you are using an IDE, you are probably not using make(1) and (a) if you are not using make you are limiting yourself to only using the programming language, and not scripts or special tools to generate files, and (b) you are making things difficult for your end-user how want to get up and running using your software, and (2), your IDE will not let you augment the programming language you are using with third-party preprocessors or even just sed(1) scripts that modify parts of the code. And of course, people using different IDEs (or some no IDE) on the same project at work can be a real pain when settings for the project are changes, or even when new files are added. Not using the IDE selected for a project, could even be akin to sabotage. As a bonus issue with IDEs, if you are remoting into a system, it will probably not even have your IDEs installed, but it will have vi(1), and maybe even other, more advanced editors.