Skip to main content
Test Double company logo
Services
Services Overview
Holistic software investment consulting
Software Delivery
Accelerate quality software development
Product Management
Launch modern product orgs
Legacy Modernization
Renovate legacy software systems
DevOps
Scale infrastructure smoothly
Upgrade Rails
Update Rails versions seamlessly
Technical Recruitment
Build tech & product teams
Technical Assessments
Uncover root causes & improvements
Case Studies
Solutions
Accelerate Quality Software
Software Delivery, DevOps, & Product Delivery
Maximize Software Investments
Product Performance, Product Scaling, & Technical Assessments
Future-Proof Innovative Software
Legacy Modernization, Product Transformation, Upgrade Rails, Technical Recruitment
About
About
What's a test double?
Approach
Meeting you where you are
Founder's Story
The origin of our mission
Culture
Culture & Careers
Double Agents decoded
Great Causes
Great code for great causes
EDI
Equity, diversity & inclusion
Insights
All Insights
Hot takes and tips for all things software
Leadership
Bold opinions and insights for tech leaders
Developer
Essential coding tutorials and tools
Product Manager
Practical advice for real-world challenges
Say Hello
Test Double logo
Menu
Services
BackGrid of dots icon
Services Overview
Holistic software investment consulting
Software Delivery
Accelerate quality software development
Product Management
Launch modern product orgs
Legacy Modernization
Renovate legacy software systems
Cycle icon
DevOps
Scale infrastructure smoothly
Upgrade Rails
Update Rails versions seamlessly
Technical Recruitment
Build tech & product teams
Technical Assessments
Uncover root causes & improvements
Case Studies
Solutions
Solutions
Accelerate Quality Software
Software Delivery, DevOps, & Product Delivery
Maximize Software Investments
Product Performance, Product Scaling, & Technical Assessments
Future-Proof Innovative Software
Legacy Modernization, Product Transformation, Upgrade Rails, Technical Recruitment
About
About
About
What's a test double?
Approach
Meeting you where you are
Founder's Story
The origin of our mission
Culture
Culture
Culture & Careers
Double Agents decoded
Great Causes
Great code for great causes
EDI
Equity, diversity & inclusion
Insights
Insights
All Insights
Hot takes and tips for all things software
Leadership
Bold opinions and insights for tech leaders
Developer
Essential coding tutorials and tools
Product Manager
Practical advice for real-world challenges
Say hello
Developers
Developers
Developers
Accelerate quality software

Automate like a Luddite: thoughtful steps to better code

Explore how embracing a slower, more intentional approach to automation can improve your software development process. Inspired by Luddite philosophy, learn practical steps to enhance code quality and productivity.
Kyle Adams
|
June 12, 2022
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.

The most challenging class I ever took was an English course taught by Professor Lionel Basney. I entered that class thinking I was a decent essayist; I exited with a handful of Cs, average at best. I also exited a much more thoughtful writer.

Aside from being tough, Professor Basney was also an infamous Luddite—that is, someone who intentionally eschewed technology.

I have vivid memories of him clacking away on the typewriter in his office. Basney was friends with another well-known Luddite author, Wendell Berry. Both shared a philosophy that, through Basney’s class, I came to appreciate.

From Berry’s 1988 essay for Harper’s Magazine, “Why I Am Not Going to Buy a Computer," this list excerpt summarizes his approach to evaluating technology:

     
  1. The new tool should be cheaper than the one it replaces.
  2.  
  3. It should be at least as small in scale as the one it replaces.
  4.  
  5. It should do work that is clearly and demonstrably better than the one it replaces.
  6.  
  7. It should use less energy than the one it replaces.
  8.  
  9. If possible, it should use some form of solar energy, such as that of the body.
  10.  
  11. It should be repairable by a person of ordinary intelligence, provided that he or she has the necessary tools.
  12.  
  13. It should be purchasable and repairable as near to home as possible.
  14.  
  15. It should come from a small, privately-owned shop or store that will take it back for maintenance and repair.
  16.  
  17. It should not replace or disrupt anything good that already exists, and this includes family and community relationships.

In the tech industry, our work is often characterized as “faster, more automated.” At first glance, this approach seems at odds with the standards above, which I’d characterize as “slower, more thoughtful.” What lessons, if any, might we learn from those who see the world through such a radically different lens?

‍

A pattern for automating a process

Over my career, I’ve developed a pattern for automating a process:

  1. Do the process. Manually. Many times. Over and over and over and over again. The repetition lets the process sink deep into my bones; I become intimate with all the nooks and corners. I learn where small changes can produce big productivity gains. I also learn, through hard experience, where the pain points are.
  2. Document the process, for myself. Coding is just writing, so committing steps to the written word is the first step towards an algorithm. Since I am my audience, I don’t (yet) have to worry about my biases or the shortcuts I take without even realizing. The point is to solidify the process into a concrete series of repeatable steps. I can test the documentation by following it without thought, almost as a computer would.
  3. Document the process, for others. Now we shine the light on my biases, looking for skipped steps and assumptions. Once others can repeat the process with regularity, we’re finally ready for the last step…
  4. Set the process to code. By this point I have a battle-tested set of steps written up that easily translates to code.

This pattern often produces something that adheres to Berry’s standards: cheaper, smaller, more energy-efficient, and clearly better than what it replaces.

When the urge to automate strikes, take a moment to slow down. Stroll through each step slowly, observing how all the pieces fit. Note where complexity lurks. Revel in the mindless repetition that springs from thoughtfully-considered documentation.

When the time comes, leverage all those lessons learned into tightly-crafted code.

Finally, watch hours dissolve into seconds of work and take a final moment to fully appreciate the beauty of drudgery.

Related Insights

🔗
Mastering automated refactoring tools: A practical guide
🔗
Automate Docker deployment for Ruby: A DevOps guide

Explore our insights

See all insights
Developers
Developers
Developers
C# and .NET tools and libraries for the modern developer

C# has a reputation for being used in legacy projects and is not often talked about related to startups or other new business ventures. This article aims to break a few of the myths about .NET and C# and discuss how it has evolved to be a great fit for almost any kind of software.

by
Patrick Coakley
Leadership
Leadership
Leadership
Turning observability into a team strength without a big overhaul

By addressing observability pain points one at a time, we built systems and practices that support rapid troubleshooting and collaboration.

by
Gabriel Côté-Carrier
Developers
Developers
Developers
Why I actually enjoy PR reviews (and you should, too)

PR reviews don't have to be painful. Discover practical, evidence-based approaches that turn code reviews into team-building opportunities while maintaining quality and reducing development friction.

by
Robert Komaromi
Letter art spelling out NEAT

Join the conversation

Technology is a means to an end: answers to very human questions. That’s why we created a community for developers and product managers.

Explore the community
Test Double Executive Leadership Team

Learn about our team

Like what we have to say about building great software and great teams?

Get to know us
Test Double company logo
Improving the way the world builds software.
What we do
Services OverviewSoftware DeliveryProduct ManagementLegacy ModernizationDevOpsUpgrade RailsTechnical RecruitmentTechnical Assessments
Who WE ARE
About UsCulture & CareersGreat CausesEDIOur TeamContact UsNews & AwardsN.E.A.T.
Resources
Case StudiesAll InsightsLeadership InsightsDeveloper InsightsProduct InsightsPairing & Office Hours
NEWSLETTER
Sign up hear about our latest innovations.
Your email has been added!
Oops! Something went wrong while submitting the form.
Standard Ruby badge
614.349.4279hello@testdouble.com
Privacy Policy
© 2020 Test Double. All Rights Reserved.