It’s just like premature performance tuning without having any data and analysis about what your trying to make performant. From what I’ve seen (and done myself) there’s two main things that happen.
1. I make it more complicated then it needs to be (for various reasons, it hasn’t quite clicked how things work, something wasn’t working so you hack away until it does and go down the wrong rabbit hole that you didn’t need to), come back a month later “Urgh what was that I didn’t need to do that.”
2. I didn’t fully understand some of the architectural considerations on how to design the app and components which causes frustration because solving problems in the new world is different to how it’s been solved in the past (so you return to point 1 trying to make something work)
Time constraints always have a great affect on how things go. There’s no magical solution, otherwise we’d all be using the same thing and in agreement.