I’ve noticed that the bottleneck to my being able to solve technical problems when writing software usually doesn’t seem to be the technical part. Rather, it has more to do with motivation. You may have noticed something similar in your own work.
Suppose, for example, that you were to ask me, without context, “Can you implement a mesh simplification algorithm?” I could truthfully answer yes, but I might have a difficult time of it. Everything else in my life would be competing for the sort of focus I would need to get the job done properly.
Yet as it happens, I am currently working on a project that requires me to create and animate some interactive 3D creatures. Because the project will run on mobile phones, those creatures need to be made from simple triangle meshes, and I can’t really move on to other parts of the project until I get this part done.
If I’d just needed any old mesh simplification, there are some fine software packages out there that could have done it for me. But because I will require fine control over the mesh structure, I needed to implement this myself.
I was really dreading this step of the project, because I was worried that it would take days to complete and I’d become mired in implementation details. Yet it turned that the key was to focus not on the technical challenge itself, but on the cool animated creatures that I want to bring to life.
So the other day, excited about those creatures and eager to meet them, I sat down at my computer and managed to implement the whole thing in a morning. Turns out that what I really needed was the proper motivation.
I suspect that this generalizes to other situations.