PHP developers are firmly entrenched in two camps: those who use text editors, and those who prefer the added power—at the cost of added complexity—that IDEs bring to the table. What's your take?
IDE vs. text editor is an old-age discussion that never seems to quite go away—perhaps because the distinction between a “text editor” and an “IDE” is becoming blurrier and blurrier.
In a recent article for IBM's developerWorks, Jack Herrington listed seven of his favourite IDEs for PHP—his list includes all the usual suspects, like Zend Studio, PHPEclipse, Komodo, and so on. More interestingly, however, his article contains a list of what he considers the criteria according to which the completeness of an IDE should be measured:
Leaving the realm of applications that label themselves as IDEs, one can easily find a number of “editors” that provide a level of functionality that is very close to what Jack lists in his article. For example, TextMate—a popular editor for OS X users—supports a number of these features, either out of the box or by means of plug-ins, although not at the level of, say, Zend Studio. Many of the core PHP developers still swear by the text-based editor vim—and, judging but what some of them can do with it, it is certainly as capable as some IDEs in many areas (at least, if you can remember all the key combinations).
In some environments, interestingly, the trend seems to be towards decentralization—for example, OS X has a variety of applications that each takes advantage of a particular piece of functionality that is normally found in an IDE: version management, FTP access, client- and server-side debugging, database management, and so on.
Undoubtedly, this approach reduces the level of integration, but it also opens the door to a wider variety of options where functionality and personal preferences are concerned: an IDE may only support one or two version-control systems, but a work methodology that decentralizes tasks can effectively interoperate with whatever system one decides to use.
Finally, decentralization also means tighter integration with the operating system: where many popular IDEs have chosen to compromise by using a write-once-run-everywhere platform like Java or XUL as their development environment, decentralized tools tend to be developed specifically for a given OS—thus providing a more consistent user experience for the developer.
The question, then, is whether the line between IDE and editor is becoming so blurry as to no longer justify the added complexity, resource needs and, often, cost of an IDE. Perhaps, this opens the opportunity for a new interoperability standard that makes it possible to integrate different applications into a “custom IDE” of sorts.
Are you an IDE user, or do you prefer to work with your own toolset, thus having the freedom to choose each individual component separately? Sound off in our comment section.