各位猿友,LZ有礼了。
上一篇文章LZ与各位猿友讨论了懒与勤快的内容,引起了小小的争议。有支持LZ的,也有批判LZ的。本次开篇LZ准备先让各位批判与支持LZ的猿友露个脸,都是一些热心的猿友。
首先是支持LZ的,这里给出部分猿友的回复,非常感谢各位。
#2楼 class="comment_date">2013-09-11 06:34 | 飞扬青云
楼主就是在静静的时候思考后写下这篇文章的!#3楼 2013-09-11 07:19 | 海之澜
楼主说的着实是个现在猿友们的现状,分析的很透彻#13楼 2013-09-11 09:11 | 冰麟轻武
喜欢你幽默的文字风格#20楼 2013-09-11 10:00 | 火星老蒋
楼主文笔风趣啊,勤快又多思考就能逆天真棒,大家快来逆天先
就这么多吧,LZ这里对剩下没提到的猿友真诚的说声抱歉。下面是批判LZ的,在批判LZ的言论中,主要有以下几点。
1、说LZ是标题党的,这个LZ表示没什么好说的,只能对这些猿友说一声抱歉了,赚了您一个阅读数,以下没有提到的猿友请见谅,可能LZ没找到你的回复。
#12楼 2013-09-11 09:09 | 迷惘小子
请不要标题党~~!! 这样容易引起误会 [羞涩]#74楼 2013-09-11 19:31 | cntnn11
标题党。
楼主换个标题吧《改掉你的坏毛病,它会影响你的前途》#94楼 2013-09-12 10:45 | Albert Fei
一看就是标题党!#30楼 2013-09-11 11:00 | 行动大于一切
纯粹的标题党
2、这第二种是讨论勤快与懒的,涉及的内容五花八门,以下拿出部分猿友的回复。
#7楼 2013-09-11 08:53 | riccc
这标题看到就忍不住想反对
这个问题上升一点层次就可以适用于IT技术工作者群体(包括技术管理者、架构师等专业岗位),即务实跟务虚,有的人只会埋头干,有的人只会吹,两方面都具备就是非常有前途的实干家。#54楼 2013-09-11 13:15 | zhanjindong
我是属于白天很忙(为生活),晚上很懒(为自己)的人。
LZ的观点认同,但是论证的过程不敢苟同。
“ 第二种,他们往往对一些重复且繁琐的工作特别厌烦,更有甚者会经常抱怨连连。他们经常坐在工位上发呆,或是出去抽根烟,上上厕所什么的。”谁知道TM的是真的在思考还是懒得干活在意淫哪个美女呢?
对于刚毕业的新手来说,没有不断的实践哪有静下心思考的资本。#56楼 2013-09-11 13:26 | agassi
Lz的文章说的刚好相反,勤奋的程序员都是善于懂脑子的,懒惰的都是不懂脑的#69楼 2013-09-11 17:52 | 田林九村
我觉得应该动脑和动手兼备吧
有些事情是要去做了才能明白下一步的
勤快的人还是要表扬的,
就怕有些人只动脑和口, 然后把粗活仍给别人
严于律己, 宽以待人#70楼 2013-09-11 17:55 | 树形图
楼主,我觉得再扯,没有一个人是勤快的,自然写程序,也肯定是奔着最省劲,最懒的方法去的,这包括脑力劳动和体力劳动了,这两个是对等的。对于高斯那个熊孩子,我认为他不是用几分钟就想出那个公式的,肯定也下了很多功夫
3、最后一些大部分是让LZ来点干货的,以下是部分猿友的回复。
#91楼 2013-09-12 10:13 | 一文钱
@左潇龙
你说的都对,我只是觉得这种文比较泛滥。多来点干货,让我好好思考,3q#75楼 2013-09-11 19:50 | 树尖
看到第五节,正以为要拉开大幕,大侃特侃时,再往下拉一点,没了。your say a **#79楼 2013-09-11 23:57 | yingsuixindong
思考境界的提高,没给出一些可行的尝试建议
本次LZ这篇文章,主要就是想要尽量迎合第三种批判LZ的猿友们的,也就是搞点干货,同时也是给支持LZ的猿友们更多的分享,另外也希望第二种批判LZ的猿友们继续给予LZ建议。至于第一种批判LZ的猿友们,LZ好似只能表示无能为力了。
下面各位猿友就和LZ一起进入我们的正题吧。
何为用脑子写程序?
看到这个小标题,有的猿友可能想要喷LZ了,LZ你个1+1货,写程序不用脑子怎么写,难道还真把程序猿当成搬砖的了,况且,就算是搬个砖,要是不动脑子的话,也很容易砸着自己的脚的。
LZ还是要劝各位猿友先莫要激动,待LZ一一道来。
回答一下标题上的小问题,用脑子写程序,并不是说在写程序的同时要动脑子的意思,LZ想要表达的意思是,在动手写代码之前,先用脑子在脑子里(有点绕,0.0)把程序写一遍,然后再动手去写,此为用脑子写程序。
用脑子怎么写程序呢?
这个LZ估计每个程序猿应该都有过这种经历,接下来LZ就说一下LZ是怎么写的,仅供参考,不一定适用于每一个猿友。另外,LZ假设完成某个需求需要的时间大约是一天,也就是八个小时,下面LZ就以八个小时的耗费时间为例,给各位猿友分享一下LZ在各个步骤中所花费的大概时间。
第一步:看
将与要实现的需求的相关代码仔细的看一遍,理清楚现有的相关代码的逻辑。
举个简单的小例子,比如我们要给某一个列表增加一个显示列,那么我们可能就要看下这几个地方。首先就要看一下这个列表中的字段值是怎么从数据库查出来的,过后就要看一下查出来的字段值是如何从后台传到页面的,然后再看一下在页面中又是如何显示的。
也有一种情况是,你对系统已经非常了解了,又或者现有的相关代码是你刚做过的一个功能,那么有时候这一步是完全可以省掉的。LZ现在已经大部分都没有这一步了,不过如果不确定的话,还是要稍微看一下的。
这一步按八个小时来算的话,LZ花费的时间一般在半个小时左右,不过也可能为零。
第二步:找茬
现在我们已经非常清楚现有代码实现的逻辑了,而我们要做的就是在此基础上修改一些东西或者增加一些东西,下面这个步骤就该找茬了。
找谁的茬呢?
答曰:找需求的茬。
找需求的茬就是要仔细的想一下,在现在的代码基础上,实现当前的需求会不会有什么不妥。
比如,会不会对原来的功能造成影响,会不会实现起来非常困难或者改动非常大,如果是的话,是否存在合理的替代方案,如果有的话,可以去找产品经理商讨一下。当然还有的时候,应该直接拒绝某些需求,这并不是我们拒绝干活,而是对自己的系统负责任的表现。当然了,如果你做出这个决定的话,必须要有充足的理由说服你的产品经理,或者是业务人员,又或者是项目经理等等。
在这一步中,这一系列与需求相关的问题,就是我们要思考的。LZ一般在这个阶段,思考的时间是最长的。按八个小时来算的话,这个步骤一般最起码要花费LZ四到五个小时左右的时间。
这其中如果发现需求有问题或是对需求有任何疑问的话,也可能包括了与产品经理、业务人员或是项目经理沟通的时间,如果是系统之间接口的话,可能还包括了和其它系统人员沟通的时间。
第三步:在脑子里写程序
需求确认完,并确保需求的可行性以后,剩下的就只是写代码了。不过LZ一般到了这个时候依然不会动手,LZ会在脑子里把程序写一遍。
具体怎么写的呢?
其实就是想好自己要改哪些地方,还有就是这些地方都怎么改,想好以后,再大概想一想会不会有什么问题。就还拿那个特别简单的例子,就是给某一个列表增加一个显示列的需求,那么就大概需要该这么几个地方,以下是针对LZ现在维护的系统来说的。
第一个就是SQL查询语句要改一下,要增加一个查询的字段,之后就要把多出来的这个字段值与程序中实体的某一个字段做个映射关系存进去传到页面,然后就改一下页面,在列表显示的table中增加一列并显示出相应的值就行了。
这就是一个简单的在脑子里写程序的过程,写完以后,LZ一般会再想一想是否有什么遗漏的地方。这整个过程,一般大约会花费LZ半个小时到一个小时的时间。
第四步:真正动手写程序
在上面三个步骤完成以后,一般已经花费了LZ大概五到六个小时的时间,接下来的时间就是将脑子里写过的程序快速的写出来而已。这个过程LZ花费的时间,大约在半个小时到一个小时之间。
第五步:测试
写完之后,还有一点点时间就是要自己动手测试一下了,不过经过LZ实践证明,大部分情况下,这时候写出来的程序几乎都是没问题的。
小总结
以上便是LZ大部分时候去完成一个需求的大致过程,上面的时间是按八个小时算的,如果换算成比例的话。可以看出LZ每个阶段花费的时间如下所示,为了计算方便,以16为分母。(分母。。是不是好久没听过了呢)
一、看:0至1/16
二、找茬:8/16至10/16
三、在脑子里写程序:1/16至2/16
四、真正动手写程序:1/16至2/16
五、测试:1/16至2/16
上面算出来的只是大概的时间比例,实际当中可能会有所波动,但一般情况下,LZ真正动手去写的时间,不会超过1/8。换句话说,如果上司给了LZ一个任务,这个任务让LZ在一天之内完成。那么你将直接看到的现象就是,你会发现LZ只有大约一个小时是坐在电脑前噼里啪啦敲键盘的,还有半个小时是坐在电脑前点来点去测试的,其余时间估计就看不见LZ了,或者是看到LZ在电脑前坐着,却不是在敲代码,而是在干别的事。
这些时间LZ都在干嘛呢?
其实这个很不一定,可能是上厕所去了,或是抽烟去了,又或者是与相关同事沟通需求的事去了,又或者是趁着沟通中一些等待的空挡干点其它的事,比如回回邮件,回复下业务人员的问题,帮助别人的系统解决下问题,或是带带新人等等(LZ的事比较杂,0.0),总之不是在工位上噼里啪啦写代码,但是不要忘了,其实LZ至始至终都在脑子里进行着当前的开发任务,因此LZ依然可以按时并且轻松的将开发的任务完成。
事实上,这并不是对工作懈怠不负责任的表现,从结果就能看出,至少LZ目前依然稳稳的在职,这说明领导是能看出来你到底是干活没干活的,毕竟结果很重要,任务还是按时完成了。而且LZ这里敢负责任的说,LZ这样看似晃晃悠悠一天写出来的程序绝对比LZ坐那一天憋出来的代码质量要高的多,只不过这是对于LZ个人而言,毕竟LZ也说了,LZ的方式不一定适合所有猿友,不过应该是存在一定的参考价值的。
这就需要各位猿友根据自己的情况去吸优排差了,将LZ所说的糟粕除去,然后收下其中的某些精华。
结束语
看过LZ上一篇文章的细心猿友可能会发现,LZ不就是上一章中的第二种程序猿吗?
只是LZ到底是高斯,还是屌丝,或者是鱼香肉丝,就不得而知了。请猿友们帮LZ鉴定一下吧。
觉得是高斯的请大声的喊出来,如果是后两个的话,请大喊下面这句话。
老衲和我的小尼姑们都惊呆了,0.0。
附录
同学们,现在向我们走来的是程序猿方阵!他们穿着拖鞋,披着毛巾,左手拿着键盘,右手举着鼠标,腋下夹着USB转换器。他们因睡眠不足而显得精神不振,喊着微弱的口号走过主席台,主席问候:程序猿们辛苦了!程序猿方队异口同声地答道:Hello World!