软件开发项目总是不段的延期,延期,再延期……当然,有项目经理的问题,也许还有客户的问题……作为最直接的开发人员,还是应该先检查下自己的问题,想想咋个提高下效率呢?
1. 程序员的工作重点是编码么?不,是思考。
Programmer经常也被称作Coder,编码是程序员花时间最多的工作之一,但要说要工作重点,似乎应该是——
思考。每个程序员都不是编码机器,除了编码之外,还需要要思考:这段代码是要干什么,需要哪些输入,需要进行什么样的验证,要经过什么样的计算流程,最终需要输出什么,以及,哪些地方可能出现错误,而这些错误又该如何去处理……甚至,有时候还需要考虑用什么样的技术手段更为合适。
是的,这不是一个Coder的工作,但是,Programmer的确不是Coder,中国没有纯粹的Coder。有人说程序员就是一个翻译工作者,这不假。程序员所做的事情就是把一个思维中的、抽象的东西,翻译成代码,然后经过编译器/解释器的再次翻译和操作系统的组织,让CPU搞明白,照样执行。
所以,不要因为任何原因放弃慎密的思考。多数情况下,程序员会为了赶时间一边写代码一边思考,但这种思考往往没有经过慎密的逻辑推敲,最终造成代码一而再,再而三的被修改、打补丁……当补丁多到一定程度的时候,代码堆难免会坍塌,即使没有,也常常是摇摇欲坠了。不知道每当这个时候,看到连自己都不想再改动的代码是种什么样的心情,会不会后悔没有在开始编码之前好好的思考呢?
2. 拆除补丁,学会重构。
见过满是补丁、补丁挨补丁、补丁重补丁的衣服么?很舒服很温暖么?那是文学家说的。如果谁穿过,那他一定知道,这不舒服。如果想舒服,当补丁多到一定程度的时候,就应该把这些补丁拆下来,换一块完整的大补丁。
同样,要想程序跑得愉快,少出现错误,也绝不是持续地修改错误就能实现的。修正错误的过程,需要
不断的重构。相信多数程序员都有这种感觉——补丁加补丁的程序遇到新的错误时总是让人觉得难以下手,而对于新接手的程序员来说,改这样的代码,还不如重新写一个更容易些。表面上看起来,重构的时间会比直接修改错误的时间花得更多一些,但是重构会为下一次修改做好准备,它会使下一次修改仍然处于一个清晰明了的状态。
除了让程序结构保持清晰,重构还有一个好处是会促使程序员去思考。修正错误时的思考仍然处于一个非常重要的地位。如果在修正错误的时候只看到了眼前的错误,那很危险,因为你不知道你所做的事情,
到底是改正错误,还是隐藏错误。所以改错之前,必须思考,必须对错误反复慎密地逻辑推敲,必要的时候甚至要从整体框架去探寻错误的原因。
3. 程序需要练习打字么?当然!
你见过像小学生一样一笔一划写字的作家么?也许有,但至少我没见过。写作的时候,文字应该紧随思想的步伐,如行云流水般地涌现出来,只有这样,思维才不会被文字阻碍,一时闪现的灵感才不会被白白的放走。同样,
如果写代码的速度跟不上思维,那思维就会经常断线。
程序员不是打字员,不需要专业的打字速度,但是打字的确是一项基本技能,它是保证思维流畅的基本条件之一。是的,只是之一,因为打字的速度永远跟不上思维的速度,我们还需要别的东西——工具,这是后面要说的内容。那么,如果打字速度不够快,写程序之余不妨玩玩打字游戏……或者聊聊QQ。
4. 每个人都会用工具,但是真的用好了吗?
对于程序员来说,最常用的工具就是IDE。不过IDE可以用来做什么呢?编写代码和编译调试,这些只是它的基本功能而已。对于编码来说,一个好的Editor可以大大的提高编写代码的效率。当然,一个好的IDE里面一定少不了一个好的Editor,但除了IDE之外,好的Editor也为数不少。
什么样的Editor最好,没有定论,只能说,没有最好的,只有最合适的。对于编码来说,一个好的Editor应该有些什么样的功能呢?如果你想代码清晰可读,那么这个Editor最好能有
语法高亮功能;如果有
代码折叠功能就更好啦;如果Editor有
高亮当前行的功能,就不用满世界去找插入点在哪里;如果有
智能缩进和
格式化代码的功能,那[Space Key]会非常感谢它的;如果有
矩形选区功能,在某些需要批量修改代码的时候就不需要不断的上下左右了……还有一个非常重要的功能,那就是
自动完成。打字速度还跟不上思维么?那自动完成可以很好的帮助你提高录入速度——当然前提是熟练掌握对Editor自动完成功能的使用,这通常得益于设置一个方便的快捷键。
说到
快捷键,它是一个几乎每个Editor都有的功能,却常常会被会忽略。拷贝粘贴要用鼠标点菜单么?自动完成要等待200ms时间弹出么?选择单词是用鼠标拖选、双击还是Shift+方向键呢?移动到某个位置是不是要按方向键按到手痛……?为什么不试试快捷键?!几乎每个Editor都定义了一套方便快捷的快捷键,用于快速处理编辑指令,有些Editor甚至考虑到用户习惯为用户提供了自定义快捷键的功能。Ctrl+X、Ctrl+C、Ctrl+V这套剪贴板快捷键在Windows下几乎每个软件都是同样的定义;移动光标除了上下左右及Home、End外,不妨尝试一下Ctrl+这些键;多数情况下,如果在移动光标的时候按住Shift,那光标经过的文字就会被选中……当然,快捷键远不止这些,当你觉得某项操作不方便或者太花时间的时候,你就应该去软件的Help里面找找关于这个功能的快捷键定义了。多用用,熟悉了,效率就上去了。
IDE、Editor都是开发所必须的工具,但它们不是开发工具的全部。Word、Excel除了用于办公,也可以用于一些代码和数据的临时整理,因为它们是专业的文字处理工具和数据处理工具。当然,好用的工具远不止这些,当你发现了,留个意,说不定哪天就能顿悟——这东西能帮助我处理代码。除了工具之外,还有技术,使用工具当然是技术活,再好的工具不会用也是白搭。顺便提一下,
正则表达式这个东西,在查找替换的时候真不错,虽然学习起来需要花点成本,但它值得。
5. 写程序的时候可以用中文么?为什么不!
如果你的公司规定了程序必须用英文来写,那这一部分你可以跳过。其实不论英文还是中文,都是用于表达意思的符号。系统早就Unicode了,数据库几乎都支持各种字符集,多数语言都支持中文变量名……在程序中使用中文,早已不存在环境的限制。
程序员们都知道变量名、方法名要有意义。写英文么?英文毕竟不是本土语言。你知道正确的单词该如何写么?就算知道,想这个英文名字往往也会想破头。一段10行的代码就花了10分钟去纠结变量名,哪里还能有效率?写注释就更不用说了,有时间去想一段英文注释怎么写,中文注释都写了好几段了。所以,
如果想用中文,就用吧。哦——前提是,确定你的程序中使用中文不会有问题,并且,你打汉字的速度真的比较快。
6. 今天你熬夜了么?熬夜不是好习惯,但我确实熬夜了。
熬夜的程序员一定不是少数,加班的程序员更不可能少。那么熬夜和加班能有效提高效率么?短期内,也许会。但是长此以往,
失去的不仅有效率,还有健康。
作为脑力劳动者,大脑是最需要保护的部分。保护大脑的最好方式,除了合适的温度和湿度之外,还有很重要的一点,就是休息。而且,大脑“不是一个人在战斗”,它需要身体其它各部分提供各种各样的服务,所以足量的休息和充分按时的睡眠是必不可少的。
看过《人体使用手册》吗?这是一本很火的关于健康的书。这本书就提到了为什么人们需要在10点左右进入睡眠状态。如果长期熬夜,就不能让血液得到充足的补充,就不能让身体得到充分的修复。人生不像WOW,不是一瓶红药水就能解决问题的,人需要营养和休息来保证大脑及身体其它部分的健康。健康的大脑才会思维敏捷,响应迅速。思维敏捷的大脑才能提高工作效率,而迟钝的大脑只会让程序出现更多的错误。
不过,不熬夜不行啊,要不然我为什么会在这个时候仍然在写博客呢?原因很多的,比如夜深人静才能静心思考;又比如,白天太忙,晚上才有时间跟朋友们同行们交流;再比如,一到白天就想睡觉,只要晚上才会精神焕发……
如果需要安静的环境,其实22点睡觉5点起床和1点睡觉8点起床有同样多睡眠时间和环境安静的时间,不过22点睡觉你可以得到很好的休息和修复,但1点睡觉你就错过了造血的黄金时间。也许你的朋友们会在22点到1点这段时间找你讨论一些问题,那你为什么不劝劝大家都22点睡觉,早晨5点再起床精力充沛的讨论呢?至于黑白颠倒的朋友们,建议你们花些时间好好调整,因为这已经是健康在报警了。
至于我为什么现在还不睡觉……我不是在写这篇博客希望大家都早一点睡觉么?人多力量大,大家一起来倒倒时差吧!