[探讨]优秀程序员和一般程序员差别在哪?

[探讨]优秀程序员和一般程序员差别在哪?,第1张

还记得研发频道此前发表过的一篇《白班程序员 VS. 夜猫子程序员》吗?在这个世界上有两种程序员,我们称之为:Day Programmers(白班程序员)和Night Programmers(夜猫子程做橘序员)。本文我们将探讨优秀程序员和一般程序员有哪些差别,看看您是属于那一种?来自知乎网上的大牛们各抒己见,一起来看下他们是如何区分的。创业者郭凛:如果纯以编码能力来看,可分为五类1. 拷贝型拷贝型选手就是传说中的“代码拷贝员”了,他们对实现功能几乎没有思路,所作的事情就是从网上或是之前其他团队成员写的代码中拷贝出片段,然后放到项目中,如果运行项目出现了期望结果,则表示任务完成。这类人只会改代码,却不会写代码。他们大多对编程毫无兴趣,只是希望以此糊口而已。2. 新手型当产品有功能需求时,由于经验有限,程序员并不完全知道要如何实现这个功能,需要通过学习、寻找资料等方式来解决问题。这种情况下的编码过程,程序员的主要目标是“完成功能”,那么很难有多余的心思去考虑边界条件、性能、可读性、可扩展性、编码规范等问题,因此代码bug可能较多,稳定性不高,常常会发生开发花费1个月,改bug却要改上好几个月的事情。3. 学习型这类程序员对所在领域的语言已经比较了解,对于一般功能可以有较为清晰的实现思路,给出需求时可以通过自己的思路来实现,并且会一定程度上考虑边界条件和性能问题。但仅此而已,他们对可读性和可扩展性考虑很少,也没有项目级别的考虑,主要是希望通过实现代码来练手或是学习。这类程序员最大的表现在于喜欢“创造代码”,即使有现成的实现,他们也希望自己来实现一套,以达到“学习”的目的。他们不喜欢复用别人的代码,看见项目中别人实现了相类似的功能,他们会以“需求不同”的借口来自己重新实现一套。这类人一般来说对技术有着较为浓厚的兴趣,希望能够通过项目来进行学习。从项目的角度来说,这种做法最大的麻烦在于开发周期可能较长(相比直接使用现成的实现),并且会使得项目代码膨胀,影响未来的维护。但这类程序员由于有兴趣,如果好好培养或许会成为明天的牛人。4. 实现型这类程序员一般有较为丰富的经验,由于写得太多,因此不再追求“创造代码”来进行学习,同时对所在领域可能涉及的很多第三方框架或是工具都比较熟悉,当接受到产品需求时,对功能实现方案已经了然于胸,因此他们可以快速的实现需求,并且对边界、性能都有一定程度的考虑。因为能够快速实现需求功能,经常会被团队评价为“牛人”。但他们一般仅仅停留在“完成功能”级别上,对代码的可读性、可扩展性、编码规范等考虑较少,对项目总体把握也较少(例如控制项目膨胀、方便部署等架构级别的东西)。这类程序员最大的表现在于喜欢“开发项目”,却不喜欢“维护项目”。他们产出的代码最大的问题就是维护较为困难,可能过上几个月回头看自己的代码都会晕头转向。因此即使是自己写的代码,仍然不愿意维护,一般会苦了后来人。因为接口设计的缺乏,当需求变更时,发现代码要改的东西太多,然后抱怨需求变化,却很少认为是自己的代码问题。这样的项目如果经过长时间的变更维护,最终会变得难以维护(一般表现在需求变更响应时间越来越长)甚至无法维护,最终要么是半死不活,要么是被推倒重来。5. 架构型这类程序员比实现型更进一步,他们经验丰富,对相关框架和工具等都很熟悉,“完成功能”、“稳定性”、“性能”这些已经不再是他们的追求,更优美的代码、更合理的架构才是目标。这类程序员代码设计大多建立在对需求的详细了解和对需求变更的预测上——可扩展性较好;代码细节也尽量多的考虑边界情况、性能——稳定高效;代码命名和注释都恰到好处——可读性较高;同时和胡谈在开发过程中他们会不断重构,对代码做减法——保证项目可持续发展等等,但由于考虑问题较多,单从“实现功能”阶段来看,完成唤碰速度不一定会比“实现型”要快。只是到了项目中后期优势才会慢慢体现出来。知乎删代码工程师 安江泽:创造型、管家型、学院派、钟表型、折腾型1. 创造型/创新型以创造/创新为乐的程序员。以新的方法解决现有问题,发明方法解决尚未解决的问题。问题本身并不限于技术领域。硅谷很多技术创始人具备这类的品质。虽然他们创业后都不再全职写代码,但他们这种品质贡献了他们事业的第一步。2. 管家型以管系统演化为乐的程序员。有洁癖,有强迫症,容不得系统有一点的瑕疵。如果你招聘了一个程序员/架构师,2-3年后你的互联网产品再也没有在可见/可扩展性上遇到瓶颈,他多半是这种程序员。3. 学院派型通常在CS某一领域拥有博士学位,或者深受他们的影响的人。对该该领域兴趣浓厚,通常参与企业核心竞争力相关的研发工作。当然,也有一部分也具备第一种特质,中途去改变世界去了。4. 经验型在行内具有多年丰富的经验,可承担责任,考虑全面。团队拥有了这种人,通常会少走很多弯路。但面对新的挑战还是要和其他人站在同一起跑线上的。5. 钟表匠型喜欢并擅长把一个系统从里到外研究通透的人。分享出来都是从里到外让人垂涎欲滴的干货。很多后端工程师都是这种类型。6. 折腾型擅长“折腾”,方案没有最好的,只有最难的。兴趣广泛动手能力强,通过折腾留下很多技术积累。想用哪一块的新技术?先问问他把,8成他很久前就已经玩过了。7. 肉盾型哥甲高血条长,加班如同切菜一般,逼急了不睡觉也行。只伸手要过两件东西:原型和咖啡。适合打闪电战。当然,可能事后要打打后勤重构下代码。iApp4Me创始人、iOS开发者郝培强:七大标准 逻辑思维很重要优秀程序员的标准:要懂逻辑,这点其实挺难达到,很多很不错的程序员其实逻辑能力不行,所以我觉得限制了他们更深一层次的发展,或者说限制了他们解决特别复杂问题的能力。要有分析能力。这也是解决复杂问题不可或缺的能力。要会自学,技术发展速度很快,如果没有自学能力会被淘汰的。所以在中国英语要好,不然看不懂最新的技术走向。要有良好的时间管理习惯和意识。要有耐心,肯于付出。要有良好的工作习惯。会看且勤于看文档。产品管理、IT项目管理 何明璐:优秀程序员具有较明显的自恋和偏执特征对编程有浓厚的兴趣,由兴趣能驱动自己的探索和钻研精神,优秀程序员一般喜欢用业余时间探索和自己琢磨点东西,研究点开源框架和源代码,关注新技术,喜欢研究和探索算法,逻辑方面的内容。优秀程序员一般比较懒于做重复的事情,对于重复事情有独有的程序员思维,即通过程序或其它自动化方式解决重复问题,而留更多时间去思考。优秀程序员更多的会从简单功能实现,花哨的界面转移到对安全,性能,可扩展等底层架构的关注。优秀程序员一般有较明显的自恋和偏执特征,有较为希望独自工作的特征,比较难于被非技术背景管理者驾驭,高度强调自我能力价值的被认可,而且很多优秀程序员并不是好教练。优秀程序员一般有较为扎实的算法,数据结构等理论知识的基础。这些让他们在迅速进入新领域的时候快人一筹。总结:不管是优秀程序员还是一般程序员,小编认为只要你喜欢思考,爱学习,对编码有兴趣,那么你就是最好的。当然掌握技术才是硬道理,套用别人的一句话“不想当CEO的程序员,不是好的产品经理”。程序员们,加油吧!

众所周知,雷军本就是一位超级厉害的程序员。他曾经这样评价自己的编码水平:“我没写过诗,但是有稿陆缺人评价我写的代码像诗一样优雅。”

好吧,有被凡到。

尽管很多人曾因为雷总过于浓密的发量而怀疑他作为程序员时的水平。但是从雷总的语气中我们可以感觉到他对于自己编码能力的自信。

不得不承认,同样是程序员,普通程序员和大神的差别是巨大的。

当普通程序员尝试重构一个简单的模块

当大神级程序员重构代码

普通程序员做的多线程

大神级程序员做的多线程

是否过于真实?刚入门的小白程序员流下了羡慕的泪水。。。

另外,据不权威调查显示,大神程序员的生活作息远不同于普通人类,基本上是昼伏夜出。果然,大神早已非正常人类,不食人间烟火。有图为证(第一列是时间,第二列是代码行数。)

这是FFmpeg的作者FabriceBellard的编码时间表,能看出来,越到晚上灵感越强啊。额键辩,不过,这位大佬是会睡着睡着觉灵感突发蹦起来提交代码的吗……

而这是LiveJournal的作者BradFitzpatrick在memcached项目上的时间表。

典型的夜猫子,昼伏夜出,每天只睡四个小时。

仁慈的独裁者,Python之父Guidovan Rossum同样是一位暗夜使者。

美好的一天从下午开始,夜晚才是灵感的源泉。不过大佬好像真的不用睡觉的。。。。

而在夜行者之上,更有一种恐怖存在,他们宣告了永动机是可以实现的,因为他们自己,就是永动机。。。

“世界上最好的语言”PHP的创始人RasmusLerdorf,便是其中翘楚,这是他在php-src项目上的提交时间:

果然是大佬,白天正常工作,晚上更加兴奋。果然,真正的大神都是突破人类身体极限,完全不用睡觉的。

当然了,以上这些呢不过是一些极端案例,他们虽然是真正的大神,小渡也绝不建议小伙伴们学习这种作息习惯。不然很有可能,技术没学到,发量却比大神还少。。。

而在日常的工作中,大神对于小白的碾压更是全方位无死角。

注:reinventing the wheel 重新发明轮子

果然,大神的工作都是独出心裁的。

额,不过这么一看嘛,菜鸟和大神好像差不多。。。。

大神的反应总是波澜不惊的,好像没什么成就感。。。

离谱。。。。

笑出自信,笑出强大!

看到大神们种种不同凡响的表现,小伙伴们有没有心生向往?不要灰心,只要努力,假以时日你一定也能像雷总那样,写出诗一样优雅的代码。

要想真正的成为大神,要脚踏实地,有的放矢,为自己设立目标,不断向目标逼近。

至少要做到以下几点:

程序员之所以被称为“大神”,顾名思义便是在专业领域他们无所不能。所以,大神之路第一步就是补全自己技术上的短板,项目出现任何技术难题时,只要自己出马便能发现问题所在,从而找到解决方法。

多隆就是这样一位全能的大神,“只要有技术上的困难,找多隆,没有解决不了的”这是在阿里技术人员内部流传的一句话。

对于编码技术,多隆便是武侠小说中已臻化境的绝顶高手,从2003年到2007年,搜索引擎工作一直都是多隆一个人负责,但这不是他所有的工作,因为他解决问题的能力是惊人的。

多隆一个人能顶一个团队,别人做事可能要成立一个项目组,而他从头到尾都是自己一个人,即使他负责的事情以前从没有接触过。

阿里研究员毕玄曾举例说:“五彩石项目多悉茄隆完成了商城搜索的dump逻辑,当时如果没有多隆,整个项目需要延后2周;还有一次,淘宝session框架调用session_tair故障,一堆人(应该有10人+)一起排查问题,从6:00排查到第二天的6:00,最后多隆查到了问题。”

而达到如此境界,与多隆自身的特质分不开。当他沉浸在他的程序世界时,外界的人和事很难干扰到他。他不擅交际,也不玩什么社交网络,一般很难在公众场合见到他,只要能不参加的会议、采访,他都不会参加。

就算去,他也常常会带上笔记本。据说他也曾经带着笔记本去outting,在车上写代码……

而且尽管被同事们顶礼膜拜,多隆依然谦逊,他说:“我就是个写代码的,很普通”。

从多隆身上我们也能看到,想要成为大神,首先就是要静下心来沉住气,认真研究代码,不断学习进步,完善技术,让自己不再有短板。

理想是最好的指引者,对于技术行业尤其如此。

很多人在成为程序员之初,都抱有改变世界的想法,想象着运用自己的编程技术来为未来的世界增添色彩。而真正能将这种想法坚持到底的人可谓是凤毛麟角,但这恰恰是成为大神程序员的重要特质。

支付宝OB数据库团队的队长阳振坤就是这样一位典型的理想主义者,在他的职业生涯中遭遇了太多的挫折和失落,但他始终保持着一个技术人员的初心,坚持理想,不曾退让。

阳振坤曾是北大的学术明星,北大本硕博一路念完留校任教,不但破格晋升教授,还成为北大首批「长江学者奖励计划」特聘教授之一。他的理想就是攻克分布式系统难题,建成中国技术人自己的分布式数据库。

在加入百度之后,他集中一切精力来进行数据库的开发,然而尽管他主导的分布式系统在性能上已经超过了开源系统,百度仍然以成本太高为理由解散了他的团队。

随后他加入阿里,阳振坤继续做分布式数据库研发,他的团队从零发展到十几人,捣鼓出中国第一个分布式数据库,他们给它起了个名字叫OB。

然而,同样因性价比的问题,阳振坤和他的OB团队在阿里坐了冷板凳。这一彼时仅有十几个人的团队曾在长达三年多的时间里,孤独而边缘。

很多同事都说,“如果阳老师愿意妥协,放弃OB,转去做开源系统的技术优化,早就拨云见日了。”

但是,那显然不是他想做的事情。

不过相比于百度,阿里对于“无用”的创新有更大的包容,OB最终被并入了支付宝。彼时的支付宝,面临着一个世界级的难题:双11的交易量呈几何级增长,未来势必还将继续呈几何级增长,可是支付宝当时用的甲骨文数据库早已经承受不了这么庞大的数据量。

为了应对双11这天的数据,只能再花数亿千万人民币的价格去购买主机,可在交易恢复常态时,昂贵的主机旋又陷于长期闲置状态,这样未免得不偿失。

因此OB这一还未正式上过「战场」的数据库,被支付宝高层认定是解决双11支付峰值这一世界级难题的「钥匙」。OB最终也不负众望,帮助支付宝攻克了这一难关。

2016年5月,时任蚂蚁金服董事长彭蕾亲自将支付宝内部最高荣誉——CEO大奖「勋章」戴在了以阳振坤为首的OB团队成员的脖子上。

从阳振坤的身上我们可以感受到,理想或许会让我们一时间陷入困境,但如果我们坚持下去,会带给我们更大的回报。

这是老生常谈,却也是最重要的一点。这是每一个想要突破自我的人所必备的特质,也是每一个大神程序员依旧在坚持的习惯。

即使多隆在阿里早已封神,但是他仍然每天醉心于编程的世界,研究各种代码,不断强化完善自己的技术。

即使阳振坤和他的OB团队已经为取得了阿里的最高荣誉,他们仍然在每一次维护和升级中不断地为OB数据库做出新的改进和尝试,向着更高远的目标进发,他们期待着有朝一日OB可以超越IOE,成为世界上最棒的分布式数据库。

每一个大神,都是由小白蜕变而成的。大神若不再努力,早晚会跌落神坛,泯然众人。而小白们只要坚持学习,不断提升自己,终有一日也会成为自己曾经仰望的大神。

每个大神的“封神之路”都有各自的精彩,但是也有着共同点,那就是:专注、热爱、持之以恒。当然,每个领域的大神都是极少数,我们大多数人可能用尽全力也赶不上天赋异禀的人的轻松一步。

但是我们努力不是为了赶上任何人,而是为了成为心目中那个更好的自己。

就像现在正拼搏在残奥会赛场上的残疾健儿们,他们早就丧失了和正常人一样生活的能力,但不妨碍他们依旧热爱生活,依旧为了梦想去拼搏,去创造正常人都难以企及的记录。

所谓奥运精神不光会激励赛场上的运动员,也会时刻提醒我们每一个平凡的人,向着心里的顶峰奋力冲刺。

保持心中那份对于梦想的执着和渴望,我们终将会突破自我。加油,未来的大神。

不管我是不是程序员做什么工作也好,其实我都是个夜间活动物种,夜猫子一个,可能是大学期间通宵习惯了,白天没有精神,只要是到了晚上12点就精神百倍,两眼发光的这种,我相信很多小伙伴都跟我一样吧。

作为一个晚上经常熬夜写东西的人,我也想说几句.单纯比较效率的话,自然是上午最高,下午次之,再次晚上10点到2点,最后是晚上3点到6点的阶段.没做过Geek,所以不懂得Geek的感受,但是做科研的感受还是非常多.做科研的有一部分人也是习惯熬夜,大体有如下几个原因:

1.白天做实验,晚上分析数据,写总结,找文献等等.其实这种生活规律,最档销晚到1点就能行指游做完,不必熬夜太久.

2.白天仪器状态差,晚上仪器状态好,所以要熬夜做实验.这种生活规律的常见主要依赖AFM (原子力显微镜), SEM,TEM出数据的人.因为白天的干扰太大,仪器的数据质量跟晚上相比,能差不少.同时,测试条件的稳定也对仪器逗源的数据质量有直接的影响,所以不得不熬夜.这类人群往往长期熬夜,黑白颠倒,直到积累了足够多的数据,就很少做试验,专心发文章了,那个时候也就调整回了正常的作息时间.

小编推荐一下自己的web学习qun:730227513,qun里每天更新素材/视频教程/干货,进qun就送全套学习资料,跑堂的不要加

3.实验安排没办法,需要通宵做.比如某些需要监测反应进程的试验,半个小时处理一次,一个小时取一个点记录,连续24h之类的.这种情况往往是短期内需要连续作业,一般不超过一周时间.

4.突发情况,比如老板突然给了一个综述的任务,要一周之内交货,或者下午给任务,第二天就要的那种情况.这属于没办法,只能兵来将挡,水来土掩.此情况很少发生.

5.白天干扰事项太多,没状态,只有晚上有大块的不被干扰的时间能够好好思考,处理试验.除去以上四点,这一点的人能有不少,说好听点是努力拼命,其实就是时间管理差,或者说拖延症患者.我就属于这类.

所以,第五点钟q的人,抓紧时间改掉自身的毛病才是正途.后半夜效率异常高,不是真实情况,而是自我感觉和自我欺骗而已.


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12336888.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-22
下一篇2023-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存