Gareth made a thing. This is it

Working with Microsoft is hard.

Working with Microsoft is hard

I’m a long time windows user (3.1 was good!) and I’ve been writing code with MS tools since VB6 came out.

I’ve now moved into enterprise world where working with MS APIs and tooling alongside c# is….not as good as it could be.

I’m so frustrated and tired of it, I’m using typing as therapy.

Problem 1: Logging in

Logging into a Microsoft account in 2024 is, for me at least, like a carefully constructed digital reverse escape room. 1) Which account? The first hurdle is this mess: Which account do you want to use? - Microsoft Support

I’ve separated my accounts a few times now, but they always end up conjoined again. My personal account has access to some things, my work account has access to others. Is there a central place I can find out what these things are and move them? No. Is there any clue when you join these up that you’re sure you want to do it? No. You’re in account limbo, your best bet is to have one browser logged into one and another logged into the other, then try both. Every time.

Which would be fine if you could stay logged in…. I have to enter my login credentials every time I go to Office 365 - Microsoft Community

This checkbox and dialog is probably the biggest lie in modern computing. You check it, it comes back the next time you log in, you don’t check it? It still comes back?

Got 2FA? Doesn’t matter, we’re still going to request codes from you 12 times a day, every day…for ever.

Okay fine, logging in is poor, but that’s not all of MS is it?

Yeah this is frustrating, but it’s nothing when you get into the meat of the real problem…. Microsoft APIs

It’s at the point where I actively dread working on anything to do with MS Graph, Teams, Outlook integrations, Authentication or any of the myriad other tools we use.

The dependency chain alone is enough to put me off - sometimes you need to update a library for say…Azure storage accounts, which then means all your other seemingly unrelated libraries also need updating which breaks your whole app so what started as a “Relatively quick update to some MS Storage account Azure code” quickly turns into “Oh I need to also update MS Graph and my Outlook integration”.

This isn’t a one off - I’ve had multiple occasions where just updating a Nuget package for something in Azure has completely broken Graph or OAuth.

Why is it like this?

Also the documentation, it’s an absolute hot mess. Anyone else’s API docs are simple to navigate, give you nice code samples and real world use cases (look at Stripe, Slack, CustomerIO, there’s loads).

Microsoft give you anything from just plain HTTP Requests with no clue what library they refer to, or how to authenticate to so much detail on stuff you don’t even know if that’s the right thing to use.

I appreciate they’re supporting a lot of legacy systems, but isn’t that what API and library versioning is for?

Then there’s Teams

This is the main one for me. We have a relatively simple Slack integration and also a Teams one. We charge extra for the teams one because working with Microsoft is a genuine and real threat to anyone’s sanity

Here’s a recent example.

We rebranded, needed to update the logos on a bunch of integrations.

Slack:

Contrast that with Teams:

This is where I’m currently at. I don’t really know where to go from here and I’ve run out of patience.

Is there anyone in MS dev relations? Do they actually use their own products? Can someone more seasoned explain how this is supposed to work? The documentation is mental and there’s no clarity on exactly how the teams approval process works.

3 weeks now. I just wanted to update a logo.