I often find myself tempted by the glittering riches of some new IDE, or some new language (or language feature), when what I really need to do is buckle down and write some code, or even harder, do some of the difficult thinking that happens before coding. Usually, when I am not making progress on a project, it is because of something that neither languages nor tools will help. Usually, I am mulling over some thorny problem, either in the user experience, or in the architecture. When those hard chunks are out of the way, it’s pretty clear
So I didn’t do anything about Eclipse this morning. I continued to hack Python in one of the many Python IDEs that clutter my hard drive. Aha! “Many IDEs” must mean I’m an IDE guy. I’ll admit it, I like playing with new tools. But the fact is that I use all those IDEs the same way: as a Python-aware text editor with tabs. I don’t do much more with them than that. For me, IDEs occupy a similar slot to candy: they’re tempting, almost irresistible, enjoyable for a short while, but ultimately unsatisfying. They don’t get at the heart of the problem.
I haven’t had an opportunity to use Eclipse’s luxuriant refactoring tools and quick fix doodads. I’m sure they make developers more productive, how could they not? But they won’t help me decide how to refactor, or what the right semantics are for an abstraction, or predict in which ways the system will have to change in the next release. They won’t help me find the simple path among the complex, or choose just the right words to describe my thoughts, or understand the user’s problem better. They may help me be a more productive coder, but they won’t helpme write better software.
I couldn’t agree more, I really couldn’t. I’m in total agreement with
everything Ned says, there. Interestingly, that includes one other thing
that has reassured me no end. You see, Ned’s on my list of “hackers I
would like to be more like“, because I’m always impressed with how much
he knows about the art and science of writing code. And he says that he
only has “a primitive understanding of what a closure is“. Hooray!
There’s hope for me yet. That describes my understanding perfectly,
that, no matter how many times I read someone explaining them. I know
what they are, and I know where they can be used, but it’s a primitive
But Ned’s completely right about using Python IDEs “as a Python-aware text editor with tabs“. At work, when writing ASPs, I use Visual Interdev, but I’m not using it to manage projects, no no. Instead, I use it as a VBScript- and JScript-aware editor that can do more than one file at once. Even the Intellisense thing isn’t all that useful, because it’s Interdev 6 and doesn’t do it for most things. (I suspect that’s not its fault but mine for not doing some necessary setup, but I don’t know how to make Intellisense work for an arbitrary object.)
I keep hearing that Eclipse (or, worse, Emacs) is our answer to Visual Studio. Maybe it is. But clearly I’m not the person to tell you whether that’s the case.