One of the biggest challenges I have seen in the development of technical projects is finding good product management talent. Product managers can have different roles and responsibilities depending on the organization. However they are generally responsible for helping the team build the right product. They typically do the translation of user needs into tasks for software developers. They often also serve as product owner and manage the work of the development team as well. Good product managers have technical and people skills, which is why they are hard to find.
Many product managers come into it in the crucible of projects. A software developer with people skills is nudged by management into becoming a product manager. Developers are product manager adjacent and work with them almost daily so it makes sense that at least some would acquire these skills. In an organization without product managers a general manager often discovers they are a product manager but have not been given training in this discipline. These are both imperfect paths.
The challenge is that many organizations lack junior or entry level product management roles. In an ideal world an organization would hire people with expertise in product management and then have them teach other people how to do it so that those people can take the lessons and best practices into other projects. There is clear demand for this sort of role. At Code for Boston I have seen an increase in the number of non-developers that have expressed interest in being a product manager but a strong aversion to being thrown into the crucible to do it.
Solving this problem is important because product managers play an important role in the development of digital products. Forcing developers to be product managers leads to its own pile of problems and sending folks without product manager experience into the crucible is an expensive way to train people in this discipline. The tech industry needs to cut a better path.