The March of IDEs
Visual Studio can be one of the programmer’s best friends, but over the years it has become increasingly pushy, domineering, and suffering from unsettling control issues. Should we just surrender to Visual Studio’s insistence on writing our code for us? Or is Visual Studio sapping our programming intelligence rather than augmenting it?
— Charles Petzold, Does Visual Studio Rot the Mind?
March the 15th is a good day to revisit a talk Charles Petzold gave to at the NYC .NET Developer’s Group some four and half years ago. The speaker is probably best known as the author of Programming Windows, now in its fifth edition, and during his talk he confesses to a love/hate relationship with the software most people use for Windows programming — Microsoft Visual Studio (VS).
If you haven’t read the talk, read it now; and if you have, give it another look. Charles Petzold frets about the addictive nature of VS: if you become hooked on intellisense will you become dependent and mentally flabby? And what about the code VS generates in directories which it chooses?
Beware! Your IDE is taking over: you’ll end up working for it.
The story has a happy ending. Charles Petzold finds an antidote, working on programs to solve a series of maths puzzles set by New Scientist.
I decided to use plain old ANSI C, and to edit the source code in Notepad — which has no IntelliSense and no sense of any other kind — and to compile on the command line using both the Microsoft C compiler and the Gnu C compiler.
Me and my IDE
I rarely use Visual Studio these days, mainly because I’m primarily developing on Unix platforms. I have used VS in the past, though: but I still turned to Emacs to edit files. For debugging, I’ll admit VS is peerless. VS project files aren’t portable. It took someone far more expert than me a considerable amount of time to create a cross-platform build system capable of keeping everyone happy. Similarly, a few years ago I spent a short while doing Java development on Linux. Again, I tended to fall back on Emacs for editing, while using Eclipse to enforce style rules, tidy imports, debug, that kind of thing. I would have used Eclipse more but it kept on crashing. When I first started developing on a Mac I tried out XCode. It opened far too many windows and GDB didn’t seem to want to play with it. I abandoned it.
I suppose I do use Emacs as an IDE for code development, and for everything else, but it’s set up the way I want and it never tries to smooth over the details of what it’s up to. I frequently drop into the shell (even if it’s a shell running within Emacs).
My biggest problem with the traditional IDE is the view it imposes on a software project. The IDE makes you feel like you’re an airplane pilot sitting in front of a bank of controls, steering great swathes of code on a demanding course. The I in IDE emphasises integration; it’s in danger of creating Interdependencies, of coupling everything. I prefer something more focused.
Learning to Say “Hello, World”
It took me a while to reach this view. Charles Petzold’s epiphany is almost identical to one I had myself, many years ago.
Towards the end of last year, O’Reilly books posed the question: What 97 things should every programmer programmer know? In answer, I wrote about the moment I decided to shut down my IDE and get back to basics.
The Ides of March
This [silver denarius] was struck in honour of Marcus Junius Brutus, one of the assassins of Julius Caesar. The reverse shows the cap of liberty given to freed slaves flanked by two daggers. This indicates Brutus’ intention of freeing Rome from Caesar’s imperial ambitions and the murder weapons employed to do so. Below is the day of the deed; EID.MAR, the ides of March.
— From the British Museum collection
I wish I could claim the title of this blog post was my own invention. I’m also struggling to remember where I first heard it. I think it might have been Matt Bowers, who also invented build ASBOs. Anyone?