程序员生产力(效率)差距大之谜,简单探讨 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
请不要在回答技术问题时复制粘贴 AI 生成的内容
xheruacles

程序员生产力(效率)差距大之谜,简单探讨

  •  
  •   xheruacles Jun 8, 2012 4648 views
    This topic created in 5073 days ago, the information mentioned may be changed or developed.
    首先定义下我这里讨论的程序员。
    1,热爱写程序,崇尚科技,相信技术的力量。(所以那些从北大青鸟几个月就出来只想找好几千的写程序的工作那种不在讨论之列)
    2,有基本的学习能力,且热爱学习。(个人认为这个几乎是程序员的本质了,有学习能力,且热爱学习的出了程序员范围,还真的难找到了。)
    3,想提高自己的效率。

    我常在各处看到各路大神说程序员之间的效率差距真是“何止十万八千里”。我个人算是一个很基本很初级的我所定义的程序员,时常想了解下自己和“牛逼”的程序员之间究竟差在哪里。从程序员是生产高质量代码的工作这个角度,大概思考了一下“牛逼”的程序员生产的代码具有以下几个特点:
    1,好读,好维护。(readability, maintainablity)
    2,灵活,适应变化的需求。(flexibility)
    3,抽象,代码可重用。 (reusablity)
    等等。

    要达到1,我只要学好英文,努力写好每一个变量名,函数名,类名。有清晰的代码结构等等(参看The Art of Readable Code)
    要达到2,我需要尽可能的理解需求,对其领域知识(domain knowledge)有充分了解,这样我才知道需求会有什么样的变化,才能在代码上得到体现。
    要到达3,我需要抽象思考能力,或者提炼重复出现的需求(这里的需求可以指一个函数所需要实现的功能)的能力。同一、类似需求尽量在一个地方实现,也算是解耦,也算是模块化思想的体现。
    当然还有很多别的特点,但是我这里只是想说,“牛逼”的程序员写出来的高质量代码我也是可以做到的。
    但是为什么“牛逼”程序员用的时间比我少?效率比我高?
    我大概认为有几点:
    1,英文好
    2,打字快
    3,用的语言非常好的支持灵活、抽象(据说用lisp的hacker都很牛逼)
    4,学得快,不管是学新语言,还是学新的领域知识
    5,等等。。。。。

    大家都有什么看法?
    6 replies    1970-01-01 08:00:00 +08:00
    vicalloy
        1
    vicalloy  
       Jun 8, 2012
    2,打字快
    -----> 其他的没仔细看,但这点不成立。真正敲代码的时间只占到很小的一部分。
    rivsen
        2
    rivsen  
       Jun 8, 2012
    我感觉个人的做事的方法正确与否会影响工作效率,即使具有相同的知识储备的两个人,如果他们中有一方做事方法不够科学,很有可能就会影响两个人之间的工作效率差距
    zealot
        3
    zealot  
       Jun 8, 2012
    经验,或者说厚积薄发。

    即便是个简单需求,写出好代码的话需要涉及到很多个方面。
    对于新手,要么写出一个丑陋但还能凑合用的东西;要么挨个深入研究学习,将每个极小的点做到尽可能的"完美"(这里"完美"指已知的、一致认可的最佳实践,而不是那些虚无缥缈的追求)

    例如,根据pid判断进程是否存活。新人需要查阅资料、手册,甚至是参考开源代码,可能还要跟其他人一起探讨。查到资料后,还有收集更多信息来对比孰优孰劣。对比/proc fs、ps aux|grep pid、kill(pid, sig=0)。而根据新人能力不同,可能需要耗费半天甚至几天时间彻底弄透。但是,经历过这个过程的程序员,1分钟就能搞定。1分钟 vs 几天,这就是最常见的生产效率差异。

    再比如,记log的方式,需要考虑哪些因素;优雅重启;可运维性;可配置;监控与报警,等等。有经验的程序员充分研究和实践过后,则能厚积薄发。他们1分钟的代码背后可能蕴含着好几天的努力学习,这个过程是新手难以在短时间内复制的。

    当然,很多时候新人也能把开发时间缩短到比较接近有经验的程序员,但是没有足够的最佳实践钻研与积累,质量上是有差距的。
    生产效率的巨大差异,前提必须是新人也做到跟老鸟同样的"完美"("完美"同前面解释)
    xlaok
        4
    xlaok  
       Jun 8, 2012
    专注,我就特别不专注,效率有的时候奇高,计划一周的事情一个晚上能做完,大部分时间就是不专注,不知道自己在想什么,刷着网页一天就过去了,比如现在...
    zealot
        5
    zealot  
       Jun 8, 2012
    @zealot 补充一下,新人自然是可以站在前人肩膀上快速成长。
    所以这几点比较关键
    - 有前人指导
    - 踏实肯学,必要时需要系统性学习
    - 勇敢的放弃舒适区,去非舒适区寻求更大成长
    - 团队内部互相、频繁CodeReview,互相学习,及时发现自身问题
    - 最后一点很关键,足够的时间去投入到技术中,大学混四年,毕业后写个两三年代码就嚷嚷着IT码农老了后没饭吃,拼命转管理,这种团队内部技术成长与积累都会有很大问题
    xheruacles
        6
    xheruacles  
    OP
       Jun 8, 2012   1
    About     Help     Advertise     Blog     API     FAQ     Solana     1013 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 37ms UTC 19:11 PVG 03:11 LAX 12:11 JFK 15:11
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86