用脑子写程序,鄙人就是这样完成一个需求的,您呢?
发布时间:2013-09-13 01:07:00作者:左潇龙阅读(6077 )评论(72)
各位猿友,LZ有礼了。
上一篇文章LZ与各位猿友讨论了懒与勤快的内容,引起了小小的争议。有支持LZ的,也有批判LZ的。本次开篇LZ准备先让各位批判与支持LZ的猿友露个脸,都是一些热心的猿友。
首先是支持LZ的,这里给出部分猿友的回复,非常感谢各位。
楼主就是在静静的时候思考后写下这篇文章的!楼主说的着实是个现在猿友们的现状,分析的很透彻喜欢你幽默的文字风格楼主文笔风趣啊,勤快又多思考就能逆天真棒,大家快来逆天先
就这么多吧,LZ这里对剩下没提到的猿友真诚的说声抱歉。下面是批判LZ的,在批判LZ的言论中,主要有以下几点。
1、说LZ是标题党的,这个LZ表示没什么好说的,只能对这些猿友说一声抱歉了,赚了您一个阅读数,以下没有提到的猿友请见谅,可能LZ没找到你的回复。
请不要标题党~~!! 这样容易引起误会 [羞涩]#74楼 2013-09-11 19:31 | cntnn11
标题党。
楼主换个标题吧《改掉你的坏毛病,它会影响你的前途》#94楼 2013-09-12 10:45 | Albert Fei
一看就是标题党!#30楼 2013-09-11 11:00 | 行动大于一切
纯粹的标题党
2、这第二种是讨论勤快与懒的,涉及的内容五花八门,以下拿出部分猿友的回复。
这标题看到就忍不住想反对
这个问题上升一点层次就可以适用于IT技术工作者群体(包括技术管理者、架构师等专业岗位),即务实跟务虚,有的人只会埋头干,有的人只会吹,两方面都具备就是非常有前途的实干家。#54楼 2013-09-11 13:15 | zhanjindong
我是属于白天很忙(为生活),晚上很懒(为自己)的人。
LZ的观点认同,但是论证的过程不敢苟同。
“ 第二种,他们往往对一些重复且繁琐的工作特别厌烦,更有甚者会经常抱怨连连。他们经常坐在工位上发呆,或是出去抽根烟,上上厕所什么的。”谁知道TM的是真的在思考还是懒得干活在意淫哪个美女呢?
对于刚毕业的新手来说,没有不断的实践哪有静下心思考的资本。#56楼 2013-09-11 13:26 | agassi
Lz的文章说的刚好相反,勤奋的程序员都是善于懂脑子的,懒惰的都是不懂脑的我觉得应该动脑和动手兼备吧
有些事情是要去做了才能明白下一步的
勤快的人还是要表扬的,
就怕有些人只动脑和口, 然后把粗活仍给别人
严于律己, 宽以待人楼主,我觉得再扯,没有一个人是勤快的,自然写程序,也肯定是奔着最省劲,最懒的方法去的,这包括脑力劳动和体力劳动了,这两个是对等的。对于高斯那个熊孩子,我认为他不是用几分钟就想出那个公式的,肯定也下了很多功夫
3、最后一些大部分是让LZ来点干货的,以下是部分猿友的回复。
看到第五节,正以为要拉开大幕,大侃特侃时,再往下拉一点,没了。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!
版权声明:本文版权归作者(左潇龙)所有,欢迎转载。但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
|
|
|
|
|
|
|
|
分类: 编程之路
贫僧的理解,施主的意思是程序猿是执行者,是行动者。可是恕贫僧冒昧,贫僧不觉得程序猿只需要按照上司说得需求去写就是了,需求必须经过程序猿的分析才能开始,哪怕有产品经理的情况下。
施主,贫僧有礼了。
贫僧并没有说程序猿要考虑那么多事,主要是需求的合理性、可行性这两方面。
另外就是,贫僧不觉得程序猿考虑需求的事就是干了产品经理的事。贫僧个人觉得产品经理是把原始需求转化为系统需求的过程,而系统需求是需要程序猿验证并认可才可以投入开发的。而不是说产品经理或者项目经理提出了一个需求,我们就不需要考虑的去做了。
说实话,哪怕是项目经理,他也不一定有你更清楚系统当中添加这个需求会产生什么问题,因为里面的代码是你写的。就更不用说产品经理了,很多产品经理是完全不懂开发的,他如何知道需求对系统的破坏性或是合理性如何呢。
另外,贫僧觉得一个合格的程序猿绝对不能仅仅是一个执行者或者说行动者。
如果冒犯了施主,请施主见谅。
贫僧不否认,这个是有可能的,只要需求让贫僧觉得是不合理的,那确实得和产品或者提出需求者讨论一下了。这个可能跟贫僧的公司流程有关,在有的公司没有产品,需求就是项目经理提的,甚至直接是老板提的,而贫僧是给公司作IT建设的,因此需求都是业务人员提的。但不管谁提的,跟提出人确认好需求是必须要做的,这岂是磨嘴皮子耗时间?不光不是磨嘴皮子,而且还十分重要。
而且就贫僧的工作来说,提需求的业务人员不懂技术,因此有些需求确实很瞎。而产品经理对技术细节的把关肯定是比不过我们这些亲自码代码的人的,因此有时候就需要提出我们的质疑,至少要把一些需要特别注意的地方或者有影响原有功能或者破坏原有数据库设计或者系统设计等等一些问题告诉上司,具体如何做,当然还是得上司说了算。但是提出可能潜在的风险或是问题是我们的责任。
望施主莫要轻视这个磨嘴皮子的事情,沟通清楚很重要,有多少返工重做就是因为少磨了会嘴皮子。望施主三思啊。
施主的话让贫僧受宠若精啊,难道贫僧不知不觉已经具有项目经理的职能了吗。施主谬赞了,贫僧真的只是一名程序猿。
贫僧还是觉得一个合格的程序猿并不是只写代码的机器人,而是需要考虑代码背后的故事的。
贫僧真心的希望各位猿友不要拘泥于那几十几百行代码,觉得那才是我的全部,其它什么需求的合理性了,什么系统的设计了等等就干脆全部撂给上司或他人,然后自己就只管填代码。
刚毕业的时候这样做其实还好,一个是熟练度需要磨练,另外一个是能力也不足以考虑这么多,每天就是闷头写代码,但是慢慢的是要改变的。
而且贫僧斗胆发表一个自己的观点,那就是什么时候你跳出了那几十几百行代码,你也就开始渐渐脱离码农的行列了,开始向一个真正意义上优秀的程序猿开始迈进。
望施主三思,三思啊。
施主的理解能力太差了。。。0.0
贫僧说的八个小时是为了方便去说明每个阶段大约花费多少时间而已,没什么实际意义,要是贫僧加个显示列需要八个小时,那贫僧这两年算是白混了。贫僧尽管才两年工作经验,但是在现在这个公司也呆了一年了,给列表加个显示列需要一天,贫僧敢说施主敢信吗?况且,施主觉得贫僧的项目经理会信吗?
那个列表显示的问题是为了方便说明问题而已,比如第一步看应该怎么看,还有就是第三步在脑子里写程序的时候怎么写。只是为了举个例子说一下这两个步骤大致做的事情以及大致思考哪些问题而已。
贫僧很生气,后果不严重,施主也太鄙视贫僧了。加个显示列要八个小时,贫僧还混什么IT界啊,还是去找小尼姑好了。
贫僧给这位施主一点建议吧。希望能帮助施主走出目前的困境。
从施主的描述上来,贫僧觉得施主最大的问题在于没有把学习和工作分开,而是将两者混为一谈了。
贫僧给施主提几个小建议吧。
1、工作当中,按时完成任务是前提。
2、施主认真思考的态度很好,想不依赖别人独立完成任务。不过度娘和google并不可耻,网络资源是很宝贵的学习资源,只要随着你工作经验的增加,度娘和google的频率在稳步下降,那么就很正常。
3、再接到这种任务时,施主可以尝试一下,在脑子中先形成自己的想法和思路,但是不要去实践,因为这很浪费时间,并且浪费的时间不定。先采用网络上的方式将任务完成,然后再拾起刚才自己的思路,进行自己的尝试。
站内搜索
用户中心
用户名: | 登录 | 注册 | |
密 码: | ||
用户名支持字母,数字,下划线和中文 |
最新评论
随机推荐
纪录一年多来项目管理...
左潇龙2015-03-30
与TCP/IP协议的初次见...
左潇龙2014-09-21
JVM内存管理------杂...
左潇龙2013-08-17
设计模式大杂烩(24种...
左潇龙2013-08-17
五年北京,这个改变我...
左潇龙2016-02-26