前几天,与

海天软件工程学院的张院长一起到海天软件工程学院调研学生软件技能的学习情况。当时,我谈到尽可能多得去写代码,只有代码量达到足够多时,才能提高水平。软件开发是实践特强的技术,只有更多的实践才会有本质的提高,量变引起质变这毋庸置疑。

有学生问写多少代码量,会达到什么水平呢?这个有人这样描述:代码量是评判程序员水平高下的方法之一。微软要求应聘程序员在大学四年间至少要写10万行代码。李开复也建议计算机类的学生争取在大学四年中积累编写十万行代码的经验。由此可见代码量积累的重要性。

当你编写过100行代码的时候,应该对编程有了一个朦胧、感性的认识。

当你编写过1,000行代码的时候,应该已经掌握编程的基本结构了(顺序、分支、循环)。

当你编写过10,000行代码的时候,可以用自己喜欢的编辑器做自己喜欢的小玩意儿了。

当你编写过100,000行代码的时候,你会对自己编码能力充满自信,并且发现公司中至少70%的人水平在你之下。

当你编写过1,000,000行代码的时候,恭喜你,终于成为老皮了,哦,我是说程序高手、高手、高高手,请给我一张你的名片。

首先,在这所描述的“写”不是Ctrl+c 与Ctrl+V。是真正手打出来的,并且是调试完成无bug的可用代码。其次,写代码与不是抄代码,将书上或老师写过的再重新打一遍,而是按自己业务逻辑编写的代码,编写代码的过程也是一个学习与思考地过程。还有,在写代码时,要不断优化,不断重构,这个过程对学习来讲更重要,如果尝试各种方法对比,再找出最优的方法,完成,尽管此时完成代码量不多,但进步更快。优秀的成长过程,会不断发现此前所写代码是多么“烂”,多么不完善,此时,如有时间一定要实验一下新的思路是否正确。

如果你在不停的重构代码,不停的思考更好方式,也不停的接触面向对象,学习设计模式,研究各种开源的架构。那去做开发时,可能更多得是思考,去分析,写代码时间会少,完成项目的代量可能也会不多,但此时才是登堂入室了。大部分程序员只会使用语言编写程序,但不知道这个源程序究竟是如何变成可执行代码、变成什么可执行代码,这些可执行代码的执行时间是长是短。因此,要从根本上提高程序的效率,需要程序员深懂源程序到可执行程序的过程,深懂编译原理、深懂汇编语言、深懂汇编中的系统调用。对于数据库而言,程序员要深懂数据库原理、深懂数据存放方式和数据查询方式,深懂数据库操作与I/O操作与内存的关系。而这些深懂是需要长时间编程积累的。

写代码更要讲质量,前面所说不停的改,不停的思考,实际也是提高编写代码质量的过程。代码的质量包括代码结构,清晰性,可读性,对于性能要求高的软件,还包括算法的复杂性等是衡量一个优秀程序员的标准。要达到这个标准,是需要一个量变到质变的过程的,而质变的目的也是为了达到高质量代码。所以,有时,写过很多行代码,未必就是优秀程序员。我曾经面视过,几个不求上进的老码农,从他们做过的项目看,代码是写了不少,可比优秀程序员差得很远。原因,第一次写过代码,完成了功能,第二次再用,就考过去,稍加改动就可,至于代码性能如何,是否可维护,是否可读,性能怎么样,根本不去多想。这样下来,水平一直不会长进,自然会被社会淘汰,去努力得找工作!

下面谈一下,作为技术总监从代码怎样去确认程序员。好的程序员写的代码,整洁而规范,视觉上自然有一种美感。空白错落有致,注释恰到好处,命名和排版遵守统一的规范,有一种精心雕琢而成的一致性。程序的好坏几乎总是取决于它们是否“漂亮”,不“漂亮”而好的程序,除了C++ STL源码,而又好又“漂亮”的代码则随处可见,如Linux Kernel,InnoDB,JDK,JUnit等等。

差的程序员写的代码则经常出现过长的函数,前后不一致的命名方式和排版,过深的嵌套结构,非常复杂的表达式,随处可见的数字等毛病。

代码也可以看出一个程序员的团队协作精神。注意团队合作的程序员,会严格按照团队规范写代码,而风格与团队规范不一致的程序员则很可能欠缺团队精神。注意团队合作的程序员会注意给模块的对外接口加以重要的说明,如前置条件、后置条件、参数能否是NULL等等,不注意团队合作的程序员懒于处理这些细节。在此要重点说一下注释,因为发现学生基本上不写注释。注释并不是越多越好,但多的注释总比没有强。优秀程序员,不仅将必要参数,调用说明写上,将改动过程注明,也将业务逻辑做简单说明,还可能在必要地方写上思路与思考过程,可能引发问题。

好了,先写到这,抛砖引玉了。

海天软件工程学院

转载于:https://www.cnblogs.com/sunth/archive/2011/03/16/softwarewrite.html

怎样看待大学期间的代码练习相关推荐

  1. 计算机二三四级软考、志愿者实习、软著外观实用发明专利、著作、科研论文EI/SCI在大学期间野蛮成长方式

    计算机二三四级软考.志愿者实习.软著外观实用发明专利.著作.科研论文EI/SCI在大学期间野蛮成长方式 真的有很长时间没有更新博文了,在这里正逢有一定的小时间可以让我写一些文字来分享一下大学常见的经历 ...

  2. 计算机专业大学期间有必要参加很多竞赛吗?

    大学,是人生中一段崭新的旅途,大家站在同一起跑线上重新开始竞争.大学,又是人生中非常重要的转折点,将承载同学们从学校到社会的转变.同样是大学四年,有的人大学生活多姿多彩,而有的人却浑浑噩噩地度过四年. ...

  3. 大学期间的副业赚钱之道

    阅读本文大概需要 3.2 分钟. 很多人上了大学之后就开始释放自己的天性,这个时期大部人不再受到家长的约束,学习上基本没有太大的压力,并且最重要的是有了非常多自由的时间.所以有很多人在上大学之后,会去 ...

  4. 大学期间所有课设及大作业源代码

    程序员练成记 出处:牟尼的专栏 http://blog.csdn.net/u012027907 记得刚上大一时,那时对这个专业(软件工程)很陌生,甚至对电脑都很陌生,有时还有点儿害怕,因为我在进入大学 ...

  5. 大学期间开发了一款App!让我月薪破万....

    大家好,我鸟哥!一个半路出家的程序员. 前几天有读者(目前还是个在校大三学生)咨询鸟哥一些赚钱的门路,大概就是感觉自己有点Java技术和大把的空余时间,想通过一些平台接单赚钱.不得不浇盆冷水,平台是有 ...

  6. 在大学期间必须学好的几门课​

    对于一个学生来说,学习必然是放在第一位的,在大学期间,你必须要熟练掌握几门最重要的课程,以免让自己错过一个又一个的机会,很多的读者也曾和我一样认为大学的某一些课程是没有必要的,觉得以后不会用到,学不学 ...

  7. 全国计算机考试挂科要不要补考,为什么说大学不要挂科,大学期间挂科了怎么办?...

    大学尽量不要挂科,因为你挂科了,一些奖学金或其他荣誉,还有入党之类的都将与你无缘,而且补考重修还要付出更多的努力,很麻烦.其实大学的期末考试没有那么的难,考前突击一下,好好的学一下,一般就过了,所以让 ...

  8. 大学期间能考的计算机证书,大学期间可以考的证书,含金量,很有用

    大学期间可以考的证书,含金量,很有用. 在大学期间,除了自己的专业课,还有一些证书是可以考的,这些证书可能会在自己未来的就业方面提供比较大的帮助. 计算机二级.现在电脑工作基本上已经成为常态,计算机的 ...

  9. 大学英语计算机不过只能拿结业证吗,在大学期间建议去考的证书

    已经是八月的尾巴,很快就要来到九月的开学季,相信已经有不少的小伙伴们已经是手握录取通知书等去大学报到了,是不是充满了期待呢,多年苦读只为能进自己一直憧憬的大学.那么,到了大学之后,不要只为了能享受美好 ...

最新文章

  1. 正则化技巧:标签平滑(Label Smoothing)以及在 PyTorch 中的实现
  2. 报表引擎API开发入门— EJB程序数据源
  3. 如何自制你自己的二极管
  4. centos 6.8 + postgresql 9.6 + file_fdw
  5. 记一次热更新上传补丁包失败问题
  6. leetcode —— 59. 螺旋矩阵 II
  7. 计算机学院会会,欢迎访问武汉理工大学计算机科学与技术学院
  8. 关于Mysql8.0.26版本与IDEA连接的配置
  9. 代码设计的几个基础技巧
  10. CAD 残留文件和注册表如何完全彻底卸载删除干净【转载】
  11. 记录一次线上mysql事务隔离级别引发的思考
  12. 推荐给每个找工作的IT毕业生--打鸡血书
  13. 适合ABB和halcon互转——四元数与欧拉角互转方法C#
  14. 手机查看企业qq邮件服务器,QQ企业邮箱怎么用?手机QQ邮箱收发邮件的方法
  15. Python下selenium的get()方法大量时间超时报错TimeOut
  16. serenity+jbehave
  17. 新至强Mesh架构解析之《西游大灌篮》
  18. 网上赚钱竞争那么激烈你一定要有自己的绝活!
  19. 如何快速且不失真剪切与合并视频?如何将视频快速转成MP4格式?无需渲染!视频秒转MP4,剪辑合并!
  20. 软件质量管理体系 type:pdf_昆明医疗器械软件注册流程,软件评估_上海峦灵

热门文章

  1. 2018全球科技创新报告
  2. 腾讯AI Lab刷新人脸检测与识别两大测评国际记录,技术日调用超六亿
  3. 7 成中国职场人厌班,我们为什么会陷入职业倦怠?
  4. Windows Server 2012正式版RDS系列⑤
  5. C语言--第0次作业
  6. 网络集中投射了全部安全问题
  7. ORACLE的impdp和expdp命令
  8. C#中方法的参数的四种类型(转)
  9. asa hacker
  10. wampserver使用过程中遇到的问题及相关配置