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:
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….
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:
- Update the branding in the dev dashboard
- Create a quick test Slack account
- Create some dummy Slack and App users so the team can demo it
- Explain to Slack that no code has changed, it’s just a logo update - give them the creds to test
- Slack test it, agree it’s all good. Thing goes live.
Contrast that with Teams:
- Update the branding in..
- MS Bot Framework (specific image requirements)
- MS Partner Center (different, slightly more specific image requirements)
- Teams Dev Console (slightly different specific image requirements)
- Don’t forget to log into each one of them separately despite checking remember me on each one
- Update your app assets in the manifest in Dev Console.
- Create a test teams account….
- Oh they have a dev sandbox for creating a test tenant, great.
- Not eligible for a sandbox account…Back to square one.
- Create a free Azure AD Tenant. Don’t forget to add card details for when your trial ends!
- Create a free O365 test account (also add card details)
- Link the two, being careful not to mix them into your existing Microsoft rats nest of personal and business accounts
- Test your teams app with that account
- Submit that to teams
- Get rejected because they can’t test it on their test tenant, despite you giving them instructions to use the test one you’ve provided.
- Oh they have a dev sandbox for creating a test tenant, great.
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.