MS Teams Rant
I originally wrote this on 2021-03-11. I have kept this up-to-date with my various gripes and frustrations (and even the few things that have been fixed) as I come across them.
I have used instant messaging programs essentially since the world wide web began. I have used IRC, ICQ, XMPP (various clients), Pidgin (for access to various protocols), Slack, Discord, Telegram, Matrix, and many others. I think I have a wealth of professional (and hobby) experience with chat protocols and clients to know when one isn't all that good. And while I am admittedly pretty biased against all things Microsoft, in my professional and personal opinion, Microsoft Teams sucks!
I say this a lot, and people ask me "what about it sucks" and I say something vague like "damn near everything". While that is being a little obtuse, there is a great deal about it I don't like and I'm going to try to outline each of them in this post. Of course some of it is just personal preference, and I will try to call out things that are just me being picky about it not working the way I want. So grab a comfy chair and a snack, this could take a while.
Most of what follows is a comparison between MS Teams and Slack, because Slack is the tool that I am most familiar with, the one I feel has some of the best interaction, and the one that people (Discord for example) seem to copy the most :).
I have been adding and editing these annoyances as things change, so this rant is kept up-to-date.
I am on Linux (specifically Fedora
33 34) for my desktop chat, and an iPhone8 (running ios 14 15) for mobile. I have never used the Windows client, though I believe the app is based on electron, which should mean the experience is pretty universal; However, there are features that are just missing from the Linux version. I am not going to highlight that specifically, because it is mostly pointless things like the background blur, background images or the really weird thing where everyone shows up in a virtual auditorium. And also, except for the few things that others have mentioned, or that I can see because of remote settings, I would have no idea what else I'm missing :)
What doesn't suck about it?
First of all, at its core I can instant message people, they get a notification (probably) and can respond. It shows presence (kind of) so they know when I'm available and whether or not to expect a reply rapidly. There is heavy integration with other MS services, which personally I feel just junks up the app and makes it more bloated for a bunch of features that are not core to messaging. That is a personal opinion though, and others would certainly disagree. One thing that integration gets is calendar awareness. You can view your calendar (complete with [Join] buttons for meetings associated with teams) and it will show time as "busy" when aa meeting is scheduled.
The video/voice/screensharing portion is not too bad, and is pretty much on-par with everyone else (Zoom, BigBlueButton, Jitsi, etc.) in the space. Nothing in particular stands out as a specific Teams thing that sucks here, they just all kind of have the same basic level of less-than-optimal-awkwardness, but overall not too bad. Since I am using the free version of Slack, I don't have video conferencing/voice chat capability at all to compare it to directly in Slack.
Microsoft is often known for "bloat", and things just taking up resources more than they should. Teams is no different. It is nearly double the resources of slack on my desktop and mobile.
The install size of Teams on my computer is 271MB. It's not huge, BUT it is nearly 1/3 bigger than either Slack (which is 184MB) or Discord (which is 167MB). Both of which are doing pretty much the same thing and all are based on Electron.
On my phone, the app itself is 212.5MB for Teams and 136.7MB for Slack. When "Documents & Data" space is factored in, which is basically the cache, Teams takes up
587.8MB ~1GB! Slack is only 148MB and provides a method for "resetting" the cache, which Teams does not have an option. I use Slack far more often than Teams. I don't know if Slack is doing some management on it's own or what, but Teams is clearly just letting cache build forever. The only way to get rid of that wasted space is to delete and reinstall the app. This is a common issue with apps on iOS, and not unique to Teams. There are also apps that deal with this appropriately where Teams falls into the former group.
Update 2021-08-03: The teams app on my phone, which I barely even use is now taking up 1.06GB of storage from it's 220(ish)MB install size. At some point they added a "Data and storage" section in settings with links to "Clear downloaded files" and "Clear app storage". Clicking them displays a very quick "Done!" message but the size reported in settings for the app is never altered. I removed the app and reinstalled it again and got it back down to 230MB, but it will keep growing.
Currently, my Teams application is taking 521MB of RAM. This is resident memory. Compared to my current Slack utilization which is at 258MB. So as usual, pretty much double the usage. The CPU and Memory utilization shoot up considerably when on a video call. I get that video encoding/decoding takes more CPU, its just that it uses WAY more resources than anything else in the same space. When I am in a meeting, glances reports that teams is using between 120%-140% CPU.
The general layout it is "OK". The tool bar on the left has things like "Activity", "Chat", "Teams", "Assignments", "Calendar", "Calls", and "Files".
Things get weird when comparing "chat" and "teams" for example. They look the same, but Teams (The messaging space, not the app) is NOT a chat. The messages on what looks like a team chat are actually called "posts", and they behave differently. They are threaded (which I don't personally care for, but some people like it), and it annoyingly does not show a whole post if it is too big forcing the user to click a more button to actually read the full post.
Throughout the interface, so many mouse interactions are required. One of the things Slack, in particular, does really well is to have keyboard commands for nearly everything. This is important in a chat app, because chatting requires your hands to be on the keyboard. If you are constantly changing contexts between mouse and keyboard, it slows down the overall action and it just becomes more cumbersome to work with it.
This is nitpicky and stupid, I admit that right up front. Almost every chat application these days have a typing notification that is generally some variation of three dots in some kind of motion. They normally follow some progression like the fading in and out of dots of imessage
or an imessage-like bubble with bouncing dots
or perhaps just bouncing dots:
And then there's teams:
Just as a general UI/UX thing, I find the seemingly-random squishing of the dots annoying and I really wish it was just "normal" and followed a progression. Maybe it's supposed to simulate the sort-of random-looking hitting of keys on a keyboard. I have no idea, but nearly every wait notification follows some predictable pattern, and these just look random. Each dot is squishing at it's own speed unrelated to the others. As I said, this is just a nitpicky, stupid thing that has no real bearing on the app. In the general look&feel of the app, this doesn't help it in my opinion.
In all of the chat cases (teams' technically not chat...and the chat) the actual chat content takes up a ridiculously small portion of the screen. Just looking at the horizontal measurement (so it's actually a little less), the chat on a 1920px wide screen starts at 740 and ends at about 1540 leaving 800 px wide of actual chat. On a 1920px wide screen, that means 60% of the screen is taken up by things that aren't chat. A full 30% is just completely wasted, empty space. For a chatting app, it sure doesn't prioritize space for the actual chat.
This is a personal preference thing, but chats are displayed in a messages style interaction, where other people's chats are left justified and my chats are right justified. It also highlights mine in blue. Again, it's a personal preference but I would rather it be more IRC style with all of them aligned the same way. I don't mind there being different colors, it just seems pointless to me to justify them that way. Ultimately this is probably the exact reason that 60% of the chat screen is wasted. If the full screen is used, and right/left justified the messages your eyes would have to track a lot of pixels to follow a conversation. There are no settings to change this behavior, and no way to override it with a theme change.
Using the same horizontal metric, Slack utilizes 85% of the screen for chat, only missing 280px on the left for the channel listing and leaving 1640px for the chat content. You can also drag the border to resize the channel area in Slack. Apart from the minimal amount of space around objects, there is no completely wasted space in the slack interface.
In Slack, you also have some additional settings to tweak the layout to make the most use of the already-ample space used. These include how to display names, and a "Compact" or "Clean" message style. There is no way to customize the message style in Teams.
Teams - The channel type, not the app
I keep specifying "Teams, the channel not the app" to note that I am specifically talking about one particular area of the Teams app. This is another kind of general pet peeve of mine with Microsoft: the naming of things often causes confusion in itself. They choose kind of generic names (word, teams, access) and without specifically calling things out is can be confusing if I am talking about "a word" or "word, the microsoft word processing app". Same goes for "Teams the application" vs. "Teams the channel".
Tangled Threads (2021-07-30)
As mentioned briefly in the UI/UX section, Chats in a Team are not chats, but "Posts" and they behave differently than a chat. They are threaded, in that each post can have replies tied to it. Each Thread shows up as what looks like a chat, but with an "X number of replies from..." link at the bottom. You have to click that link to show the threads.
If there are a lot of "posts" in the thread, you will additionally have to click a "See previous replies" because teams will show the most recent ones. If you are active in multiple threads it gets even worse since you have to jump back and forth (potentially collapsing and expanding the posts). It is extremely cumbersome, and is a very awkward interface. There is just so much clicking and scrolling to piece together the messages in a "post".
(Updated 2021-08-11) The more I use Teams channels, the more I hate every single interaction with them. The "threading" is absolutely brain dead. There is basically no indication that a thread has new information (except for the 'x replies from...' incrementing the 'x') until someone realizes that I haven't respond and they @mention me. Then only that @mention text displays uncollapsed, out of order of the rest of the thread. You have to expand the thread to see why you were @mentioned, and that tiny-ass little 'x replies from...' is not obvious. Then most of the time I have to click through a couple "show more" links to see the part where it matters.
In general, I am not a fan of threaded discussions. I understand the logic in having them. In public spaces, it does make sense that there are multiple conversations and threading logically makes sense. I haven't seen a threaded conversation interface in a chat that makes it very pleasant though. Slack doesn't do too bad, a thread is broken up in a frame to the right of the chat. This is decent, but only handles one thread. I think this is a better start, but still not ideal. I have never seen a worse, more convoluted, click-driven interface than that of teams threading though.
If you happen to like threads in your conversations, you only get them in teams channels. Group chat and individual chats do not offer threading. Slack, on the other hand, supports threads in all conversation types.
Teams/Thread notifciations (2021-08-12)
As if threads weren't already painful enough to deal with, the notifications are equally stupid. When someone responds to a post, there is just a generic "<username> has responded to a conversation you are in" message. Then it is up to you to click through "activity" and hunt it down through the shitty list of posts. And probably have to click a "x replies from..." and "show more" links for good measure.
Referencing documents in team chat
Ok, so you have all these things you can embed in a team. If you actually want to collaborate with them from the chat and the embedded things, it's essentially impossible. Even though the embedded things are called "tabs" they do not work as tabs where the content persists between switching. So if I am in the team chat working on a OneNote embedded in a tab, each time I click on that OneNote it is basically like the first time I clicked on it and it will take at least 5 seconds to load the page. It does at least remember where you were, but it takes so long to switch back and forth that it really isn't a good way to interact with it. It is be better to just open the OneNote somewhere else and swap back and forth between teams and OneNote in your browser.
Because of the "sharepointiness" of teams, it is incredibly easy to create a team space to collaborate on things. While this sounds postive, in practice what ends up happening is that you are a member of hundreds of teams with little snippets of chats spread out amongst dozens of groupings. This is not exactly a problem with teams itself, but more how the organization uses it. However, it does make the overall experience worse because it just highlights all the other problems (like adding even more locations a file could be shared for example)
Notifications kind of just show up when they want. It is not uncommon (though not something that happens all the time) that notifications are delayed by HOURS. It is also not uncommon to get duplicate notifications for the same event. I thought that it was just some oddity with the Linux client. My windows-using colleagues have reported the same issues.
The "Activity" section also seems to get populated no matter what. If I am in a meeting, and someone references me with an @user, I will get that notification in Activity, even though I am actively in the chat in which they @'ed me. This is certainly a minor annoyance, but now I have to go to Activity to clear out that notification too.
There is an embedded emoji picker, which doesn't have a lot of "standard" emoji. For example, if I want to say "Teams is 💩" , I have to use the system emoji keyboard because teams doesn't include the :poop: emoji. Does this really matter? No, of course not; however, it is really annoying when something is half-implemented and you are coming from Slack which has all of those. And while we are on the topic of emoji, the emoji shortcuts are triggered by wrapping things in parentheses, which means you can get false positives. In Slack, shortcuts are wrapped in colons. That technically could still artificially trigger, but it's less common than with ()'s.
In Slack, you can also customize emoji by uploading an image and picking a :shortcut:.
UPDATE (2021-07-21): I don't know when it changed, but (poop) works and shows up in the emoji-picker. It also like dances around and jiggles like a bowl of jello 🤮. So it looks like this one may have been addressed at some point and I Missed it.
UPDATE (2021-09-09): Another thing I noticed in comparing slack and Teams emoji use is that teams does no type-ahead searching. In slack if I type :shrug, it will offer up all the names that match. So if I never remember that the shortcut is :man-shrugging: that I am looking for, it doesn't matter, I can still quickly get to that emoji. This works even for custom emoji that are added.
Teams does not autocomplete/search emoji. If you click through the emoji picker, it will show you that the same emoji has a (manshrug) shortcut. But now I've gone through a bunch of mouse interactions to get to that point and I still have to remember that.
It's a little bit unfair to compare the giphy integrations between Slack and Teams because Slack doesn't actually do it natively, it relies on a bot to be installed. On Teams, the gif previews are comparatively like looking at a postage stamp on the surface of Earth from the upper atmosphere. At the point I get to the images, I'm already agitated that I have to take my hands off the keyboard to move to the mouse, then have to hunt down the "gif" button. I click it and am presented with tiny grid of pictures that I can often not see the text included because they are so small. Using animated gifs in chat is supposed to be fun, and for me the interaction in Teams is just a bit more cumbersome.
Also of annoyance, the images only show some small portion of the loop. So I could do a search for "why", see the Spongebob image and think "that'll do". When I actually send it, I notice that it only showed me the first second of the animation and the rest of it was "don't you go fuck yourself". Ok...that specific example never happened, BUT the fact that I don't actually see the whole animation until I pick it does lend itself to some misunderstandings if there are further frames that don't make sense in the context of the conversation.
While we are on the topic of loops, Teams decides it is best that it only loop a gif 10 times, and then it presents a play button for you to view it again. Why? Animated gifs typically don't have any media controls. Of course that also means if I am in another window it is now up to me to hit the play button to see the animated gif someone posted to the chat. This is probably another area that is ripe for a setting to configure how someone wants to interact with gifs. Personally, I am of the opinion that an animated gif should just keep looping until it scrolls of the screen and I can no longer see it.
The steps required to pick the first image in Teams is something like 'Take hand off keyboard -> Move mouse to gif button -> Click gif button -> type search term -> find tiny image that looks like it might work -> Click image'. Now I'm at a message with an image in it, I still haven't sent anything. Now is the point where I will see something inappropriate with the image and have to start the process over again. Compared to Slack which is 'type /giphy search term -> tab/shift tab + space/enter to shuffle or send (optionally Take hand of keyboard -> use the mouse to hit send or shuffle buttons)'.
In slack, when you paste a URL, it will intelligently generate a preview. Which means when you paste a link to an image, it will expand to show the image.
In Teams, the experience is...well...different. It shows the image, but it has a giant window obscuring the image with the URL of the image which you can already plainly see in the text portion of the message. To add to the pointlessness, the URL in that overlay is truncated. So what was the point? I can't see the image preview OR the URL. The whole thing makes it completely useless.
The second image gets worse the more you look at it. Notice that not only did it overlay the completely pointless URL over top of the image, it cropped the image horizontally also. The first pane you see in the comic in the Teams preview is the second panel in the comic. It chopped the preview and then stuck a useless URL (since it is already displayed, in its entirety, in the text) over the preview making the preview completely useless.
Also, if you think "Well can't you just click that [X] to make the stupid overlay go away?". No. That removes the preview altogether. Which technically might be an improvement compared to this abomination of a preview.
It also seems to be pretty random when it displays this totally broken-ass preview. Most of the time when I paste a link to an image, it just stays a link and never gets a preview. Which, as mentioned, is probably an improvement over this shit show.
This should really be called "Interactions or mentions since the last time I was annoyed by it and cleaned them out", because that's what it is. There is no way to control the list, so any time you get an update for any chat you are in, any time someone @mentions you, or you miss a call, all of that goes in this list. You can manually "hide" them but you have to personally cull them.
EDIT: It seems since my initial complaint on this the behavior has changed. You now no longer can clear the notifications. All you can do is Mark them read/unread. It appears that it now shows a rotating list of things up to a month old. I'm OK with this. I would still kind of rather there be a control that I could set it to a week if I chose, but not having to manually manage it is definitely an improvement.
File sharing in Teams is quite frustrating. That is because there are many locations that a file could be shared. You can attach it to a team space, a group chat, an individual chat, or a meeting. The "Files" button in the left-hand navigation takes you to files you most recently opened, but there is no list of files that were recently shared to you. So if you forgot that you were in a meeting when your colleague shared that file (and didn't share it to you directly) it is actually pretty difficult to find it.
If you opened a file, it will at least show up in recents, but if someone shared a file in a meeting for you to review later, it is a scavenger hunt to figure out where it was left.
I know Windows people who have told me this isn't a problem for them, so perhaps this is just a Linux thing (or maybe even specifically a me thing). In my case, my desktop Teams instance is always the preferred presence. What I mean is, if I have Teams running on my desktop, I will not get notifications to my phone when new notifications come in. They will wait until I get back to my computer and (maybe) see them.
(Update 2021-08-11) Something changed here that has made it even worse. It is notifying me everywhere. That means when I am actively typing in a chat and getting new notifications, my chat client and also my watch are presenting notifications. I now miss the days where it only went to my desktop because this is extremely annoying.
I have integrated exactly two external services with Teams and it was a gigantic pain in the ass to set that up. The way authentication and API access is handled in general involves so many more hoops to jump through. Take a look at any bot-type thing that offers both Teams integration and Slack integration. Look at the details for what it takes to install the same thing between the two platforms. The Slack side will be something like "Add the app to your workspace, allow it to post in your channel, done". On the teams side you have many more steps to get it to install in the first place.
As an example, check out the documentation for Mio.
To install Mio on Slack, it's essentially one click and then you get '/mio' commands to interact with it
For Mio on Teams, There are a lot more steps. That isn't even including the amorphous "onboarding process" that isn't covered in that document.
Webhook annoyance (2021-07-21)
As mentioned above, I have a service integrated with a webhook to a channel in a team. I never use it because it is far easier to get that information from Matrix or Slack, Teams is more inconvenient for me. I was going through cleaning out old notifications, and I see this "connection expired" warning instead of notifications from my integration.
So I follow the navigation referenced in the text, and eventually see:
And I click on [manage] and get:
On this page, the "copy URL" button just turns into the "🚫" cursor. If I try to use the "Update URL" button, it doesn't appear to do anything. And then if I click save, I get a "something went wrong :(" message. All completely useless.
I had to delete the webhook, generate a new one, and then change anywhere the old URL referenced to the new one. It looks like they initially (stupidly) had everyone in a global outlook.office365.com/webook URL scheme, and they changed it to "<yourtenantid>.webhook.office.com/webhook2". Overall that is probably a better URL scheme, but obviously changing the endpoints is annoying for anyone who has to change their configurations everywhere because they figured out too late that their original scheme didn't scale well. Luckily I only had 2 configured.
Teams is a proprietary chat platform (technically-speaking so is Slack). As such, if you don't want to use their client, you are stuck. There are no choices. You either use their client or you don't chat on their platform. Open protocols (like IRC, XMPP, or Matrix) are better in this respect. If you don't like some crappy thing the client does, just use another client. That's not the case with Teams.
Using Matrix and looking into bridging options, I discovered very quickly that there is an integration for most any other chat platform. Just look at the list of bridges available. Even proprietary crap-fests like Facebook have a bridge, but there is nothing for Teams. This doesn't necessarily mean that it is just too proprietary and can't be integrated with another client. It could just mean there hasn't been enough interest for someone to spend the time on it. After all, Mio, referenced above, did get their Universal chat integrated with Teams, so on some level it's potentially possible.
This section isn't specifically a hard fault of Teams. And certainly "Does it have a matrix bridge" is not really a valid metric to determine the worthiness of a chat platform. I do think it reflects on the overall workability of the platform though. This is just based on personal experience with integrating a bot with Teams and extrapolating that experience to the assumption that is why there aren't more integration options with Teams.
First of all, I am happy that there is an actual RPM package, and not an .appImage. While appImages are easy to make a cross-platform package, I definitely appreciate having a native .rpm file that is updatable via my system package manager. Since there are web assets embedded in the Electron app, there are updates that happen outside of the package manager. It is never clear what changes have been applied, and there is no changelog to reference (at least not within the app). Occasionally I see this ambiguous "You've got the latest updates. Enjoy", with no clue as to what changed. Going through the app to the "Check updates" menu tells me to get updates through my system package manager.
Video chat issues (2021-07-30)
I have modified this document many times since I initially wrote it. I have shied away from complaining about the video chat because every single video chat software I have used has been slightly-less-than-optimal. Using Teams more while working from home, there are some things that I just have to get off my chest now.
IOS App-Specific issues
Missed Calls Notification
One of the most annoying things on any mobile app is a notification that won't go away. The "missed calls" notification is one that tricks me all the time. The problem is, the "Calls" button is hidden under a "More..." button with nothing on the app screen hinting that there is a notification in an area that isn't visible. You just have to know to check that area and clear out anything in there.
UPDATE (2021-07-21): The IOS version has been updated to include a number badge over the "more" menu. So now you at least get a hint that there are notifications hiding under there.
Reading history in an active chat is impossible
I don't use the IOS app all that often. Recently there was an issue that prevented me from logging in on the desktop and I was on the mobile app. There was an active chat going on, but I had missed the beginning of it. So, I scrolled to the top of the chat to read what I missed. And every time a new message came in, the view jumped all over the place and snapped down to the new message. And I tried to scroll back up, and a new message came in and snapped me back down. This seems like an actual bug, but that is also a very basic chat interaction that should not be that broken in a version 2.x product.
Notifications number by chat
If there is 1 new message in "general" chat, the app notification will show 1. If there is a new message in that chat, the app notification will still say 1. If there are 30 new messages in general, and one in "secret chats", the notification will now show 2, because two chats have updates.
If I have notifications from system monitoring going to a channel, for example, I would prefer to know that 30 things are in an alarm state with my notification badge reflecting that there are 30 new messages to deal with.
I'm honestly a little mixed on this. For the example given, I would prefer to have the individual messages count. Element chat for IOS does the same thing on Matrix. In that case, I am in a bunch of random public chats and don't particularly want to know that there are 300 new messages in #fedora because someone touched a nerve complaining about Silverblue. In that case, I mute notifications for noisy channels that I don't care about the number of messages, I'll get to it when I get to it.
Overall it would just be better if there were a notification badge setting to say "Number of chats or Number of Messages" as the badge.
App store Changelog
'Bug fixes and performance improvements' That's the perpetual update for almost every single update. This is not a problem unique to Teams, but it is frustrating when you go through the effort of clicking through to see what changed to know what to look for, and instead get "some stuff was updated". Gee, thanks.
Slack, on the other hand, always has explicit changes presented in an often comical way that makes it informative and entertaining. I'm not saying everyone has to do it that way, but a little more information would be be nice. What performance was under-performing that was fixed? What bugs were fixed. Some basic info would be nice.
Wow, you made it to the end? Well thanks for reading my rant about MS Teams. Some of this may come off as me just being salty because I'm not a fan of MS stuff, and am just "mad" that I'm being made to use Teams professionally. If I thought teams was actually better, I would like to think I would admit that I was mistaken. Some of the things I've outlined above are admittedly a little nit-picky. One of the biggest things is that it is billed as a chat application. To me, the layout and interaction within a chat demonstrates that it really isn't a chat first app. It is more like a universal entry point to all things office 365 with chat as a basically-functional afterthought.