The Basic Tools
The Power of Plain Text
Plain text is the universal format. It doesn't become obsolete, doesn't require special tools to read, and plays well with every other tool in the ecosystem. Binary formats may be compact, but they're fragile and opaque.
Use plain text for configuration, data storage, and communication between systems. It's self-describing, easy to diff, and trivial to process with standard tools.
Shell Games
A GUI is comfortable, but the shell is powerful. GUIs limit you to what the designer anticipated. The shell lets you combine tools in ways nobody planned for. Pipes, redirection, loops, and scripting turn repetitive tasks into one-liners.
Invest time in learning your shell. Customize your environment. Automate the things you do daily. The payoff compounds over your entire career.
Power Editing
Pick one editor and learn it deeply. Know the keyboard shortcuts, macros, and extensions. Your editor is where you spend most of your working hours — even small efficiency gains add up to enormous time savings.
Don't settle for the defaults. Configure your editor for your language, your project, your workflow. If you find yourself doing something repetitive, there's probably a way to automate it.
Version Control
Version control isn't just for source code. Use it for everything: configuration files, build scripts, documentation, personal notes. It gives you an undo button for your entire project and a complete history of every decision.
Always use version control, even for solo projects. Commit often, write meaningful messages, and use branches for experiments. The discipline pays for itself the first time you need to roll back.