IDEs in the cage
I’m making my way through Nicholas Carr’s latest book, The Glass Cage–slowly, because life. I was pleasantly surprised to see him quote one of my blog posts about how IDEs are “automating” programming.
Some software writers worry that their profession’s push to ease the strain of thinking is taking a toll on their own skills. Programmers today often use… IDEs to aid them in composing code… they typically incorporate auto-complete, error-correction and debugging routines and… refactoring. But as the applications take over the work of coding, programmers lose opportunities to practice their craft and sharpen their challenge. “Modern IDEs are getting ‘helpful’ enough that at times I feel like an IDE operator rather than a programmer,” writes Vivek Haldar, a veteran software developer with Google. “The behavior all these tools encourage is not ‘think deeply about your code and write it carefully,’ but ‘just write a crappy first draft of your code, and then the tools will tell you not just what’s wrong with it, but also how to make it better.’” His verdict: “Sharp tools, dull minds.”
Thanks for the citation!
Lest that makes me sound like I’m advocating going back to not using IDEs, my position is a little more complicated than that. Later in that post:
Am I arguing for primitive tools? No. What I’ve described in the previous paragraph are my personal feelings while writing code. The tools (at least, the good ones) encode the knowledge and hard-won lessons of an entire army of programmers. They often point me to issues I’m blind to while writing code because I’m in such a rush to just make the damn thing work. In aggregate, they lead to a cleaner codebase.
So what am I saying then? I’m saying that we should let the tools help us without becoming crutches, to let us write sharp code without dulling our minds. That sounds paradoxical. It is a subtle mental stance one takes towards one’s work, tools, and output.
At some level the basic lesson of Carr’s book is the same: to not let automation make you complacent and loose the basic understanding of the thing being automated. It’s just hard to do.