- It hangs all the time for a few seconds at a time,
- The search is moronic (how about you look on the server and on my computer at the same time instead of hanging for a while and then displaying that dumbass message offering the option to search on my computer instead when there's a problem with the connection?),
- Switching to the unread message view regularly results in a progress doofer that never disappears until you switch to a different view and switch back
- The message list font size gets corrupted by moving between Windows of different DPIs forcing you to switch to a different folder then switch back again to make everything readable
- It asks you whether you want to save changes just because you've clicked a link in a calendar appointment
- Got thousands of emails? It's slow, slow, SLOW, SLOW(!!!), SLOOOOOOOOOOW!!!!!
- Too many modal dialogs
- It's clunky as hell when juggling calendar appointments, booking rooms, etc.
- When opening a meeting series it asks me whether I want to open the whole series or a single meeting every single time. Can I just have a modifier key for this, please, so that I can open whichever way I choose without being prompted?
- Inconsistent and unpredictable behaviour when it comes to inserting images as attachments versus inline in an email
- Losing messages in conversation view
- Difficult to follow conversations/find all messages if you don't use conversation view(!)
- Inconsistent behaviour around contact auto-completion: sometimes people end up in the auto-complete list, sometimes they don't
I could go on. I won't.
Even after all its feature and popularity I find it extremely hard to use and often end up wasting hours trying to create a simple graphic. As a last resort I always end up booting Windows just to use Photoshop to do the same. I have been trying to move away from Windows to linux and so far I'm super happy with everything. But Photoshop is the only reason I have to keep Windows alive (or atleast use wine)
Also the outlook/skype/teams/lync universe of communication tools is laughably inconsistent, it's very difficult for me to do very simple tasks in these tools.
Program that wasted me 100 hours: using LaTeX to make the poster for said scientific paper.
LaTeX is great for when you need to focus on your content and don't have much time to spend on the presentation. However, once the presentation is the entire point, LaTeX is not the right tool.
Well, except if you like boring posters.
More seriously, the absolute worst developer experience I've ever had was a weird proprietary environment called "OpenAT" for a mobile module system. Admittely we were in the beta programme because we needed features, but every new firmware update would fix some features of the operating system and break others. At one point while trying to debug terrible sound we noticed that the volume control wasn't at all linear but a sawtooth: the top few bits were getting lost somewhere. Development required Eclipse, and the reboot-download-reboot cycle took several minutes. No real JTAG, only debug logging over USB. Crashes would, however, lose the log buffer, so you couldn't be quite sure where the program crashed, and all the important bits were real-time so couldn't be single-stepped. Debugging all that was extremely slow.
A hundred hours is only just under three work weeks. It's very easy to get led into a dead end that wastes that much development effort on a feature that turns out to be infeasible or a bad idea, or an intractable bug. I think I've had one of those incidents at every job, not necessarily every year but frequent enough that they're not all memorable.
My worst experience was when I was on a cross-country train writing code for a project whose database was mysql. No internet, intentionally. Something happened with one of my inserts (can't remember what exactly) and I had to restart mysqld. Problem was, with the bad insert, mysqld took longer than 30s to start, which forced systemd to restart it because of a default, undocumented setting to restart a service if it's not up after 30s. Again. And again. And again. Nothing in the documentation hinted that this was a feature of systemd anywhere, and I was stuck troubleshooting that nonsense instead of just writing code.
Systemd is just filled with undocumented crap and features that shouldn't exist by default, leading to headache after headache after headache. Such a pain in the ass.
• Android programming. Tried it once, wasted many days trying to make sure the app works on all phone models ranging from $10 to $1000. There were some hardware-related parts that are poorly standardized and abused by the manufacturers a lot. And yeah, the $10-$1000 range coverage is a bit too much for such a poorly designed platform.
• Inkscape: if you are a perfectionist who regularly checks the SVG sources generated by Inkscape, then... you may develop insomnia. The bloody thing will stuff the file with garbage by some 90%, and will get all your coordinates un-rouned to some unreasonably distorted numbers. No, it's not the "floating point thing", it's worse. A few times I ened up writing up the SVG file by hand from scratch, while checking it in the browser. Inkscape is outrageously bad.
Compilation of deep learning libraries from source on Windows -- don't do it.
Tikz -- LaTeX drawing "language". The images produced can be stuninngly beatiful, but the manual has 1200+ pages and it takes forever to become productive. If only journals accepted hand-drawn images...
To be clear, this isn’t a failing of the software per se. PowerPoint is powerful and lets you do a lot of stuff, but I took desktop publishing lessons in high school, and I’m a bit obsessive to start with. I just have to have everything lined up and evenly spaced and just so. Which PowerPoint lets you do easily enough, but then you need to add another box to your diagram... and resize and reposition everything more or less manually.
Similar story for Word, which almost lets you do professional(ish) documents once you know where all the typesetting options are hidden. I’ve given up on Word for technical documents and now use Markdown + pandoc to convert to Latex and then pdf.
At work: saltstack - a machine provision framework that's trying hard to sound cute (pillar? grain? what the hell are they?) while making you write jinja templates which generate a yaml file while calling arbitrary python functions in a remote server, which is then sent to another remote server to be transformed into a sequence of commands in arbitrary order. Good luck debugging anything.
Mostly because it makes you think you can do anything, and you can. It's a rope to hang yourself with.
While Excel is a great prototyping tool, it's really not great for production use. I've seen so many financial calculations attempted on Excel that ended up creating a huge ball of spaghetti, references going all over, VBA code mixed in with DLLs, VLOOKUPS all over, sometimes $A$1 sometimes A$1 (copying behaviour), huge Rube Goldberg contraptions.
And people love it, they often don't think about maintainability or ease of understanding for newcomers.
Webpack - I ain't no frontend dev, coming back to it episodically to discover that FooBarPlugin is now BarBazPlugin, moved from alice: setting to bob:, XxxPlugin just stopped working at all and unsupported (after like 9 months), and ZzzPlugin now nukes the entire dist/ dir as a side effect.
XPS 15 9570 fans, they're controlled by BIOS and start at 45C specifically to annoy people to no end. So under Linux, after much googling, you need to build the dell-bios-fan-control utility which sometimes works, sometimes doesn't, in shamanic ways. E.g. running lspci resets fans and they spin up again. Load kvm modules, spin up again. I've spent probably way more than 100 hours to make the laptop quiet.
Some of its many random crimes againt humanity:
* Delete irrecoverably obliterates a file from history.
* The function that you should use instead of delete is almost impossible to find.
* If you do use that function, it is so buggy it causes corruption in your database, effectively obliterating the whole project.
* Acces rights management is insane. Never seen anything like it. It took 20 minutes of calculating effects from interfering rules to give someone access to a file without removing some other random person's access rights.
* Gui looks like the win31 era, and is so bad people prefer to manually update the database. Which was more trustworthy anyway.
* Multiple tree structures representing data blobs. Only one represents files. It is possible for the later part of a checkout to accidentally overwrite the early part.
* I've witnessed a team spending 6 months merging 2 weeks of development. 100 hours doesnt come close to the time wasted.
* Storage is an oracle db for metadata, and a file system for data. No deltas, changing 1 byte in a 1gb file writes out the whole gb.
* Commits over multiple files are not atomic, but the gui tries to pretend otherwise.
Now the weird thing was, it was so bad, management did not actually believe a product could be this big of a waste. Even when multiple developers gave it as a reason for leaving the company, they were brandished as whiners and no attempt to even validate the truth of the statement was made. Software stockholm syndrome is actually a thing.
At some point they redesigned the UI and it's been a horrible experience since. It hasn't wasted 100 hours, but it certainly feels like it: - It takes multiple tries to delete files or select them as read. If you select the options to mark as read, or delete a message. For some reason it 'forgets' that I've done this when I exit the browser, and so I usually have to perform this operation at least twice. - There's some sort of annoying animation that pops up when the inbox loads. Why?
C++ compiler (or even better: linker) errors. They are just not meant to be read by humans, lacking any pointers on what's really the issue.
Fman Build System (fbs) helps quite a bit, I've found, but there are still more often than not some really annoying rough edges (not to mention that Windows' file access performance is abysmal, so startup times for a PyQt5 app are anywhere from multiple seconds to a full minute on Windows v. instantaneous on Linux).
I've been looking into .NET Core w/ Avalonia as a potential replacement, both because it's easier to cross-compile and because hopefully being more designed-for-Windows will make it less of a royal pain in the ass. Not being subject to the GNU GPL is a nice bonus (for internal stuff this ain't much of a problem, but I generally prefer my FOSS projects to be as compatible with as many other FOSS projects as possible; I'd rather proprietary software be able to "steal" my work than prevent non-GPL FOSS projects from being able to incorporate it).
This abomination has the ability to put more than decent computer into a miserable slug. I cannot imagine how much my client would have saved in productivity from all its employees and contractors if that thing was uninstalled.
I've built a lot of useful software but there have been years where I've worked on projects that nobody ever used or will use. Half the time the cause is the dysfunctional organization that I'm working for, that doesn't understand their responsibility or won't listen to good advice.
The other portion of the time it's a side project that I never finished.
When I had to work with it on a semi-regular basis I kept this list of WTFs that I'd add to each time I finished tearing my hair out trying to fix some seemingly simple thing https://github.com/bourbonspecial/AccessFail/blob/master/why...
3: Windows/Symantec Defrag (pre-Vista era) When I had 10-40GB hdds it used to be mesmerising watching the blocks fly around the screen. Eventually I find something else to do and pretend the computer's broken.
2: Macromedia/Adobe Flash. Sometimes animations just didn't want to work. Tweens are notoriously random with complex drawings. Delete and start all over again.
1: Editing HTML after using a WYSIWYG editor. Code clean-up. It takes ages.
worst: confluence, bottom: desktop office suites, still bad: google docs
Microsoft Teams: Same as above, but with multiple login prompts each time.
Jira/Confluence: I swear every click/hover requires a network roundtrip to the server because that's the only way it can be so sluggish. Also, 30s loading times.
Webpack/Babel/Parcel/WhateverJS: Either kill me or kill IE so I can stop using these tools to get even a moderately modern stack.
It took me two weeks of troubleshooting, cross-compiling binaries and reverse engineering the source code, until I figured out that I wasn't doing anything wrong - Synology had actually changed their version of sshd to add all sorts of proprietary crap [2].
Another one was the "Mouse battery low" alerts on Gnome under Ubuntu [3]. The root cause was in upowerd, but Gnome developers could have applied more sane defaults (e.g., no need to show the same alert several times per day, and even worse considering they don't go away unless you click to dismiss). Certainly not 100 hours, but much more time than I'd like.
[1] https://serverfault.com/questions/458553/cant-log-in-via-ssh...
[2] https://wrgms.com/reverse-engineering-synology-openssh/
[3] https://wrgms.com/disable-mouse-battery-low-spam-notificatio...
I wasted a lot more than 100 hours coding workarounds for its numerous CSS bugs. Probably millions of hours wasted world-wide. I hate Microsoft for the way they screwed web developers.
In the distant past, Solaris 9 for x86 on a laptop. I was younger (and dumber) then. Took much longer than 100 hrs and aged me beyond death.
jira, microsoft exchange, horribly sceumorphic PDF, anything with DRM
In practice on the other hand, I found the integration a complete nightmare, and everything was very prone to breaking for random reasons, making it either impossible to login or so the data wasn't pulled in properly etc.
And it's been a similar story with quite a few other software bridges/integrations. So much so in fact, that I realised it's almost always more practical to either find a solution that does both A and B at the same time, or to just build something yourself with the features needed rather than spend hours debugging an integration between two separate programs.
Edit: Oh, and Adobe Target. Even for an A/B testing tool this thing is frustrating as hell to use, and has a ton of design decisions that make no sense at all. For instance, you can't track clicks on an element by class/ID if the class/ID doesn't exist on that page at the time you use the editor, meaning you can't track clicks on an element that exists on some of the pages you want to test but not others, or all items in a list/feed. You also can't easily run the same test on multiple different pages with different URLs, so you have to 'add a page' in the editor for each URL pattern and copy the code over to it again.
- Jira this splits up in 3 categories - because of project member think they need a complicated workflow, mostly in conjunction with time tracking - installation - integrating with other applications
I disabled it recently after it got into an incomprehensible endless CPU loop. It's suddenly like having a new computer - it boots faster, I can switch tabs without grinding, just everything is faster.
I can't think how much time it must have cost me - on every interaction in years.
Then they bought Marketing Cloud, again terrible. Its supposed to be point and click enough that non technical users can use it, but its too complicated for them and absolutely terrible as it took 7 clicks to the edit page any HTML email.
These two things make my current platform and all it's technical debt seem like an absolute dream.
1. Documentation. A chat provider and a serverless framework where the documentation or the typescript definitions weren't kept up to date with the code. Having to check types and their REST API and 'suck it and see' to actually find out how it works. If you want contributors, your OSS project should have working demos. If you want customers, the same.
2. Unnecessary complexity. I think there's going to be a major change in the front end world in the next few years as people realise they can already achieve reactive data binding without the complexity of popular frameworks.
OTOH, I used New Relic with PHP website 6..8 years ago, and it was awesome in everything, except the price.
I guess it all depends on the context.
It just isn't good. I tried it way back and most of the time it turned into a struggle that wasted hours.
I recently went back to it, thinking that it should be good now; it isn't.
My typical environment for a site is supervisor + nginx. Nothing crazy, super simple.
For whatever reason, the heroku instance refused to take in my config (set with `heroku config` and it was showing up in the Heroku console... but my service was like "nope, not there". The keys existed on process.env but were empty).
After about an hour I said "whatever" and stood it up on nginx + supervisor in 15 minutes.
"There is more than one way to do it" is such a boneheaded idea when you have to work with other people on the same codebase.
- Quake 3 Arena
Chef: at one point, we had Chef Consultants come to help us with our monstrosity. They said that we had something more complex and full featured than anything they had ever seen and declined helping. I've lost weeks and weeks to fighting against what we eventually grew.
Sysdig: personally, I lost maybe a few hours. As an org, we lost hundreds on people trying to get it to work similar to Grafana. Sysdig, at the time, did not support math operations. How this got passed on down to engineering is a different story, but when you can't compute derivatives on counters, you can't make decisions based on rates of change, something we require.
Twisted Python: Factories with mixins where a variable you are trying to discover where it came from turns out to be a parent class's parent class's mixin's parent class's mixin's parent class. True story. Dealing with cases where someone raised an exception somewhere in the code years ago, but now the section you are working in, you realize you cannot use Deferrals because Twisted uses exceptions as control flow, and now the exceptions at some other part of the code trigger ErrBack code somewhere else. As for the python part itself, not knowing the actual type for the variable incoming on a function is a pain. String? Int? Slice? Who knows! Add some print statements or read a bunch of code to find out. Honorable mention to time lost on SQL Alchemy. I can write SQL no problem. Every time I have to do something in SQL Alchemy, I start with SQL which is done in 30 seconds, then I spend the next hour going over documentation and experiments to get the query to build via SQL Alchemy.
AnyEvent Perl: 40 functions deep and not having a method signature. Yeah, time to read through hundreds of lines of code with branches that could send any number of parameters down to your function that you are looking at, or put print statements to know _what_ has been stuffed into your parameter list. Large systems benefit so much from strict typing. 40 functions deep and you know _exactly_ what is coming into your function and what it should return.
Go Modules. I've probably not hit the 100 hours yet, but I'd not be surprised to be in the 20 hour range. The module system was rolled out shoddily in my opinion. We went from things Just Work(tm) to multiple environment variables and language servers and editor issues. All I want is "is a vendor dir there? Use it. Else, use GoPath." Can't have that though. With private repos, proxies, vendor directories, environment variables, and varying levels of support from editors, it is just a mess. With Go 1.14, modules are getting better, but I'm still fighting the proxy servers in combination of vendor directory and private repos. I _love_ Go. I hope it goes back to sanity.
Every single time I have to upgrade react-native, I have no problems with the code base,
but with these horrible 'put a js config file here', put 'node_modules' there, set environment variable this way -- kind of tools.
This is approximately equivalent in frustration, trying to build a Linux-kernel with a new network-interface driver in early 90s.
..may be even worth than that.
This list is not exhaustive. You can help by expanding it.
redux sagas
2fa in general
those fucking cookie banners that no one gives a shit about
recaptcha
webpack
Minecraft