... there are some aspects of working as a web developer that do not spark joy in my heart. After collecting some notes over time, I have pasted them into this dev rant and added some links, screenshots, and clarification.
This rant is basically a collection of some stuff that I had written down to get it out of my mind. Finally decided to publish and share, so maybe it's fun to read, and maybe it is good for you to know that you are not the only one getting annoyed and confused by misleading error messages and the like. So here we go:
Adapting boilerplate configuration code for Webpack, React, or any other tool, to reflect the latest breaking changes.
Tasks like this may mean front-end web development to some people. But to me, it means nothing but wasting my time with menial tasks that could have been avoided if developers would actually care not to break things.
Apart from regular upgrades to node packages, which break other packages' peer dependencies so that those other packages need another upgrade, which breaks another package ... apart from that, we can check for security vulnerabilities automatically using
npm audit, which is, in theory, a good idea, despite occasional irrelevant alerts and false positives. But either there is "no fix available" or if there is, chances are, that
npm audit fix will upgrade (or even downgrade) a dependency that breaks something else.
Don't even bother checking the error logs and vulnerability details to try and fix the problems yourself. You will find out that half of your software has already been deprecated in favour of another totally different technology, which is either unavailable due to a peer dependency of an indispensable module, or else it will be completely incompatible, poorly documented and still in beta.
Beta or not, even common tools that are supposed to be stable, maintained, and popular, sometimes lack the ability and documentation to make them "just work" on my own machine.
Every tutorial seems to make at least one assumption that does not match my current situation when trying to use any popular tool exactly like advised in their official documentation.
Annoyed also by tutorials trying to tell me that something is easy, all I need to know, or supposed to make me have fun.
I am just trying to do my work, okay?
Okay, we'll send you a GIF.
Annoyed to see animated meme images of some seemingly popular Hollywood actor, when all I wanted was a solution to a technical problem. Having to read npm idiosyncrasies like "sill" or silly slack phrases like "Sweet potato! Here's a tractor" or "more holy moly!"
Yagni is a statement that some capability we presume our software needs in the future should not be built now because "you aren't gonna need it". The same could be said for many facts that I learned the hard way, without any relevance for future use.
Researching and learning anything could always be considered a waste of time in the perspective of being outdated and irrelevant in the future, but then at least the learning process has an intrinsic benefit.
Or at least it should have, while in practice, we often spend hours, days, even months and years, to research specialized knowledge that does not provide any benefit outside its limited use case.
I am not talking about jQuery, Flash, or BASIC. All of them gave me insights and experience that I don't want to miss, seriously! But looking back at my StackOverflow bookmarks set in the past years, I deleted numerous links to discussions about Highcharts options, Internet Explorer idiosyncrasies, Docker glitches on MacOS, Network Manager malfunctions on Ubuntu, line-endings issues in git bash on Windows, ReactDOM peculiarities, and third-party services' API problems.
When I think of all the good time that's been wasted!
Overly verbose error messages are another potential time sink.
We could also call them...
Error messages containing several pages of verbose stack trace details that still omit the actual file name or line number that would help you to trace the error back to your source code.
If line numbers are included, they are either lines in the source code of a third party framework component, or line 1 of your compiled application bundle. I even got errors in line 19 of a component that only had 11 lines in my source code.
Googling the error message, finding either unrelated or unanswered questions on StackOverflow, and if someone did have the exact same error message, surely their question had been erroneously marked as a duplicate or "downvoted" and closed for any other obscure reason.
In other cases: not a single matching entry, and Google stating the obvious: that there are not many great search results. You don't say! 😲
Alternatively getting a lot of search results, but mostly unrelated, annotated by small blue links with a strike through one of my search terms, stating "missing / must include". These links never provided any single more relevant result when clicked.
All of this only to find out later, after hours of frustrating research, that the actual error was a typo in a completely unrelated file never mentioned by any error message or linter warning.
Try to fix the same typo in the StackOverflow example where it came from, but on submitting an edit, getting the error message from StackOverflow:
"Edits must be at least 6 characters; is there something else to improve in this post?"
Change this behavior to allow for spelling corrections and the like has been requested on StackExchange Meta for at least 10 years. Not the only reason to rant about StackOverflow, but this one seems really silly.
Adding dangling commas at the end of any line where you do not need to. Okay, this is even valid ECMAScript, at least, so no need to transpile for the linter's sake. But I did not find it helpful to achieve the intended benefit of getting less verbose
git diff to review, because adherence to indentation rules makes everyone reformat twenty lines of code around even a single character fix on one line anyway.
Having to add trailing commas mostly everywhere just moves inconsistency to
package.json and any other
json file where there are still some parts of the code that will make your code invalid. Now why won't the ubiquitous Babel handle that as well?
Most code examples found in official documentation seem to use double quotes for strings. AirBnB doesn't. So after pasting documentation examples into your own code, you have to "fix" the "errors", sorry: 'fix' the 'errors' until you see no more
Strings must use single-quote.
Not really an issue in most cases, but still another waste of time and concentration, when every now and then, using more than one branch, small edits,
git diff complains about "conflicts" that are obvious to solve for a human but still not for a machine, despite the hype about the age of AI, coding co-pilots and the like.
It still happens, that you copy a well-formatted code snippet and paste it into your editor / IDE where the original format gets messed up to unreadability, does not get fixed, but instead linted and underlined with helpful annotations like "Expected indentation of 8 spaces but found 4".
All of this mess gets more likely, the more recommended tools you try to stick together, especially if any part of the setup or boilerplate code has not been updated during the past eleven months.
Seen the same pattern in GitHub issue, but also in Google's Help Center: there is one single, unhelpful, answer for a problem that keeps occurring and which is hard to google, and the thread is already closed? "This question is locked and replying has been disabled." Also known as "Can't Reproduce, case closed."
Last, but not least: I am really upset about companies trying to make me pay for information that is, or should be, freely available. Don't get me wrong: I am happy to pay for expertise and good education. Paid courses on Udemy and, even more so, FrontendMasters have provided a source of valuable knowledge, and I will surely take more courses when I find time to do so.
On the other hand, there used to be Experts Exchange (always remember EE when you're feeling bad about StackOverflow) and now there is medium.com and various code grepper pages, full of articles and code snippets, many of them dubious, mediocre, and badly written, trying to recycle open-source knowledge to sell subscriptions or making money by displaying annoying ads all over their page.