Self-service sounds great until you try to build it. Developers should be able to spin up environments, deploy their apps, and check logs without bothering anyone else. The problem? Most self-service tools are actually harder to use than just asking someone for help.
Your platform engineering solutions need to be genuinely easier than the alternatives. That means you need documentation that shows actual examples rather than theory. Your tools should fit into how developers already work, rather than forcing them to learn completely new workflows. When something goes wrong, the error message should explain the problem and suggest fixes.
Take deployment as an example. For a basic app, a developer should only need to provide their repository URL and maybe pick a name. That´s it. If they want to get fancy with custom health checks or resource limits, sure—but don´t make everyone configure those things just to get started.
The biggest mistake? Building what you think developers need without checking if that´s what they actually need. I´ve seen platform teams spend months on features nobody uses because they never bothered to ask. Shadow your users. Watch them work. Ask what problem they´re trying to solve instead of what features they want.