The other evening I was reading this post by Rob Conery about his career decisions, programming language choices, and regrets. There is a lot there that surprised me, but a subtle bullet point in a list about the cons of .NET development got me thinking. Among others, a negative point he made about being a .NET developer was that he became more reliant on an IDE than he would have with PHP.
The truth is that a good IDE makes you vastly more productive than a bad one or none at all. Projects are off the ground faster thanks to helpful scaffolding. Coding moves faster thanks to intelligent autocompletes and IDE refactoring tools. Integrated unit testing helps your application be more maintainable. Built in deployment tools, web servers, code analysis, and compile time bundling streamlines the workflow. It also standardizes the developer experience which benefits both the programmer and the business. Programmers working with the same tools work together better. Businesses benefit from greater continuity between their staff and new hires.
That’s just the tip of the iceberg, and on top of all that Visual Studio might be the best IDE available... and happens to be free for the express versions which are fully functional (though lacking some nice but unneeded components). True you might not be considered as “l33t” as the guy who can write solitaire in bash using Emacs, but I have a hunch that the reason many developers hate on IDEs is that there isn’t a good one available for their language. Much of that stems from scripting languages since it’s tough for an IDE to be very helpful with interpreted languages. Just because someone would rather use notepad++ to write PHP doesn’t mean they couldn’t benefit from an IDE, it’s more about stubbornness.
The other big reason people say it’s a negative to rely on an IDE is that it makes you lazy with the language. If you don’t need to remember the syntax and method calls because intellisense is always there to remind you, you’ll likely have a hard time writing a program without the IDE down the line. This is a valid point, and one I definitely relate to. In my opinion though, being a good developer isn’t about memorizing the language specific calls, it’s about knowing the available ways to solve a problem and solving it using the best technique or tools as you can. Using an IDE can help bring your mental focus up a level so that you can work on what’s really important, the solution, rather than think about what the function call is to reverse sort a hash table.
In Rob Conery’s case, the reason he saw the reliance on an IDE as a big negative was the fact that he was primarily a web/win forms developer using the drag and drop controls interface of Visual Studio. That makes sense to be seen as a negative, though I was surprised to hear he spent so much time using .NET that way. Having not seen or used the visual development section of VS in around 8 years, I couldn’t be much happier with an IDE for coding than I am with Visual Studio. I’ve experienced the horrors of Xcode for years, Eclipse is nice for Java but I loathed it for PHP, Aptana was cool for a minute but sent me back to Notepad++ after a while, and so on. Short of some of the products coming out of the fellows at JetBrains, there isn’t much that can hold a candle to the polish of Visual Studio. That’s me though. What are your thoughts on how relying on an IDE affects your programming ability / career? Do you think it’s possible for a team of developers to be as productive with Sublime Text or Notepad++ as they would be with an IDE?