DEV Community

Cover image for Serenity, feasibility, priority: putting emotion-driven development into practice
Ingo Steinke, web developer
Ingo Steinke, web developer Subscriber

Posted on • Edited on

Serenity, feasibility, priority: putting emotion-driven development into practice

I coined the term "emotion-driven development" last year, trying to get a positive impact from negative emotions instead of becoming a grumpy "old man yelling at the clouds." I still find it hard when so many things seem to go in the wrong direction. A comment below my critical post on the current AI hype reminded me of a famous prayer:

Give me the serenity to accept the things I cannot change,
courage to change the things I can,
and wisdom to know the difference.

I can't change the weather, I can't stop wars, and I can't stop people loving music that I hate, but I should be able to configure my professional setup and workflows to fit my guts and make work easier and more inspiring, at least in theory.

Wisdom to know the difference?

However, there is often no clear distinction between can and can't. It's rather a question of priority: How badly does a misfeature slow me down or interrupt my flow? How much effort, time, or money would it possibly take to change it? Do I even know what I'd expect? What other disadvantages am I willing to accept instead? We can (or could) do a lot, but which price are we willing to pay?

Choices, decisions, and priorities

It's not sustainable to be both ambitious and parsimonious. Either we are willing to invest and pay or work to achieve high quality, or we have to accept what we paid for - and that's not a lot when we choose to rely on cheap or free services.

There are many "unconscious or implicit choices" that we never actively made, and there are others that might be outdated now.

On the other hand, perfectionist solutions might also become outdated soon. Instead of striving for perfect solutions, we could embrace compromise and save our energy for something more substantial, like our family or a charity.

We could become an active part of the open-source software company, but again, how much time and energy should we invest into something that will mostly remain beyond our control?

Linux is no silver bullet ...

I had been looking forward to any alternative to Microsoft Windows when Apple hadn't released OSX yet, NeXt and Sun were available only for specific hardware. Linux was all but an academic experiment. Decades later, it has become a legitimate choice for desktop users, and thanks to VirtualBox, wine, LibreOffice, GIMP, and cloud software like Figma, nobody needs a Mac or a Windows computer for professional work anymore. Linux is a possible alternative.

But a perfect operating system does not exist, and "Linux" is a superset of many different flavors and possible configurations.

Image search results collage of old SuSE Linux distributions

Which Linux distribution and configuration should I use and what to do when a long-term support version becomes obsolete?

I'm a fan of Linux Mint and Mate. I only "chose" to use mainstream Ubuntu again because it was preinstalled on my laptop, which seemed a good alternative to a MacBook, but it needs special device drivers for its touchpad. Ubuntu has many questionable presets, including the "snap" software system, but it's not the only one to prefer GNOME and use systemd, a single point of failure that makes Linux less robust in theory, but I'm no operations expert, and if it works well enough, I don't want to waste my time with experiments.

After two years as a happy user, occasional networking issues got worse, and I remembered that Ubuntu's network manager was notorious for not collaborating well with Docker, which is an essential software to use as a web developer.

Old man yelling at the support department

I have already spent too much time diagnosing my problems and improving my configuration. Recently, I opened a support ticket with my Laptop manufacturer, booted into a Linux Mint live system, and updated Ubuntu, which did more harm than good.

There is no Internet? Public Wi-Fi Networking Issues with Captive Portal Pages - Coder Legion

As a self-employed web developer, I do a lot of networking. But I'm not talking about the kind of networking and its social challenges when talking to people, pitching my business, and making new connections. I'm talking about one of the few aspects...

favicon coderlegion.com

I recalled having similar issues with an Android phone not reliably communicating with my ISP's new default router and with the very same laptop not working well with another ISP's default router. In the first case, I found out that the phone's chipset was known for various other bugs as well, and I solved (or worked around) all issues by buying a new phone. In the second case, buying a second-hand FritzBox router solved the specific problems and prevented escalating conflicts with the provider's support department.

Meme of old man yelling at the clouds and the prayer quoted above: Give me the serenity to accept the things I cannot change, courage to change the things I can, and wisdom to know the difference.

Ubuntu distribution downgrade

Ubuntu 24.04 feels like a downgrade, as many GUI operations have become unacceptably slow or don't finish at all. I want to be able to click on a link in an email and expect Thunderbird to open the link in my default browser, or click on an image in the file manager and expect it to open in an image viewer application without having to wait two minutes for that to happen.

If, as I was told later, distribution upgrades are prone to this behavior, why let a software update service suggest users to do it? Likewise, why has nobody yet handled the case that the Snap store can't update the Snap store while the Snap store is running?

These problems seem to sum up everything that's wrong in our industry in 2024 (or the last ten or twenty years): how can upgrades make anything worse and introduce bugs? What about test-driven development, QA, and coding assistance? The philosophy of minimal viable products (MVP) is often misused to defer beta testing and quality assurance to end users who don't have a choice.

Decisions vs. lazy non-decisions

If I accept, I will probably have to invest some more time and either question my Linux decision and buy a MacBook or question my Ubuntu decision, which was nothing but a lazy non-decision in the first place,

which disadvantages am I willing to accept?

I don't want to abstain from using my touchpad so that I will need a driver. I remember that Mint has even fewer network settings than Ubuntu, at least in the GUI, and I want my WiFi situation to improve, not deteriorate.

Alternatives to Google and other mainstream providers

Large companies like Apple, Google, Meta, and Microsoft have become popular for a reason. Although it might not be the most intelligent or individual decision, these American giants are so omnipresent that any issue or question about their products and services has probably been answered before (or asked a hundred times and "resolved" as impossible).

I tried to use open-source Android without Google services, but that means missing out on official banking apps and location services and becoming like a nerd wearing a tinfoil hat, not to be taken seriously by potential business partners.

However, using a Google phone still doesn't mean opting into all their offers. There are many alternatives to Google services:

Firefox, Vivaldi, or Chromium?

Firefox was the most popular alternative to Google Chrome, but it wasn't smooth and quick on Android back then. So, I discovered Vivaldi, which I also used as my new default desktop web browser to sync bookmarks and sessions between devices.

Even after I stopped synchronizing between mobile and desktop, I kept using Vivaldi on both devices for no obvious reason other than my prior decision. Although I still don't really like Firefox, except for their past open-source achievements and some particular features like font and event handler inspection in the developer tools. However, I never really became a Vivaldi fan either. Vivaldi has many special features that set it apart from others, but feel like misfeatures to me: I don't need tab stacks, gestures, or spatial navigation. When Vivaldi got issues allegedly related to my graphic card drivers, I had enough.

Chromium doesn't have any of the said issues and extra features, and I'm currently happy to use Chromium as my default browser.

By the way, I'd still choose Vivaldi over Safari, but at least I'd have a choice, even if I decided to use a MacBook again.

Mint, Mate?

Many people claim that Cinnamon is an ugly window manager. Mate is probably more beautiful, but both are elegant in their minimalism. Maybe I'd be a happy Arch user, but I've already spent much time configuring Linux, and I'm also a potentially happy MacOS user, if Apple didn't limit configurability so strictly.

I read a rant claiming that "Linux Mint feels like a teenager who doesn't want to grow up". Thinking of teenagers, Mint is the last thing that comes into my mind. Wouldn't they be the "gamers" configuring their OS to look and feel like a slot machine on psychedelic drugs?

"Boys with Linux"

I'm possibly still one of those "I feel like a hacker" boys featured in a recent DEV Monday meme.

Meme: girls with Linux, boys with Linux: so customizable, make my desktop so pretty vs. lol I'm a hacker

I also like to make my desktop pretty, but I'd instead invest the time to make individual IDE themes and just set a personal background picture.

Desktop and customized IDE screenshot

Verschlimmbesserung

I use assistive technologies. Well, I wear glasses, and occasionally I also wear hearing aids. I'm happy to save some time and mental load by accepting contextual help and line completion suggestions. I also use tools to improve my English, including those using LLM/AI technology, like Grammarly, Linguee, and deepL. But I am already quite annoyed by unhelpful suggestions and autocorrections today, and this happens nearly every day.

So, maybe I should restrict or abstain from those unhelpful helpers and focus on my strengths without letting them get in my way.

Many modern advances feel like a Verschlimmbesserung to me. I like the Internet, and I like to browse it on my smartphone to get some information or inspiration. I also like to be able to do a fuzzy full-text search on digital notes or code instead of flicking the pages of a beautiful analog journaling notebook or an old-school vocabulary dictionary.

Still, I'd prefer to take several steps back and explore an alternative society with a slightly different path of "progress."

Update: weeks later, I finally dared and did it!

Linux Mint 22 desktop screenshot

A slightly nostalgic touch mostly thanks to using Xfce, the most minimal and classic desktop manager, and claws mail. Apart from that, everything just works and isn't much different at the end of the day - but it works! No more delays, no more network problems, at least not so far, no snap store update problems.

Why can't everything in tech be so simple and just work?

Don't get a false impression, I did have to adjust my configuration to make everything work again. But I would have had to do so if I had decided to switch to a MacBook as well.

... it's a mint one!

Linux Mint desktop screenshot with a mintish overlay tinting all windows in a minty tone while switching apps with the alt tab keys

I chose a theme that made Mint as "mintful" as it can probably get.

Opinionated web development

Back to web development, it's the same question over and over again: which is the best solution? Which tools and strategies should we choose to achieve our goals efficiently?

It's a commonplace wisdom that we shouldn't reinvent the wheel. Even if we had enough time, we don't want to repeat all the errors and wrong decisions that others have already made and corrected before us. Isn't that the point of progress and shared wisdom?

Opinionated WordPress development

Enter WordPress, maybe the most popular framework powering millions of websites, a freemium business with a large open-source community and many businesses making money selling services and additional software.

I've been hassling with WooCommerce, full-site editing, Gutenberg block editor, and third-party page builders which are definitely the worst option from my experience as a web developer. Do we have a popular content management alternative for non tech-savvy users who don't want to use markdown to write articles? I don't think so. Should we set up individual content structures with custom fields and classic editors for every new WordPress project? I doubt it.

But how can I use Gutenberg with its hundreds of open issues, its picky and undocumented markup syntax, and the bloated best practice to create custom blocks using SCSS, Webpack, and React only to allow us to add some custom styles and markup without breaking the editor?

Sunk cost fallacies and jumping on bandwagons

I rediscovered my wp_template_opinonated, which I will merge and rename to reflect my WordPress development experience so far and find a better title to express the essence of my "opinionated" approach, focusing on minimalism, speed, and modern clean code instead of mainstream WordPress's clutter and mixture of untested modern and outdated legacy technology. Attempts to make WordPress a Symfony app make it worse by overcomplicating what's already overcomplicated, at least in my opinion.

No, I don't want to use jQuery and ReactJS in the same project, and I don't want Webpack to complicate my local build process. I don't want to jump in to complete other people's failed attempts at coding; I don't want to use any piece of software just because it's popular; and I don't want to stick to a software decision just because I invested money for training and certification or - even worse - because my boss or customers are desperately trying to find use cases for a product they want to sell. Just because one option sucks, that still doesn't imply that an alternative is better. It might be worse.

I don't want to be a grumpy old nerd yelling at the cloud(s) either. I'd rather become a teacher and share my experience, hoping to nudge (myself and) other developers and make them question lazy un-decisions before it's too late.

Observe, evaluate, compromise, and decide

The hardest thing about pragmatism is compromise. To get things done, we can't solve every problem, at least not with a critical and ambitious mindset. We need to compromise and prioritize.

Observe and determine what's a severe problem and what isn't, question what seems obvious, and evaluate possible alternatives, necessary investments, and possible drawbacks.

We can appreciate emotions as hints that point to problems and help to estimate solutions, but we must apply scientific thinking to evaluate alternatives and make the right decisions. And if it still doesn't feel right, that's another helpful emotional hint to start another iteration and reevaluate our prior assumptions.

Did you ever get angry about not questioning a decision earlier? Or are you one of the people happily adopting every new update without any serious issues so far? What are your experiences and strategies?

Top comments (0)