There are two problems; the education system and the mindset of programmers. Most of us do not want to learn things deeply and the way they should be learned but instead, we learn coding to get a job. When you get a job, knowing your ability youll be trained for a particular technology and work on it for the rest of your life. Good programmers are always capable of doing things on their own and work the way they want to. Because they know they can do it. But, most of the graduates dont have this confidence when theyre going for a job.