Saturday, February 6, 2010

...so complex that you need a large IDE to comprehend it

This is an excerpt from an Omaha.pm thread today.

We're discussing Eliminating Inheritance Via Smalltalk-Style Traits by Curtis "Ovid" Poe.

In his paper, Curtis wrote:
Anyone forced to use "vi" (not even "vim") while trying to create an emergency patch of broken code over a slow telnet connection at 2:30 in the morning is going to get very irritated if your codebase is so complex that you need a large IDE to comprehend it.


Trey wrote:
That is kind of silly. If you're shop is using IDE and developing under that sort of framework, your support people should be familiar with the code and the methods used to program it/maintain it.


Agreed. And have the capacity to perform emergency maintenance remotely via whatever means are necessary to do so.

I don't think he's arguing that slow Internet connections are a good idea. I think he's saying they happen.

Trey wrote:
That's sort of like saying that somebody is going to be irritated because they can't stoke up a hydroelectric plant with bellows...So what??


I love your analogy. :) So what? So your business is losing money in the scenario he describes.

I see this an indictment of relying too heavily on fancy developer tools to gloss over crappy code. If my code sucks in text form, but when I right-click on it a million lines of code in my IDE jumps to my rescue and explains it to me in pretty colors, then I'm helpless without that IDE. That sounds like a bad idea.

In the stack of technology ignorance and dependency I've planted my flag here:

- I don't really know or care about sub-atomic particles.
- I don't really know or care how electrons flow through conductors.
- I don't really know or care about chip design.
- I don't really know or care how hard drives, memory, and monitors actually work.
- I don't really know or care how the Linux kernel works.
- I don't really know or care how perl is written (in C).
- I don't really know or care how most of perl's core packages work (in Perl/XS/C).
- I don't really know deeply or care how most of the CPAN modules I use work (in Perl/XS/C).
- I know EXACTLY how the text of the Perl I wrote works. I do recursive grep's through text files to find out anything I need to know.
- Syntax highlighting is a crutch for the weak.
- Method auto-discovery is a crutch for the weak.
- Per-keystroke debugging is a crutch for the weak.
- Re-runnable images of crashes are a crutch for the weak.
- All that other fancy crap in your IDE is fancy crap I don't need. For the weak. :)

Objectively, my gut-opinions about exactly where that line is are silly. Aren't they?

If you take me and my Apple laptop running Terminal.app to ssh into a server and run vi, and next to me you sit a .NET guy running the latest Visual Studio on a mapped drive; is the total complexity of my dependency stack much smaller than his? (OS X is how many millions of lines of code?)

I don't know. I've now spent an hour arguing with myself about it. :)

In any event, I don't thing it's the use or avoidance of an IDE that makes good or poor code. You can create beautiful or ugly code with the simplest or fanciest of tools.

I do think he has a point. If your "...codebase is so complex that you need a large IDE to comprehend it." Then you're doing something wrong. Use an IDE because you want to, not because it's impossible to survive your mess without it.

/me shakes his fist at XML Spy addicts

Ponder,

j

No comments: