|
I consider myself a reformed perfectionist, having struggled with it for a long time. OP should take heart that perfectionism can be managed, and you can accomplish wonderful things. Perfectionism has positive aspects, but only when you continuously work to direct those tendencies towards constructive ends. Left undirected, it can collapse in a paroxysm of endless refinement from which little escapes. > "perfect is the enemy of shipped". This is a key concept, although I find that a more negative emphasis helps me: I need to remind myself that overengineering is destructive. Not only to the shipped product, but to the unshipped product right before my eyes as well, as productivity and value added diminish towards zero. (Refinement and refactoring are not always net positive, because churn introduces bugs, and because models created without the input of actual users are usually ill fit.) It is also helpful to involve other people — to talk to people regularly who are counting on you to finish something, to experience not only their appreciation but their expectations and their wants. Setting incremental deadlines for small gains, promising others that you'll meet those deadlines, and then fulfilling those promises creates a virtuous cycle. Finally, I've had to accept that there are limits to the kind of environment that I can thrive in. I'm just not that effective when working on projects with poor engineering practices: failing CI, no documentation, chaotic version control, wildly unrealistic expectations. Some people can do great work under those conditions, and I can still function — but it doesn't play to my strengths so I try to avoid placing myself in such environments. |