DEV Community

Cover image for Code fatigue - frustrations
Michael Currin
Michael Currin

Posted on

Code fatigue - frustrations

I hope you can relate to the struggles here.

Maybe you have some encouraging words for me, or some ideas to change my mindset or priorities. So we can keep each other less anxious.

Overwhelming feeds

I subscribe to updates from couple of tech sites. These easily get too much - instead of leaving updates unread and then feeling burdened, I sometimes unsubscribe. I can go and visit the sites if and when I need to catch up.

Or I let go of the idea of reading everything - rather focusing on getting the most out of a few posts.

The quality and relevance of the recommended posts I get is a mix of great and poor. The poor ones are annoying to sift through. When the they are great, I end up slowing down my devices because I open tabs to read, but often don't get to read the article. Or I end up with starred mails or bookmarked tabs that I might get to... one day.

Yesterday I got five Dev Digest mails from dev.to on recent posts and another today. All with the same subject line - I hope that was a bug on their side.

Gmail screenshot

Anyway, I have unsubscribed from this now:

  • Send me a periodic digest of top posts from my tags.

I just discovered I can adjust the weighting of topics in my dev.to feed:

I get too many regular mails from blog platforms like Medium.com, Hashnode, Hackernoon. Again, I like the content but it gets overwhelming in my inbox.

Plus I get mails from Digital Ocean, FaunaDB, StackOverflow, Daily Coding Problem....

I unsubscribed from AWS because they send weekly mails on conferences and it gets too much.

I removed some subscribed topics from my Dev.to feed so I can get more Python articles and fewer JavaScript or beginner articles.

Package management

I use GitHub's Dependabot and sometimes also Snyk, so that I can get notified of security vulnerabilities in my GitHub projects. I have over 100 repos on my GitHub profile, mostly original.

So this means that about every week, at least one of my projects has some insecure packages. Especially in JavaScript projects where it is common to have 1000 dependencies in a project and to have dependencies to be nested many levels down. Here is vulnerability message I got for cache-base@1.0.1, which goes 5 levels below the Next.js package (which is already at the latest version).

next-quickstart@0.3.0 › next@10.0.4 › webpack@4.44.1 › micromatch@3.1.10 › snapdragon@0.8.2 › base@0.11.2 › cache-base@1.0.1
Remediation: No remediation path available.
Enter fullscreen mode Exit fullscreen mode

In fact, that vulnerable version of cache-base@1.0.1 appears in about 15 dependency paths.

Here is a longer one for the same alert - this is 12 levels below Next.js package:

next-quickstart@0.3.0 › next@10.0.4 › webpack@4.44.1 › watchpack@1.7.5 › watchpack-chokidar2@2.0.1 › chokidar@2.1.8 › readdirp@2.2.1 › micromatch@3.1.10 › extglob@2.0.4 › expand-brackets@2.1.4 › snapdragon@0.8.2 › base@0.11.2 › cache-base@1.0.1 
Enter fullscreen mode Exit fullscreen mode

Sometimes it is automated to apply a fix, sometimes it takes more effort. Sometimes there is no solution available yet like above, which leaves me feeling helpless and I have to shrug it off.

JavaScript frustrations

I write and read about JavaScript almost daily. I often find there are surprising quirks about the language and ecosystem that I don't have to worry about in other languages.

Some phrases I bet you can relate to are "callback hell", "promise hell" and "Javascript fatigue" (I believe the last one deals with learning and switching between so many libraries). Some months ago I wrote out my frustrations (with code samples) here.

I'm glad to have tools like Vue's build command tell me the size of my output files. But even on a fresh Vue quickstart project made of just boilerplate Vue code, it warns me that the output file sizes are too large. I don't know if anything I do in a larger project can bring that down below the warning level.

Or I have to do reading on to how to optimize my bundling, minifying and chunking... and I might not solve the issue.

The endless todo list

This is something I have to come to terms with again. I sometimes feel optimistically that I can spread my time between my favorite existing projects and make new ones. And that adding features is quick and fun.

And other times I spend most of my evening after work or a weekend is trying to add just a single feature to just one project.

And I have to troubleshoot a lot of bugs on the way. Especially annoying when using a language or library I am new to.

And when I finally get the feature out, I have TODO items in the code, or I've added issues for myself on GitHub to come back to when I have more time and energy to refactor to code / add a feature / fix a bug.

One of my favorite projects is a markdown badge generator which I started 12 months ago. I now have over 60 open issues (all by me). I don't know if I'll ever get to them, which feel like a burden, or I have to forget some.

I do find that issues help me organize my thoughts over a long time including with links and screenshots.

I love coding and that's why it's my career. But when coding on work and personal projects, I feel like I am slaying the task head of a many-headed hydra, which then spawns two more tasks in its place.

The endless todo list is not just in tech, it is probably any career. Plus our personal and admin todo lists.

Top comments (6)

Collapse
 
tqbit profile image
tq-bit

I feel you. The Javascript lib part is especially tiring if there's more than one person involved

  • "Yes, I know, but this is a better approach"
  • "I've worked with this module before, it's very easy to integrate" [every so often, it ain't]
  • "Trust me, this will work 100%"[well, if you say 100% ...]

A way to counter it, especially with your own projects, is to satisfice. Set yourself a level of 'done' for a project which you can live with - and then leave it be. I mean:

  • Use full path for README.md <- that's issue #71
  • Decrease font size <- that's issue #60
  • Add credits <- that's issue #46

Please don't get me wrong with the following statement - but do you really need this stuff? Does it offer any additional benefit for the user? Is the time you spend doing it going to save opportunity cost for somebody else ( dev, user, admin, tester, ... )?
If not, scrap it for good and focus on enhancements that add value to your product.

It's a big shot, and adaption to it takes time, but try and give the Getting Things Done approach a try. The book and the methods presented are definitely worth reading imo.

Collapse
 
michaelcurrin profile image
Michael Currin • Edited

Thanks for your comment.

Yes some of the issues are really minor and maybe I'm not sure how to do them or whether to do them.

So I focus my time on what makes notable difference to my enjoyment of using the tool or fixing something that annoys me every time I use it. I can be more deliberate about that.

My manager actually recommended I schedule a time to groom my own issues, like we have agile grooming at work. Then I can close issues that no longer matter or I can prioritize which ones to do first. GitHub lets you pin 4 issues in a project, so I like that for focus.

I like your comment on thinking how a task benefits another user. If something has few stars, then few people are really affected by the quality of project or how many things are done. So I should choose which projects and tasks make sense.

Thanks I'll have a look at Getting Things Done.

Collapse
 
hamdano2 profile image
hamdano2

I feel same way sometimes. Here are some ideas based off of my experience.

  1. I rarely subscribe to things (but you seem to be doing that too now so nice).
  2. Find one project that you enjoy working on or can summon passion for. That will sustain you when you find it hard to keep going. Because all projects have a "hard slog" period. Where your decisions start to bite you in the bottom and working on it isn't as fun as it was before. Recently I had an idea for a product I'd like to base a company off of someday.
  3. Make sure you are happy with the libraries and technologies you are working on in your free time. I kept restarting everything until I was happy with it. I think of it like this, I'm having a hard time putting extra hours on the weekends and after work so I better enjoy using those things.
  4. Don't feel bad if you don't code every day. Or if you can only summon enough energy to do it on weekends. I think I am passionate about being a web developer (hobbyist) but it takes a lot of focus. So it is easy to burn out if you are doing it every day after work for example.
Collapse
 
oguimbal profile image
Olivier Guimbal

FYI you can input a negative weight on the dev.to tags you don't want to see. I've excluded all articles tagged #begginer tag like that, for instance. It helped a bit.

Collapse
 
michaelcurrin profile image
Michael Currin

Oh thanks. I like adding it an using 0.01 or actually a negative value?

Collapse
 
oguimbal profile image
Olivier Guimbal

A negative value. Those tags will never appear again.