日历

September 2020
M T W T F S S
 123456
78910111213
14151617181920
21222324252627
282930  

Reply To: 菜鸟读《冒号课堂》后的感触,望郑晖老师解惑

Home Forums 《冒号课堂》讨论区 菜鸟读《冒号课堂》后的感触,望郑晖老师解惑 Reply To: 菜鸟读《冒号课堂》后的感触,望郑晖老师解惑

#1231
hui
Keymaster

再说说专业方面的问题。你提到愿意重新自学大学课程,虽精神可嘉,但未必可取。从软件(或建筑)设计的观点来看,这是bottom-up法。作为学生,最好采用这种方法,但你已经参加工作了,所以我建议你更多地采用top-down法。这当然不是轻视基础知识,而是认为获取知识最高效的方法莫过于按需(on demand)学习。在实际工作中意识到某个知识点的重要性,从而有针对性地弥补短板,这样学习起来不仅更有效率,也更有兴味。需要强调的是,绝不能只是“头痛医头”,而要“拔萝卜带出泥”。只有寻根究底、以点带面,才能快速有效地建立起自己的知识结构体系。对于软件开发这类实践性很强的专业来说,该法尤其奏效。

话又说回来,这种项目驱动式的学习方法也是有一定局限的。毕竟大多项目涉及的深度和广度通常都很有限,单纯凭此建立起来的知识体系不可能非常完善。这就需要平时有计划地阅读一些经典著作以加强深度,并定期浏览一些高质量的技术网站以加强广度。

以上谈的都是一些较为宏观的建议,我想你需要的是更加具体的建议。《冒号课堂》上已经阐述了不少关于编程语言、编程范式、设计原则方面的观点,此处不复赘言。我想特别强调一点——把握抽象(abstraction)。事实上,无论是在书中还是本论坛中,我都不厌其烦地再三提到抽象的重要性,今后有时间还会深入地挖掘这一主题。对编程的语言、范式、设计、实现体会得越深,对抽象体会得也越深。借用Hakell的设计者之一Paul Hudak的一句略带夸张的话(overstatement):“abstraction, abstraction, abstraction” are the three most important things in programming。一定会有人会问:难道编程语言就不重要了吗?设计模式就不重要了吗?算法设计就不重要了吗?那是他们尚未真正理解何为抽象——抽象不仅渗透在编程范式之中,也渗透在编程语言之中;不仅反映在设计原则之中,也反映在设计模式之中;不仅体现在架构设计之中,也体现在算法设计之中。

说来也怪,明明是想提“具体”建议的,偏偏又扯出了“抽象”,大概不是你想要的答案吧?既然你是计算机专业毕业的,又有一定的工作经验,其实也不需要太过具体的建议。你的苦恼是找不到努力的方向,而这个方向恐怕还是得靠自己去寻找。建议试试两种方法:研读一本有趣的名著或开发一个有趣的应用。只要深入其中,相信绝不会再为找不到方向而发愁,说不定倒会为方向太多而发愁呢。

最后,如果平时能有意识地积累一些计算机以外的领域知识(domain knowledge),比如金融、电信、教育、企业管理等等,对提高在IT业的个人核心竞争力也是大有裨益的。当然,前提是你有兴趣或有条件获得这些知识。

一家之言,希望能对你有所帮助。

 请您评分1星(很差)2星(不行)3星(一般)4星(不错)5星(很棒)