There are only two things in my life where I am even remotely a perfectionist – when it comes to writing clean code , and training dogs for competition . And those things can be traced back to specific instances .
As a young developer I once was asked to add some extra logic to an application which was mostly written by me – and had a very short time to get it done before it had to be deployed . The code base was dirty to put it mildly and I had to struggle with it to an extreme to fit in something new . I was pretty sure I will get fired for the mess – but with some heroics (and a good friend who did QA on the fly with me ) I ended up living to fight another day . It was enough of a painful experience that it made me obsessed about writing clean code from that day .
I was quite good in training dogs from a young age . My German Shepherd and I were a formidable team in my college days and we won a lot of competitions . And then we ran into a better team and lost a very prestigious show by a small margin of points . The judge took me aside later that evening and explained why the lack of perfection is why I didn’t win – and I agreed with him that it’s not my dog that was at fault . It was me . Those days I took winning dog shows way too seriously and became obsessed about even minute things about how I worked with my dog . I no longer compete – but I still enjoy training my puppy and I am still obsessed with precision .
Outside these two things – I never really cared about perfection all that much . I could bring it on when it mattered – an important assignment in college , a critical must-win deal , daddy-daughter dance at my daughter’s school and so on .
I live my life on what I call “appropriate approximations” .
Vast majority of things don’t need precision . If I am forecasting the next quarter in the middle of current quarter – I don’t worry about a 10% variance . I will progressively get closer to the pin over time . Since my boss knows this – there is no issue . If I am folding shirts to put in the rack , I don’t need them perfectly stacked . These are reversible issues – in the worst case , I can change to a higher level of precision on the fly with minimum trouble . Another good example is this blog . I don’t proof read or even do a spell check on what I write here . My readers are generally quite forgiving and I appreciate it a lot !
If I am hiring for my team – that’s something where I will take the time and attention to get it right . That’s not easily reversible without pain if I get it wrong . If it’s the first time I am explaining a valuable idea to a client – I don’t care for precise assumptions . But if we have general agreement and are trying to get a legal contract done , then I insist on dotting every i and crossing every t .
So what’s the big deal with all this ? As you would have guessed from the title of this blog – you don’t live and work alone . People around you could very well have different views on the need for perfection . If you don’t figure out a way to harmonize , everyone could get frustrated in a hurry . This is true in personal life and at work .
Here is how I deal with the perfectionists in my life
1. Mind my own business
If someone cares to neatly arrange everything on their desk , let them . If they want to do it for my desk too – I usually let them . Basically if it doesn’t truly cause a problem for me , I ignore it – and occasionally even indulge them . Don’t make it a big deal as much as I can . Live and let live !
2. Delegate to them appropriately
I don’t enjoy ensuring spacing in documents is perfect and consistent . I don’t get distracted by two random sentences being two font sizes larger . But I have colleagues who like to do it and they do it well and with passion . If the overall solution comes across better as a result – use that passion instead of fighting it .
3. Provide clarity on time and scope
If you don’t – then perfectionists will generally go for more scope than is useful , and might not do it in reasonable . My favorite QA colleague was very very good at finding bugs – but when we struggled to get new functionality into production in one day , I often would remind him “dude – if a bug stops deployment , or will make the company lose money – tell me and I will code again . If it’s a corner case that we can fix next week , pls just raise it as a lower priority issue that we can fix in next release” .
As a development manager, I learned to assign problems with perfection requirements like compliance , reconciliation etc to developers who thrived on perfection and give them clear timelines to plan and execute . I also learned to use them judiciously for QA on code that people like we delivered 🙂
When you bring them in is a make or break issue . Perfectionists don’t often like constraints on time . If you bring them in too early – you need to restrict scope . If you bring them in with little time left on the clock – aggressively restrict scope . My general principle is to not leave a lot of room to negotiate in the context of a near term deliverable . Instead I take the ownership of any potential failure arising from the constraints I place on them .
4. Teach, learn and evolve
One of my big lessons on this as a young partner came from a client who told me “I was quite distracted by the pictures in your slide deck – but since you drew the picture for me on the white board, I am onboard now and will award you this project”. I had no one to blame but me for that deck . A perfectionist team member did warn me a million times that the graphics on the deck should be redrawn . I said NO and went with what we had thinking he was being paranoid . He was right and I was wrong .
Similarly, in reverse – at least a few times I have been successful in debating with my perfectionist friends on the idea that there is a point of diminishing returns to being perfectionists . When there is no immediate stress of a near term action – such debates can be done in a healthy way . We can then point to what we agreed on when we are in crunch time .