Technology makes our lives convenient. We do not have to memorize that much, we can stream hundreds of albums with a press of a button, and we can now generate ten thousand lines of code a day to maintain a personal blog.
If we forget about the peer pressue, advertising, and FOMO, one of the popular reason to adopt a new tool is a matter of convenience. "Does a tool make my life more convenient?", we often ask. What we do not usually think about is whether we would really like our life to be convenient this way, and if we are ready to deal with the second-order consequences. Like a door, or a kettle, a software tool has affordances, and people will use an abuse those when using a particular tool.
For instance, using package managers makes it more convenient to set up a new project, and onboard new people in the team. At the same time, package managers make it really easy to add new dependencies thus making your code more dependent and less robust. Using LLMs to spit out ten thousand lines of code a day is handy to get to a running prototype fast. This comes with a cost, we do not understand deeply what we build, reviewer's burden is real, and we usually end up with a lot of dead code in the repository.
I do not think there is any more to say: think not only about benefits, but second-order consequences when choosing a technology. Below, I will give examples of second-order consequences of my suboptimal personal decisions.
I have loved musing since I was a child. We had a vinyl player at home. I also got unlimited access to my uncle's tape recoder until I got my own. It was a double cassette one, and you could borrow your friend's tape, and copy it onto yours. Exchanging tapes and listening to new albums together was an important leisure time for me and my friends. Same was for movies and video games. Having one video game meant having X videogames you could get from your X friends.
Choosing a record was a serious business that required preparation. Music was consumed by albums, and getting a video tape of a live performance was an extraordinary event. I listened to every record multiple times until I memorized the lyrics without making any deliberate effort.
Streaming changed the way the music is consumed. Albums are not atomic anymore, people download single songs which to me sounds like reading one chapter of a book and switching onto the next book. Selecting music is a passive act of opening an app and listening of what the algorithm spoonfeeds you. It is rare to sit down and listen to an album without doing something else in the background: doomscrolling, reading, or texting your friends.
Realising that made me sad, and I stopped using streaming. I went back to buying records and listening to my old CDs. I consume music by albums, and try to listen to it just sitting down, without doing anything else at the same time.
I was a huge fan of early web chat rooms spending many hours and dial-up traffic keeping the telephone line busy. Of course, I was on Facebook, VK, Twitter, Linkedin and others. I even created my own where people could teach other doing stuff for free. It was fun at first, but then the social networks got enshittified, and are a collection of performative posts, advertising, and other cringe.
What were the second-order consequences there? Wasting time, losing privacy, comparing myself to others, and constant desire to check the recent feed and caring about other people reactions at my posts.
Getting rid of social networks was not easy for me. When deleting Linkedin I was anxious that I will have problems finding a job. When deleting Facebook, I was hesitant to lose my connection to a couple of people I cared about. When deleting VK, I had to back up some photos from my univesrity years. When deleting Twitter... well, I am still there, but rarely log in. Why have not I deleted it yet? I am not sure, it is mix of all of the above.
This one is a hard one. I was an early adopter of smartphones, and ignored the negative consequences of those for a long time. I have tried everything: Nokia's early Symbian smartphones, a Maemo device, a bunch of iPhones, an HTC PDA, more than ten Android devices. I even was developing apps for Android in my twenties.
Lack of self discipline, compulsiveness, and different tricks from app creators cost me a lot of money, many hours of sleep, time with people I care about, and my peace of mind. Similarly to social networks, a constant desire to check what was happening poised my life, and often made interaction with people around dull in comparison to a magical world of the Internet.
When I realised that, I tried to live for a year with a dumb phone, but eventually I surrendered. I have a minimalistic setup that includes a couple of banking apps, maps, a messenger, and a browser. This is more distracting than a dumbphone, but it is a compromise.
I bought a smartwatch because I thought it would be cool to set up an alarm clock or a timer with a voice command. It now sounds stupid, but back then I thought it was adding real benefit to my life. And, of course, now I knew that I was doing about ten thousand steps when going to the university and back.
The second-order consequence was that now I had to charge the watch once a day, often running out of battery in the middle of the day, and getting distracted about some unimportant push notifications.
I got rid of my first smart watch, and switched to a Garmin watch. I got a battery that lasted for several days, and I knew how many kilometers I made on a bike. I started tracking other people's rides on Strava and getting anxious about lagging behind. I started dealing with all synchronisation issues and sometimes spending half an hour before my run to upload a training program on my watch. Spending time analyzing my 5km run was a custom instead of just relaxing and enjoying my day. Luckily, one of the buttons on my Garmin broke, I could not fix it, and now I have a mechanical watch.
Bluetooth headphones are really convenient. If you get lucky and pair them with your device, you can exercise and listen to the latest Taylor Swift's song, or maybe listen to the next episode of a three-hour podcast where the host is constantly yapping about something that does not really matter.
Now, you will not get bored while commuting, because noise cancelling works amazingly well in the Tube, and your favourite show on Netflix released ten more episodes. Consequences? Similarly to a smartwatch, bluetooth headphones amplify the effect of a smartphone, they allow you to use it where you previously could not.
I was constantly consuming content, my unlistened podcast list included hundreds of episodes, and I often went to bed listening to something. It was like earplugs but for my brain. I was maximising content consumption while having zero minutes to think about the content I was consuming. I was also occassionaly doing some dark magic when the headphones refused to connect.
I do not listen to podcasts anymore, my operating system does not support bluetooth, and I listen to music on a music player with a headphone jack. The life is geat again.
Similarly to social networks, I have tried a lot of could-based software thinking that I really need it. Dropbox was really great, I could access my files anywhere. Google Docs, Todoist, Notion and many others made me feel productive. I spent a ton of money on subscriptions, and a lot of patience on waiting for my ten-item todo list to load in a browser.
Personally for me, the second-order consequence was getting used to the shitty speed and lack of robustness of web-based apps, and accepting that as new normal. Some people now even do not know how fast local software can be.
It all started after Todoist was down, and I got pissed that I could not get access to it for half an hour or so. And then I realised that I did not really need to synchronize all my files around all my devices. With a dumb phone, I did not even have a device to push my todo list onto, not even speaking of Notion. Fueled by anger, I wrote my own to-do list app, and later moved to a paper-based one. I rarely use google docs now, and do not use any other cloud based service.
Reducing the need to use a web browser enabled me to use my computer without X11 for most of my time. Most of the browsing I do is in w3m or dumping the page to a textfile, and reading it in vim. I gained zero distractions, zero cravings to check what is happening out there, and an ability to do a lot of my work offline.
I wrote about this already here and here, but I will do it again. I started programming seriously quite late, in my early twenties. I was using Eclipse as my first IDE, and then switched to IntelliJ Idea. I was a huge fan of autocomplete, that was a lifesaver in the Java world. Going to definition, especially in the libraries felt incredible. An integrated debugger was perfect.
When I jumped to Python, I used PyCharm, VS Code, and then I discovered a fancy new world of Neovim. Together with kickstart.nvim, I quickly set up twenty plugins that gave me a TUI IDE instead of a GUI IDE with PyCharm. What were the second-order consequences of that? Quite a lot, actually. First, hugely increased surface area, where every malicious commit from a random plugin you use can screw you. Second, LSP stability and its compute hunger were far from the ideal, and I hate sluggish software. Third, maintaining config across personal, and work setup also required some work.
I started experimenting with simpler setups. First, I forked most of the plugins I wanted, and pinned my setup to those. Then, I realised, that most of the things I use from plugins, can be quickly implemented in Lua, and replaced most of the configs with my custom functions. I kept minimising, and realised, that there were more second-order consequences that I thought of. I found out, that when I used find/grep instead of go to definition, I learnt the structure of the codebase, random false positives left some memory traces that later turned out to be important for debugging. Getting rid of LSPs helped me to memorize library API and need to read documentation helped me learn new things.
At some point, I realised that I can live without most of the Neovim config, and I do not really need Lua. So, I jumped onto Vim, and got a more stable tool that does not change. My current config is extremely simple: set et sw=4 sts=-1 hid. When setting up a new machine, I can just type it in.
Some people consider me a luddite, I think that my approach brings benefits. Beyond the arguments above, my simpler setup makes me think before I type, my code is simpler, and I get a better mental model of the code I write and read.