这是一位朋友给我提的问题,我觉得有一点代表性,这里做个统一回答。
一家之言哈,欢迎拍砖!
原文如下:
肖老师你好,我看了您关于读书的几篇文章。也有个问题想让您给
指点指点,不知道您是否有空。
是这样的,我是计科专业,热爱编程和经济学。现在大二,学校开的
课作业超级多,个人感觉有很多无谓的东西
学校都要要求做好。如果我按照学校的安排,我将失去大部分敲代码、
学习经济学的时间。
现在又点两难,我不愿放下我的爱好,学校又拿考试压人,实在是无语。
我是宁可通宵敲代码也不愿去抄实验报告和作业的那种。我身边并没有
同行者,同学都是抄抄作业,以图有个好的平时成绩,而我是因为喜爱
编程,一般不写作业,逃课写代码也是常事,奖学金就更不必谈咯,呵呵
这是我的基本情况,如何把握平衡点,请老师指点下!
学生在此万谢先了!!
 
我的回答:
 
这位同学,首先我很理解你现在的心情。相信你看过我的一些文章,里面我也说过,上大学时,我也偏科,不喜欢自己的专业课,最后我选择读书来度过那段苦恼的时光。
我觉得你现在的情况,我完全能够理解。
不过,这里面我还是要说,这段时间,建议你还是多学一点学校安排的专业课。
原因很简单,敲代码其实不值钱的,我们天天说软件蓝领,那么,有多少人是被迫做蓝领的呢?又有多少人,是在学校自己没有选择好方向,没有做正确事情,最后,沦落到只能做蓝领的地步呢?
大家都在大学里面念书,很多同学,甚至就是同一个学校,同一个班级的同学,走出来大家看,有的人,很快就成了项目经理,最快的,一年就能做到,做到架构师的难点,5年~10年,也差不多,但是,也有的人,大家注意啊,我摆句话在这里,一辈子,只能做最底层的代码工人。
大家不要以为我危言耸听,在我看来,软件业,和机械制造业,甚至农业,其实没有太大的差别,一个行业,其实就是从事这个行业的人群的集合。我们说,有人的地方,就有江湖,行业也是如此。
那么,别的行业里面,我们可以看到从最底层的工人,到技术员,工程师,到高工,甚至院士,那么,我们凭什么不会认为,软件业随着发展,以后也会呈现这么一个人群划分呢?
因此,如果就软件业里面而言,我认为以后也会有高下之分,有最底层的蓝领,有中层的白领,也会有高层的金领。这种划分,现在可能只是初现端倪,但以后我认为一定会这样分的,因为这才叫一个成熟的,可自我持续发展的行业。
那么我们来看,软件业出来,一般说来需要大学毕业的水平,看起来比其他行业高一点,不过,当一个行业大多数人员都是大学毕业水平的时候,大学文凭在这个行业中,其实最多算是“识字”证明而已。并不足以体现足够的竞争优势。
既然大家出来的时候,水平差不多,而社会分工又是必然的,那么,我们是不是要想一个问题,我们凭什么,在以后的竞争中,赢过我们现在的同学,同时代的这批和自己水平差不多的软件人员?
我想,除了个人家庭背景,或者走创业路线等特殊道路外,其他大多数以打工谋生的软件人员,恐怕就要比拼“内力”了。
什么叫“内力”,我以前的文章有讲,但是没有明确,这里我说点我的看法:我认为一个大学毕业生的“内力”,尤其是一个软件人员的“内力”,至少包含程序设计能力,但绝不仅仅包含这个,大学中的各种数学课程,英语,甚至大学语文,哲学这些看似与技术无关的东西,其实是我们“内力”的重要组成部分。
这里说一点我的心得,我最近几年写代码,其实真用程序设计的知识不多,因为C和C++就那么点东西,会了,熟练了,就完了。
那我用什么多?美学,没想到吧,是一位大师建议我的,去学点美学的东西,因为,程序要写得优雅,架构要显得轻灵,这是美学的东东,我学摄影已经5年多了。
嗯,还有呢,语文,写程序就是写文章,语文不好,话都说不通顺,写什么程序啊?
还有呢,概率论,程序写得好不好,有没有bug固然是一个方面,但仅仅是一个方面。合不合用是重点,什么叫做合用,有合适的功能,有合适的性能,我们常说“bug好追,性能难调”,能理解不?这里面大量要用到概率论。我的新书《0 bug ---- C/C++商用工程之道》,大家可千万不要一味仅仅是代码规范,写程序无错误的方法,里面还有大量的白盒测试技巧,性能监控和调试方法,甚至,我还专门发明了“主动池”和“被动池”来作为专门的优化工具。
最后还有一点,我得说,哲学,我觉得程序也和文章一样,正确的哲学,有正确的结果,哲学不正确,相当于世界观出了问题,一篇文章,立意都错了,那怎么写,随便怎么锦绣文字,都是垃圾,不可能成功的。我主修道家的,比较讲究平衡之道,在程序设计中,也体现这一点,我一般不太喜欢把系统中某个性能做到极致,因为极致的性能,一般占用极致的资源,它是爽了,可是其他服务,没有足够资源去运行,导致停摆,这也是一个烂系统。能理解吗?
所以,我说这么多,都是想告诉你一个建议,想学好计算机,别老想着敲代码,除非,你这辈子真打算敲一辈子代码,做最底层的软件蓝领。做事情之前,多想想,学习的时候,多学一点其他的科学,触类旁通,广征博引,你的程序设计“软实力”起来了,其实想做大师就不难了。
一句话,老老实实做好现在该做的事情,我作为过来人,告诉你,不会亏的。
嗯,当然,话分两说,你说喜欢经济学,我到觉得不是坏事,因为在商用化开发过程中,很多时候,质量与时间与成本的平衡,很多时候,都是在算账,其实这里面需要很多商业观点,而经济学是商业化的“软实力”,我倒建议可以多学一点。这对以后到公司做事情,学习对工作中“度:的把握,很有帮助。
呵呵,好,以上是我个人一点建议,希望能帮得到你哈。