彩票走势图

非科班出身程序员容易缺乏哪些技能?如何弥补?

原创|行业资讯|编辑:龚雪|2014-08-11 10:09:00.000|阅读 522 次

概述:本文内容摘选自知乎,原问题是“非科班出身程序员比较容易缺乏哪些技能?用什么方法弥补比较好?”

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

这是最近知乎上的一个热门问答,大部分答案都应该是出自科班的程序员,而我是一个典型非正统科班的无证程序员,不能说成功转型,至少在一线码农岗位上持续工作了8年,即将迈入第9个年头,希望可以用自身经历给楼主参考。

我大学本科文学院广播电视新闻专业,记者班,纯粹的文科,所有课程都是写作与拍片,没有任何理工科相关课程,整个大学都是在分析吴忠宪与白岩松的电视节目中度过,作业皆是300字剖析《霸王别姬》、《我猜我猜我猜猜猜猜》、《小莉看世界》。所以是纯正得不能再纯正的非科班,连理工科一点边都不沾。

作为一个民科,我并不赞同大部分科班出身同学的答案,转型并不靠读书或者补充理论知识,我自己走上程序员这条路的唯一方法,就是无比勤奋地堆砌代码量

程序员,程序员学习

码农作为一个工程职业,其核心并不是什么高深的理论或者牛逼的算法,真正重要的是你踩了多少坑,你是否踩过足够多的坑。除了极少数真正需要顶尖理论知识的算法,绝大部分日常开发,依靠的都是经验,特别是工程经验。看一本书,可能你看完就O了,可是你真的懂了?第一高分的答案说看完那些书要2~3年,可是你看完了那些书,就真的会写程序了?

作为一个非科班的程序员,你要说服别人你写的程序比科班要好,只有你真的比科班的人写得好!因为你没有学位,没有系统的课程,只有真正从实战中越过学位这个坎儿,靠的就是你拥有超强的写代码的能力。而这种能力,只有靠写大量的程序和代码,积累经验,切实锻炼出比大部分科班同学更强的coding skill的能力。

我在大学的时候,基本上每天都写十几个小时代码,天天背着笔记本上课,藏在抽屉底下,不上课,就闷头写。晚上也写,有时候一直写到凌晨2-3点(我自己一个人住学校附近)。一开始很困难,因为没有理论知识,所以有很多问题不懂。我建议遇到不懂,才查书,才查资料,而不是一开始没带着问题就虚无缥缈地看书,这样效率很低。

曾经我这样建议过别人写大量代码,别人会问,到底写什么?

写自己感兴趣的东西!你先创造出一个需求,你可以先作为用户,想一下你需要什么功能,一开始即使是无聊的,即使是已经有的,即使是别人写烂了的,都可以作为自己的题目,然后围绕着写。我推荐你参考一个很成熟的、很经典的软件(当然不需要很专业或者很难),模仿它做出你能做的所有功能。针对每一种功能,自己去思考一种做法,试图猜想别人会用什么方法实现。在你做完之后,可以搜索一下网上的资料,进行印证,不断修正自己的设计思路和代码架构想法。

这是一种极好的习惯,养成这种猜别人思路的习惯会让你越来越熟悉各种软件的架构方式,也越来越熟悉如何去通过软件的表象猜出它内里的设计思路。我现在的主业是游戏引擎设计,基本上我看了一下游戏引擎的一些表象,已经可以猜出大部分它的设计细节。

而熟悉别人思路还有一个重要的作用,就是把自己的思维模式向正统工程学靠拢。遇到一个问题,如何剖析,如何抽取重点,如何平衡利弊,最后架构解决方案,在软件工程方面解决这些问题的思路都有一套正统的想法,虽然你没有经历过ACM训练,虽然你没有上过软件工程的课,虽然你没有读过这方面的著作,但你熟悉了主流软件世界对这些问题的一贯思路,你也会逐渐变得像他们一样思考,你会遵循这种思维模式解决问题——肯定比你大学上四年课程,考几次试,读十本二十本所谓的好书,要管用得多。

但最后你还是要回归——在用野路子让你获得一般科班程序员都无法媲美的coding skill、以及已经可以熟练运用主流软件工程思维解决软件架构问题之后,你需要回归到正统理论中来,这时候可以读一些著作,而这些书在网上可以一搜一大把,随便读,随便看。反正这时候你补充理论只会让你更强,而且你理解得更加透彻,更精准,绝对比上课听老师照本宣科要更加深入理解。

如果你能够充分利用4年本科时间,基本上你可以足够堆砌出几十万行代码,而如果你又不是特别笨,你应该可以秒杀大部分浑浑噩噩玩dota过的计算机本科生。如果你还可以在某一个领域——比如图形、或者编译、操作系统之类的,有比较深入的修为,而又稍微比一般人聪明一点,你还可以直接干掉80%的985/211研究生。那些帮老板干活,只是每天上班打卡、作业应付、考试抄袭的人,是远远干不过拼死拼活堆砌代码量的实战非科班生的。

而最最最后,你需要的是自信,非科班生绝对可以做得比科班生要牛逼。写个程序而已,有多高深?非得读个几年书?你读书的那会儿,我写的代码量绝对比你屌多了,我读的paper比你多多了。反正说白了,只要你肯不要命的、勤奋地写代码,你会出头的,我保证!

列一个书单,仅供参考:

  • Introduction to algorithms,作者首字母缩写 CLRS ,讲算法的。
  • Structure and Interpretation of Computer Programs, 简称 SICP,一本有些被神化的书,不过的确值得一读。多数人初读此书,两章后会有眼前豁然开朗的感觉。虽然这书已经不再是教材了。封面是魔术师和 lamda 。什么是经典,这就是经典。
  • Computer architecture: a quantitative approach,此书我还没看,因为我自己也不是科班出身,而且此前对硬件毫无兴趣(Dijkstra 说过 computer science is no more about computers than astronomy is about telescopes),不过据说讲计算机架构的书里这本很好。
  • Concrete Mathematics: A Foundation for Computer Science,高德纳出品,讲述与计算机相关的数学知识。如果数学书只想看一本,这个应该差不多够了。
  • Computer Networks,作者Tanenbaum。
  • 一本讲数字电路基础的书……可以省略,不过还是挺有趣的。
  • TAOCP,若能看下去就看吧,看不下去也没啥,科班的都未必看得去。
  • The Art of UNIX Programming,The Cathedral and the Bazaar,这两本是传道书,有些内容现在看来已经是常识了,不过仍旧值得一读。
  • Code Complete (2nd Ed) by Steve McConnell,比较系统的软件工业流程认知和编程常识读本。
  • The Pragmatic Programmer, 这本书讲授编程实作中的基本套路,过一遍有助于扫清盲点。
  • 《人月神话》(The Mythical Man-Month),中文版还不错。
  • 《最后期限》(The Deadline),中文版也还不错。
  • Refactoring: Improving the Design of Existing Code,“重构”理论的集大成者。
  • Design Patterns,“设计模式”的集大成者,作者四人帮,封面是埃舍尔的画。什么是经典,这就是经典。
  • Programming Pearls,《编程珠玑》,茶余饭后的鉴赏小品,虽然说不定哪天就用到了。

整理自


标签:程序员

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn

文章转载自:慧都控件网

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP