In the realm of engineering it is frequently wise to admit defeat.
As I've become more mature as an engineer, I've learned that there are a few signals I need to regard which tell me it's time to give up. They are:
- I'm not feeling patient. If I find myself moving forward with a design with little or no critical thought, I'm at serious risk of making a mistake and wasting time.
- I've been trying the same approach for too long. I learned this lesson in a graphics course in college. I worked on a project for days and days, hacking at the same chunk of code. Ultimately, I didn't get it working correctly until I threw the code away and started from scratch. Starting from scratch let me use what I'd learned while working on my original solution without being burdened by it.
- I can't remember why I'm trying something. Last week I was trying to fix a bug in a project's build configuration. Toward the end of the week I found myself changing settings, running tests, then forgetting why I changed a setting in the first place. This was a clear signal that I needed to stop, step back, and make sure I really understood the problem before proceeding.
I can't remember any engineering problem I've faced where I found the solution by pushing through fatigue. The solutions always come when I realize it's time to step back, check my understanding of the problem, then proceed patiently.