> Working with passion fuels a level of intensity and emotional involvement that can take a while to recover from if you don’t get the result (read: success) you desired.
I'm reminded of a phrase: Passion is worth 10 IQ points.
The number of IQ points doesn't really matter but this is about feel. With passion you're much more likely to dig in. By digging in you're more likely to see subtle issues that can result in drastically different outcomes (the more complex something is, the more likely such issues exist). You care about the thing working and so you care about finding out when it doesn't work.
On the other hand, if you have no passion you just go through the motions. You spend less time thinking. It passes the tests? Okay great, let's move on, "it works, so who cares?" In this situation you care less about the thing working and more about getting the task done.
I feel like the second attitude is becoming much more common. I'm sure there are a ton of reasons why but I feel like one of these is that complexity has just exploded. An unfortunate fact is that you can make things too simple. Little errors compound to become big errors that are difficult to wrangle. I think we've gotten to a point where there's so much (often hidden) complexity that we are constantly being overwhelmed, making it harder to care, creating a dangerous feedback loop.
Every good problem solver knows that the best way to tackle a problem is to break it down into bite sized and simpler pieces. But the flip side of this is that every big problem is caused by the accumulation of many little problems. For some reason we have a much harder time thinking in this direction. For this reason I think we need to stress the importance of the little things[0]. It is also important to remember that when solving the big problem that solving each little problem is not enough. That only works if they are independent. You may want to start out treating them as such but that's why this tends to become an iterative process, because as you converge to solving the larger problem these hidden complexities start to reveal themselves. So solving small problems is a defensive strategy.
[0] This can easily be misread. I am not insisting that everyone be a perfectionist. What I've said is far easier said than done. Perfection does not exist, there is always something wrong. The question is much more about bounding that error and keeping it small. It is about recognizing these issues and keeping track of them. More important than solving problems is the recognition of them. After all, it is incredibly difficult to solve problems you don't know exist. By keeping track of these things you can better triage tasks. Even a few comments in the code stating what assumptions are made or stating the conditions that the code is expected to run on will save you tons of headaches in the future. A trivial amount of work in the moment can pay enormous dividends when given enough time.