Programmers Notepad & Automation: A Tricky Friend
Recently I've been using a tool called
Programmers Notepad
as I learn Ruby and even at work as I edit various documents.
Programmers Notepad (PN) is a replacement for windows Notepad that
includes a bunch of nice to have features like syntax highlighting and
a tabbed interface. However, the part about it that I've liked the most
so far is its "Tools" capability. With "Tools", PN lets me automate
common tasks associated with certain document types. For example, I can
set up a Tool for SQL files that will open up SQL Query Analyzer with
the script I am working on already set up to be run. Or I can setup a
Tool to run the script and capture the output to a file, which I can
then review after every modification to the file I'm working on.
So that may not sound very exciting to you; especially since you can do
a lot of similar things by fooling with your file extension
associations in XP. What's nice about this is that you can be
manipulating a bunch of text items within one environment and have that
environment setup to allow you to easily execute common tasks with
these items. So if I'm working on something in Ruby, I may have a bunch
of Ruby source files open, a SQL script for a database and an HTML file
for the front end. If I setup PN right, I can setup keyboard shortcuts
to run tools that do whatever is appropriate for those file types. So,
in essence, PN lets you build up your own IDE.
So why not just use a prepackaged IDE? Well for .NET development, it is
hard to argue against Visual Studio .NET for nothing else than its
ubiquity. For all the slowdowns, annoying crashes, and inexplicable
behaviors, it is still the defacto standard for a .NET project and
gives me IntelliSense, integrated help, easy compiling, etc. So VS .NET
certainly does a lot to speed up my day. However, what I've noticed
while learning Ruby is that for Windows at least, there is not an IDE
anywhere close to as polished as VS.NET. This forced me to fend for my
self and figure out how to make my development in Ruby go easier, and
hence PN.
Getting back to PN and rounding into some kind of point to this post...
I discovered there was actually a large value to me in having to build
up my own IDE and automate the common tasks I wanted to accomplish.
There was a cost in time, but there was also a value in really having
to figure out what was going on to feel confident in automating it. If
automation is given to you out of the box, you never have to dig into
it and figure out what's going on; it just works. Sometimes that's
fine, sometimes we only care that it just works. However, that often
ends up coming back to haunt us later. When we deploy an application
and can't figure out why it doesn't work in the new environment when it
works on our desk or when we try to setup up a project on somebody
else's machine and realize we don't really know why it works on ours,
this is when we incur the cost of automation we haven't earned or don't
understand. So that's why automation can be a tricky friend: we'd be
foolish to not save time and take advantage of it, but if we accept it
with no understaning, we are fooled into thinking we know more than we
do.