People have been automating software development, testing, and deployment processes since the stone age of software. The toolsmith of today shares a lot in common with these ancestral automation efforts. In this week's column, Danny Faught details how toolsmiths can learn by studying the computer subcultures of the past and present that are similar to their own.
Many of the skills that I use in my toolsmith work fit in one of these three categories-open source software, UNIX programming, and hacking. These are tightly interwoven subcultures that helped shaped the computer technology of today and will affect its evolution into the future. Here's why I think having an understanding of each of these subcultures can help you.
1. Open Source Software
Among the toolsmiths I know, the ones who are familiar with more than a handful of tools have all used open source tools. The open source attitude inspires me to share my tools with others, then I benefit from the feedback and improvements they give to me.
But the open source culture taught me more than that. In "The Cathedral and the Bazaar," Eric Raymond said "Every good work of software starts by scratching a developer's personal itch," which is a good description of how many toolsmith's efforts begin. Raymond also recounted this open source sentiment: "Good programmers know what to write. Great ones know what to rewrite (and reuse)." This embodies the toolsmith's effort to not reinvent the wheel and to make a "build vs. buy" decision when appropriate.
2. UNIX Programming
I'm not talking about the operating system I'm using, but my style of programming. Whether I work on Windows, Mac OS, or Linux, I always use the tricks I learned on UNIX.
I didn't learn my first command line interface on UNIX, but UNIX gave me a way to supercharge the command line. The UNIX toolbox paradigm indicates that tools should do one thing and do it well. The more complex a tool gets, the less opportunity you have to combine its features with other tools in unique ways. If command line tools read from the standard input and write to the standard output, they give the user the power to connect the plumbing between them. Graphical interfaces often don't have this kind of flexibility.
The UNIX programming style is also a good way to achieve portability with a scripting language. Many aspects of languages like Perl and Ruby are built around a UNIX programming model, which can be are portable to a wide variety of operating systems. Toolsmiths often leverage their work by using one of these portable languages to build a single tool for all the operating systems they support.
See the article " A Look at Command Line Utilities " to learn more.
The hacker culture is at the root of both the open source movement and UNIX. The part of the Jargon File definition of "hacker" that best applies to toolsmiths is "One who enjoys the intellectual challenge of creatively overcoming or circumventing limitations." Toolsmithing is all about getting rid of limitations-so we can speed up our work, do things more often, and do things that would otherwise be unfeasible. Give a hacker a real challenge, and she'll fervently attack it until conquering it.
Another thing I learned from the hacker culture is how to ask questions effectively. If you only ask questions that can't be answered easily with a Google search and take the time to give enough information for the question to make sense, you'll be much more likely to get a good answer, and you'll build a