楼主所写我都同意,我补充一点儿楼主忽略的。
其实任何行业,首先刻意练习,然后再去工作,都比边学边练效率要高很多。我是程序员,平常真正能刻意练习的机会其实并不多。我们大多数都是在自学,而且还对自学引以为傲。也有观点认为优秀的程序员都是自学出来的,教是教不出来的。我以前也是这么认为,虽然看过《异类》,但还是没有直观的体验,直到我开始跑步,健身,后来加入健身工作室(有专业教练一对一指导)。我才明白什么才是真正的刻意练习。很多动作,你以为自己做得好完美,其实全错了,而正确和错误的差别只是一点点。你自己练,可能练一段时间可以感觉的到不太对,也可能一辈子都不知道。而专业教练,一进屋看你第一眼就知道你哪里做错了。
书里说的很清楚了。
首先,要有针对性,就是说你哪里弱,哪里需要提高,就练什么,而不是我高兴练什么,对什么有兴趣我就练什么。比如你热爱篮球,那就要练弹跳,你不能说我只喜欢打篮球,不喜欢练弹跳,所以就不练了。
其次要有人提示你哪里不好,哪里需要纠正,这个恰恰是程序员缺乏刻意练习的原因。其他行业可以聘请教练,或者有师傅带你入门,程序员就很难,大多都是自学。结对编程也是极少数。而且结对编程也还是需要你主动向别人学习,跟教练会主动纠正你还是不一样。个别公司可能有师傅带领徒弟的制度,但是也只是指导,真正善于纠正的也很少,毕竟人家是程序员,不是程序员教师。
最后就是大量的重复,这个是程序员最不缺的。可是没有前面两条作为前提,最后这一条大量重复,其实只是低效的甚至无效的机械重复而已。就好比,我爸给我家做饭,做了 20 年也还是不如专业厨师去新东方学 4 年的水平。就好比我们几个每周打羽毛球 3 次,打了 2 年,我弟弟暑假去羽毛球班学 3 个月就秒杀我们了。
总结下,要想大规模提高程序员的水平,需要有专业的程序员教育人员。这个全世界目前还是没有。国外比我们情况好的原因只是国外的初高中及大学教育比我们情况好些,毕竟大学的教育从某种程度起到了程序员教育人员的部分作用,但是还远远不够。