TrainingConferencesAbout UsContact UsAdvertiseSQE.com

StickyMinds.com: brain food for building better software

Join

Join

Clarify Your Search Criteria
Tips on Using Our Search Feature(s)
StickyMinds.com Home
ResourcesEventsTopicsPowerPassJobs
Software Testing & QA Online Community  >  Detail: Toolsmiths—Embrace Your Roots



A StickyMinds.com Original
Article Picture
Toolsmiths—Embrace Your Roots

By Danny R. Faught

Send This Content to a FriendGet a Short Link to This ContentPrint This ContentSee User Comments About This Content

Summary: 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.


Tricentis
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 articles "A Look at Command Line Utilities" and "A Lesson in Scripting" to learn more.

3. Hacking
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 reputation as someone who is worth listening to (see "How To Ask Questions The Smart Way"). This skill enables toolsmiths to get help from other toolsmiths for difficult problems.

As Paul Graham says in Great Hackers, "Good hackers find it unbearable to use bad tools."

Fitting It Together
Eric Raymond's "Hacking and Refactoring" essay inspired me to write this article; his essay really brought these ideas together for me. Raymond relates the three categories I discussed above to the agile community. He said his reaction to reading Martin Fowler's description of the agile refactoring process as an alternative to doing up-front design was: "Dude, you’ve just described hacking!" I had the same reaction when I thought about how toolsmiths operate. Toolsmithing, when done well, is hacking at its best!

If toolsmithing has similar roots as agile development, does this mean toolsmithing is inherently agile? No, they're not the same kind of thing. Even though I've used the term "agile automation" to describe what toolsmiths do, that causes too much confusion, because toolsmiths can do what they do on any project—agile or otherwise. I think "tool-assisted testing," or "development automation" is a better description of the kinds of support toolsmiths offer.

The closest analog to toolsmiths I can find in the hacker culture is system administrators. Part of a system administrator's job is writing small tools, either for herself or someone else, and deploying open source and commercial tools. The toolsmith does these things, but with a more specialized user base.

What To Do Next?
To become a well-rounded toolsmith, I recommend that you explore the three topics outlined above. Each of these communities has decades of learning to offer us.

Use open source software, hang out with other people who use the same open source tools, and contribute to the source code. Learn the UNIX command line environment— if you're running Windows, first install the free Cygwin package. A large majority of open source tools were built first in a UNIX environment. For the tools that were ported to a native Windows environment, you'll find it easier to use these tools if you understand how they’re built in UNIX. And study the hacker culture—no, not the ones with malicious intent who you hear about in the news, but the majority of hackers who have good intentions. There are several references below to get you started.

Are there things that system administrators and toolsmiths can learn from each other? I'm just starting to explore this idea, and I'm curious to hear your ideas.

If you have experience as a toolsmith and you'd like to get the support of other people doing similar work, I invite you to join the Toolsmith Guild, where we can further develop the toolsmith craft.

Further Reading Danny thanks Matt Doar and Grig Gheorghiu for their help with this article.


About the Author
Danny R. Faught consults with toolsmiths and testers alike. He hopes to someday achieve full hacker status. His independent consulting practice is Tejas Software Consulting (www.tejasconsulting.com).

Back to Top
 

StickyMinds.com Weekly Column From 4/2/2007 

Member Comments
Add Your CommentExpand Comments
 
Comment:    
by Robert Rose-Coutre 4/6/2007

What you call the "open source attitude" sounds a lot like the general scientific community's paradigm of sharing and exchanging each other's work for constant improvement. I would guess that open source is done in the same spirit. I agree it's the best way to approach testing, programming, and probably most any professional activity. I also liked your toolsmith/system-administrator analogy. System administrators are often called upon to "hack" a solution to a problem, which may include building a tool or buying and "customizing" a tool. I very much agreed with your assessment of the hacking mentality, in its best sense. Hacking can be...Read On

Author's Response:
4/6/2007    
Thanks for your comments, Robert. Yes, the hacker mentality borrows heavily from the research community and academia.

For a great example of hackers outside the computing realm, look up the Tech Model Railroad Club at MIT, which also had a heavy influence on the computer hacker community.

 
 
Comment:    
by keith schrader 4/4/2007

I've found Sourceforge.net to be a good source for different tools. Thanks!

Author's Response:
4/4/2007    
Yes, SourceForge has probably the largest concentration of open source tools that a toolsmith might be interested in, including one that I host there. It can be a good place to browse, though there are also many useful open source tools hosted elsewhere.

 
 
Comment:    
by Srinivasan Desikan 4/2/2007

Wonderful article. I learnt automation from unix and unix based open software such as Test Environment toolkit (TET) and expect (TCL/TK). I agree with the author completely that UNIX kind of operating system encourges you to do scripting and make you toolsmiths where as few other operating systems make you to do things by few mose clicks where scripting is not encoraged.

Author's Response:
4/2/2007    
Thanks for your feedback. The nice thing is that you can apply programming paradigms you learn on one system to the other systems you use. So all the people testing Windows applications can still benefit from the toolbox paradigm.

I even apply idioms I learn in one language in the other programming languages I use. For example, I learned regular expressions in Perl, and now I look for a regular expression library in all the compiled languages I use. I even use object-based programming principles in C after learning C++.

 
Back to Top



 
Ads By Google
What's This?
 
 



About Us   |   Contact Us   |   Terms & Conditions   |   Privacy Policy   |   RSS Feed



© 2013 StickyMinds.com. All rights reserved.
ASTQB

Tricentis



Agile Development Conference & Better Software Conference West