My colleague was tasked with configuring open-source software on one of our servers. The process proved to be somewhat intricate, rendering the installation a challenging endeavour. Consequently, he was a tad disheartened not to have completed his assignment. It's one of those instances when you're eager to resolve a problem, yet a multitude of events occur concurrently, causing you to lose sight of the actual issue. This is colloquially referred to as Yak-Shaving. Scott Hanselman has penned a fascinating article on this very subject.
This, in essence, encapsulates the essence of software engineering. It demands patience, and one mustn't allow setbacks to dampen their spirits. Challenges will inevitably emerge, often leading you to reach an impasse and feel as though you're chasing your own tail. In such scenarios, the best course of action is to step away from the computer, take a leisurely stroll, or even better, get some rest. Frequently, it is through such means that challenges are ultimately surmounted. So, when you find yourself stuck, take a respite and return to it later, or quite simply, sleep on it.
Another prevalent experience involves a desire to grasp the intricacies of a complex system. You continue to delve, yet find yourself devoid of any leads, culminating in a sense of having achieved naught by day's end. The strategy to combat this quandary is known as Code Spelunking. This entails the debugging of issues, the addition of new features, or quite simply acquainting one self with the code. The term "spelunking" is borrowed from the recreational pursuit of exploring caves, which serves as an apt metaphor for delving deep into intricate, maze-like codebases.
Speaking of Code Spelunking, You might like to checkout this video.