In the world of IT, engineers usually grow into either 1) Technical managers with people management responsibilities OR 2) Technical Advisors / Architects working as individual contributors.
Here the first set of roles do not necessarily need you to have a great technical prowess compared to an architect. Similarly, in an architect role, you need not have great people management / planning, delivery skills compared to a Technical Manager.
We must keep these distinctions in mind when looking at entry level / junior developers. Also, keep in mind the need for utilizing the strengths of your employees and making the weaknesses irrelevant.
Given the above, lets look at various scenarios that usually happen with developers:
- Core Technical Strength of an individual sometimes is not good enough for a more senior role. You may want to ignore this weak-ness for a while and look at the strengths of the individual. Like ownership, planning delivery, people skills etc.
- Ownership and passion may be great. In this case, let this person be the driving force for solving a critical problem, may not be solving them problem himself.
- Delivery and execution skills may be awesome. In this case, let this person use these skills to drive the planning and execution for a team of individuals. See how this plays.
- Some people are just good at their clarity of thought, their inclination towards customers, business etc. You may want to let these people work closely with Product Mgmt in understanding requirements and helping provide a Product Manager view / proxy to the team and help in documentation for the features being built.