Developing from scratch... This article really piqued my interest. It discusses something I've run into quite often, but hadn't thought it out as much as this author does.
A surprising (to me, at least) number of times in my career, I've run into a situation where an engineer I'm working with simply has no idea how to start attacking the problem. Usually if I (or someone else) sketched out an approach and design, they'd be able to take it from there – but that first step was impossible for them to take. Every time I ran into that, I was just astonished – because that first step, for me, is the part that is the most exciting and rewarding. It's the part I like the best about engineering!
Thinking back on the occasions this has happened to me, I'm remembering an occasion when I asked an engineer who worked for me to try to figure out a way to compress the color information in an image. He sounded very interested in the problem, and went off to go work on it. A few days later, I stopped by his office to see how he was doing – and he had gotten exactly nowhere. He had no idea at all how to approach the problem. I don't mean that he had no ideas left – I mean he had had no ideas at all! We talked about it for a while, and together came up with several approaches – and he was actively participating in the brainstorming. Eventually we settled on an approach of mapping 24 bit RGB color space to an 8 bit RGB color space, using a technique to choose the closest point in the 8 bit space to the original point in 24 bit space. That's a fairly obvious approach, and once we settled on it, he was able to implement it in just a couple days. But he couldn't, somehow, take that first step himself.
I still have no idea why some engineers can take that first step, and others can't. I do know that those who can are in a distinct minority, and all the more valuable because of that...