(Sometimes things fall apart in implementation but we won't go down THAT route)
Most of the time software is fairly 'easy', find the source problem, map out a solution, use your design patterns, and then implement it. I am NOT book-smart by any means (and 5 years Marine Corps vs College did not help that(though going back now while working in the industry seems to be helping to fix it somewhat), however I've always clicked with programming. Sure at times I lack experience that someone who has 10-15 years experience in a certain language might have, but 90% of the problems really only need 2-3 years experience to come up with workable solutions.
I consider myself lucky though, my first job was re-writing an entire code-base to OOP with only one Senior Dev (who was hired a month after me) for guidance. And he taught me everything you could learn, involved me fully in decisions and together (yes a full team of two lol!) stood up Agile Development practices.
I really think that a combination of variously-challenging levels of work combined with an excellent mentor, and being treated as a full-equal is the key to training software engineers to be amazing engineers and giving that 'click'. But I will also say, it takes a certain type of person, some of the people I've seen in school will never be amazing, they lack the flare of passion, but I do believe that the certain type of person needed, is more relevant in Software Development.
(Sometimes things fall apart in implementation but we won't go down THAT route)
Most of the time software is fairly 'easy', find the source problem, map out a solution, use your design patterns, and then implement it. I am NOT book-smart by any means (and 5 years Marine Corps vs College did not help that(though going back now while working in the industry seems to be helping to fix it somewhat), however I've always clicked with programming. Sure at times I lack experience that someone who has 10-15 years experience in a certain language might have, but 90% of the problems really only need 2-3 years experience to come up with workable solutions.
I consider myself lucky though, my first job was re-writing an entire code-base to OOP with only one Senior Dev (who was hired a month after me) for guidance. And he taught me everything you could learn, involved me fully in decisions and together (yes a full team of two lol!) stood up Agile Development practices.
I really think that a combination of variously-challenging levels of work combined with an excellent mentor, and being treated as a full-equal is the key to training software engineers to be amazing engineers and giving that 'click'. But I will also say, it takes a certain type of person, some of the people I've seen in school will never be amazing, they lack the flare of passion, but I do believe that the certain type of person needed, is more relevant in Software Development.