Programming is a field that doesn't require much financial investment. To start learning or even working as a freelancer, you just need a computer — not even necessarily a powerful one. For many years, I was working on outdated machines, and I found a few tricks that allowed me to stay productive while doing web development.
Operating system: Linux
When I was starting in IT in the 2000s in Poland, the default operating system (OS) was Windows. It was working OK on the new machines, but after a few years and few system updates, most PCs were becoming painfully slow. I hated all the visual bells and whistles that were appearing in the interface with each new OS version: what’s the point of things looking nice if the system is painfully slow?
My solution was switching to Linux. Luckily, all the tools I needed (Apache, PHP, MySQL, Git) were created for Linux, so they were faster and easier to configure there too.
The distribution that worked for me the best was Lubuntu—a lightweight Ubuntu with a desktop interface optimized for older machines. It’s still regularly released, so I would check it out if you are struggling with the speed of your development machine.
Command line as an IDE
To do web development, you need a browser and a code editor. Code editors are often installed as a part of an integrated development environment (IDE). At my first job, I had a bad time trying to use a big, Java-based IDE called Eclipse on an old PC. It was so slow that I was easily distracted while the computer was processing. It was seriously affecting my productivity, so I started searching for faster alternatives.
Part of my job was done over SSH on remote servers, so I developed a workflow based on command line tools. The best part of the command line interface (CLI) is that the tools integrate well by default—you don’t need an IDE to integrate them for you.
Tmux
Tmux is a program that allows you to run multiple sessions of a terminal inside one window. With a bit of effort, you can easily create nested sessions, and a script to start it up for you. I found it so easy to work with that
- I kept using a CLI-based workflow even when I switched to a much faster machine,
- I don’t use a second screen: switching between application windows or CLI sessions is efficient enough with keyboard shortcuts to make another screen almost useless.
Vim
Vim is a great command line text editor. Because it’s developed with a keyboard only in mind, every feature is available as a keyboard shortcut. At first, it might give you a headache or two—you will probably have to search how to exit the files. When you invest time in learning it, you will find its interface very efficient. I’ve learned Vim by following about ¼ of the video course here and by occasionally searching for a solution to some problems.
NeoVim is a modern Vim reimplementation. It has a plugin that allows you to use syntax highlighting and suggestions integration from VS Code. The configuration can be tricky at times, but you have access to all the same tools as other code editors.
Git
Git is a key tool for development. The core program has a CLI only. There are some tools promising better user experience with a graphical user interface (GUI), but
- I was never convinced by those promises, and
- performance-wise, you will be the safest using CLI.
CLI tools
Most tools used in programming are developed first for the command line and later integrated into IDEs or get a dedicated GUI. This means that directly from the CLI you can access the same commands that you can from IDE — or sometimes even more commands. The only issue can be typing them in without making mistakes, but you can address this by defining aliases.
Low-cost screen sharing
I have never done this outside of experiments, but with SSH and Tmux, you can share a CLI session over the internet. It can be especially helpful if your internet connection isn’t stable enough to carry voice and screen sharing. You can find a how-to guide here.
Learn more
If you are working on a machine with a lower performance, the articles might also be interesting for you:
Top comments (3)
With a good neovim config that also handles terminals, I don't really need tmux. NvChad is a good starting point. Instead of only sharing your screen, you can also have a collaboration directly in neovim using instant.nvim. You can also record terminal sessions using asciinema.org/.
Also, it helps to use performant terminal programs, like alacritty or kitty to get the most speed out of your terminal sessions.
Thanks for recommendations!
Programming is so cool, as you can play on pretty much anything, including very old machines, and there's now various stable lightweight Linux distros to ease the setup.
For Linux, I would also recommend using light desktops, like Mate.
You may also want to read about the bullshit web ^^