I live with two musicians, probably some of the best there are in Europe and absolute specialists in their respective area. I would say that they are so good that they could just walk up on any stage and play pretty much anything. But still after 40 (+/-) years of experience they still practice pretty much every day for hours and hours. Their attitude is not "I am so good I can do without practice" NO they feel like they need to keep on practising and improving. When asked why they do it they compare it to sport. "A good runner has to keep on running otherwise he will become slow".
The more I think about this the more this attitude should also be applied to Software Engineering. In my master course I did near to no programming at all and even in my
BSc course programming was not the main topic, but still most of us are going into jobs where we are going to program. I am a programmer by upbringing, I started programming and probably I am going to program for quite some time. But my years at University have hugely reduced the time I spend in front of an editor learning new things. So how can I assume that I know programming if I haven't really trained it for such a long time. If you look at the Music degrees the main focus is on playing and just a little bit of theory. It seams to be a problem that most Computer degrees originate from the math departments where theory is important. But looking at my year doing a math course a lot of even that degree is actually solving formulas. I think there is a need for a finer grain split in computer courses. (Not only Computer Science and Software Engineering) maybe there is a need for a really programming course. So the Engineers can model stuff and do formal validation, testing etc ..., the Scientists can do the theory of sorting,
searching, etc ... and then programmers then implement it.