#Automation#Python#Tooling#Productivity

Small internal tools that change everyday work

A

Alexandre Jeffroy

Software Engineer

||2 min read

When people talk about automation, they immediately think of large systems. What I see on the ground is far more modest: small internal tools, sometimes just a few dozen lines, that save time for an entire team.

Spot the task that always comes back

The good candidate for automation is the tedious task you keep redoing. Renaming files, checking a format, pulling a piece of information out of a log: the kind of thing you repeat without even noticing. As soon as a task comes back more than two or three times, I wonder whether a script could do the job in my place.

Example: an automated check in Python

Here is a small script that verifies each source file carries its header.

python
1#!/usr/bin/env python3
2"""Check for the license header in the sources."""
3from pathlib import Path
4
5HEADER = "// Copyright"
6
7def files_without_header(root: str):
8    for path in Path(root).rglob("*.cpp"):
9        text = path.read_text(encoding="utf-8", errors="ignore")
10        if HEADER not in text:
11            yield path
12
13if __name__ == "__main__":
14    import sys
15    missing = list(files_without_header("src"))
16    for path in missing:
17        print(f"[missing] {path}")
18    sys.exit(1 if missing else 0)

Wired into continuous integration, this check becomes automatic and drops out of the developers' heads entirely.

A tool does not need to be perfect

An internal tool is not a product. It simply has to be useful. An imperfect script that saves ten minutes a day will always beat a perfect tool you never finish.

The knock-on effect

When a tool proves useful, colleagues pick it up. They improve it, adapt it to their own needs, and often end up proposing others. Bit by bit, the team automates its routine gestures and frees up time for the topics that truly add value.

A matter of habit

Tooling your work means taking care of the team as much as the product. For me it is no longer really a decision: it is a reflex I carry from one assignment to the next.