Back when cloud computing was mostly for early adopters, I used to work on many customer projects at the same time, or in quick succession, in an architect/developer role. It was great as long as the projects worked out as planned and I could deliver a working system in a few weeks or months and move on to the next project. It was easy to become a little overconfident until I faced unexpected difficulties in some projects and the tight schedules started to fall apart.
For instance, I learned that you should never trust what a customer says about reusing their existing code without actually looking at the code first. You can end up having to rewrite the code, and then have a dissatisfied customer, because the new code doesn't have the same problems as the old code and produces different results. It doesn't matter which one is correct, since the old code was already used for years and everything is based on it.
So the humbling experience has been not to become too optimistic and overconfident after some successful projects. You will become the bad guy if you over-promise and can't deliver, even if you feel someone else is actually to blame. Every time you start something new, you have to check for yourself what the requirements and conditions truly are before accepting a deadline. And you can never trust the documentation or description of an existing system without also looking at the actual system.