| They're different skills, yes. But if you want to be truly productive you need to have both: come up with the idea that will actually solve the problem efficiently, and then implement it correctly. In general I tend to think of problem solving as having three stages: 1. Identifying the problem. 2. Coming up with a solution, what you call "ideation". 3. Implementing the solution, what you call "execution". Each has its own set of sub-skills. Beginning software engineers usually just do #3, "senior" engineers do #2 (senior as in typical job title), and some engineers do #1.
(In reality there's overlap in how you apply these skills, this is obviously a simplification, and there are other ways of thinking of this, e.g. here's a slightly different mapping: https://codewithoutrules.com/2017/10/04/technical-skills-pro...) So I personally think of it more as progression, rather than necessarily distinct things that never appear in the same person. In one chapter of my book (https://codewithoutrules.com/saneworkweek/) I cover some practical techniques for each stage, in order to help readers become more productive as an engineer. |