Some examples, in no particular order.

Hampering the productivity:

- Review messages get sent out before review is actually finished. It should be sent out only once the reviewer has finished the work.

- Code reviews are implemented in a terrible way compared to GitHub or GitLab.

- Re-requesting a review once you did implemented proposed changes? Takes a single click on GitHub, but can not be done in Azure DevOps. I need to e.g. send a Slack message to the reviewer or remove and re-add them as reviewer.

- Knowing to what line of code a reviewer was giving feedback to? Not possible after the PR got updated, because the feedback of the reviewer sticks to the original line number, which might now contain something entirely different.

- Reviewing the commit messages in a PR takes way too many clicks. This causes people to not review the commit messages, letting bad commit messages pass and thus making it harder for future developers trying to figure out why something got implemented the way it did. Examples:

- Too many clicks to review a commit message: PR -> Commits -> Commit -> Details

- Comments on a specific commit does not shown in the commits PR

- Unreliable servers. E.g. "remote: TF401035: The object '<snip>' does not exist.\nfatal: the remote end hung up unexpectedly" happens too often on git fetch. Usually works on a 2nd try.

- Interprets IPv6 addresses in commit messages as emoji. E.g. fc00::6:100:0:0 becomes fc00::60:0.

- Can not cancel a stage before it actually has started (Wasting time, cycles)

- Terrible diffs (can not give a public example)

- Network issues. E.g. checkouts that should take a few seconds take 15+ minutes (can not give a public example)

- Step "checkout": Changes working folder for following steps (shitty docs, shitty behaviour)

- The documentation reads as if their creators get paid by the number of words, but not for actually being useful. Whereas GitHub for example has actually useful documentation.

- PR are always "Show everything", instead of "Active comments" (what I want). Resets itself on every reload.

- Tabs are hardcoded (?) to be displayed as 4 chars - but we want 8 (Zephyr)

- Re-running a pipeline run (manually) does not retain the resources selected in the last run

Security:

- DevOps does not support modern SSH keys, one has to use RSA keys (https://developercommunity.visualstudio.com/t/support-non-rs...). It took them multiple years to allow RSA keys which are not deprecated by OpenSSH due to security concerns (https://devblogs.microsoft.com/devops/ssh-rsa-deprecation/), yet no support for modern algos. This also rules out the usage of hardware tokens, e.g. YubiKeys.

Azure DevOps is dying. Thus, things will not get better:

- New, useful features get implemented by Microsoft for GitHub, but not for DevOps. E.g. https://devblogs.microsoft.com/devops/static-web-app-pr-work...

- "Nearly everyone who works on AzDevOps today became a GitHub employee last year or was hired directly by GitHub since then." (Reddit, https://www.reddit.com/r/azuredevops/comments/nvyuvp/comment...)

- Looking at Azure DevOps Released Features (https://learn.microsoft.com/en-us/azure/devops/release-notes...) it is quite obvious how much things have slowed down since e.g. 2019.

Lastly - their support is ridiculously bad.