One of the questions our clients ask while designing a selection is “build vs. buy”?
How much should they invest in training a guy (and it's all guys for our clients at this point) versus how much should they expect to get out of the box? What are easily trainable skills and attributes and what takes more time than it's worth to train?
In the world of Product Developers versus Infrastructure Developers the entrepreneurial skills of a Product Developer are much harder to build than the technical skills of an Infrastructure Developer. This is debatable.
If you look at the landscape of courses and bootcamps for both there are far more for developers than entrepreneurs and the developer classes have better outcomes. It's easy to promise fulfilling a dream of owning your own business but courses and classes that promise this almost always miss the mark or are outright scams.
If you disagree that it's easier to teach technical skills you are probably thinking something like, “There's so much more to the job than applying algorithms and coding patterns. There's an art to it. The skill of building tools for other developers is super hard to train.” I agree. But also we can buy the output of developers like this and in many cases (e.g. Rails) we can just download it for free. Rails is like having DHH in a box. Heroku is your DevOps team. etc.
We can make tech choices that decrease our need for Infrastructure Developers but we can't do the same for Product Developers.
We still need Infrastructure Developers, just not as many. From time to time specific problems will require a genius dev who is intimately familiar with our problem domain e.g. Anvils. We also need devs who continuously monitor how we're working to make choices about our tech stack and enforce patterns that support our product velocity. This is something every developer on the team should do but it does make sense to have some people around who tend to be motivated by that type of work and eventually perhaps an entire team devoted to this.