The Joy of Internal Tools

Developers working on the same project often have wildly different workflows, based on how they like to work and the tools they are familiar with. Despite that, there are usually a few common tasks that everyone has to do. If we compare the flow state of writing software to Mario speeding through a level in Super…

Greg Pelly
7 min readadvanced
--
View Original

Overview

The article discusses the importance of internal tools in software development, particularly how they enhance developer productivity and streamline workflows. It highlights the creation of the slack-cli project at Slack, which consolidates various ad-hoc scripts into a cohesive toolset, ultimately improving the development experience.

What You'll Learn

1

How to create a command-line tool that integrates multiple scripts

2

Why reducing friction in developer workflows is crucial for productivity

3

When to build internal tools to enhance team collaboration

Key Questions Answered

What are the benefits of using internal tools in software development?
Internal tools help new engineers acclimate quickly, maintain focus on tasks, and reduce cognitive load by providing a shared set of resources. They streamline workflows and allow for collective improvements, making the development process more efficient.
How does the slack command work?
The slack command functions similarly to git, allowing users to run specific commands by calling 'slack foo', which executes 'slack-foo'. This structure simplifies adding new commands and keeps the tool organized, minimizing conflicts between users.
What is the purpose of slack update-tools?
The slack update-tools command ensures that the tools are kept up-to-date by checking out the latest version from the slack-cli repository and installing it automatically. This simplifies the update process for developers and encourages them to stay current with improvements.
What is magic-cli and how can it be used?
Magic-cli is an open-sourced tool that allows users to create their own command-line tools similar to slack-cli. It provides a framework for running subcommands, enabling developers to customize their command-line experience easily.

Technologies & Tools

Tool
Slack-cli
A command-line interface that consolidates various scripts into a single tool for developers.
Tool
Magic-cli
An open-sourced version of the slack command structure for creating custom command-line tools.

Key Actionable Insights

1
Developers should consider building internal tools to streamline repetitive tasks and reduce friction in workflows.
By automating common processes, teams can focus more on high-level tasks, enhancing overall productivity and job satisfaction.
2
Utilize the slack command structure to create a modular tool that allows for easy addition of new functionalities.
This approach not only keeps the tool organized but also encourages collaboration among team members, as they can contribute new commands without disrupting existing workflows.
3
Regularly update internal tools using commands like slack update-tools to ensure all team members benefit from the latest features and fixes.
This practice fosters a culture of continuous improvement and keeps the development environment efficient and effective.

Common Pitfalls

1
Failing to maintain internal tools can lead to outdated processes that hinder developer productivity.
Without regular updates and improvements, tools may become less effective, causing frustration and inefficiencies in workflows.
2
Overcomplicating the tool structure can lead to confusion among team members.
It's essential to keep the command structure intuitive to ensure all developers can easily use and contribute to the tools.