美文网首页测试技术学习分享IT技术进阶Android技术知识
顶级程序员的生活是怎样的? 网友: 很后悔, 找不到女朋友!

顶级程序员的生活是怎样的? 网友: 很后悔, 找不到女朋友!

作者: 91216271346a | 来源:发表于2018-04-01 15:56 被阅读53次

       当码农的这几年时间,经历了好几家完全不同类型的公司。具体属于哪些领域范围什么的,这里先不说了 ,身边员工的平均水平已经是很不错的。这种圈子以内,包括自己,基本上没有什么特别明显上等下等之分。但是偶尔会接触到境界更高的那种神人。不一定是年龄最大的。不一定是职位最高的。也不一定是那个最受欢迎的装逼者。反而,往往是那个平时不怎么说话,天天藏在角落打字,看上去呆呆的,感觉比较无聊、古怪的那个谁了。也许好几个月一直都不知道他/她这个人到底在干嘛。直到终于有一天看到了对方写的代码,或者稍微有机会沟通一下某个问题。。。然后迅速感觉到对方的吓人能力。

        这种感觉,并不是刻意比较出来的,而是一种自然发自内心的好奇 ;欣赏-五体投地’敬佩,印象深刻。

        如果你对“顶级”的理解就是 Top 0.0001% ),那我就没话说了,也许一辈子从来都没接触到过。但是至于那些 top 1% 左右到底是怎样的。。。虽然还是比较稀有,但我们也都有所亲身体验吧。

        我们都有时候感到自己与这种人的差距之大,或者一些莫名其妙的自卑。还是可以讨论一下的。据我观察,这些人都有以下几种共同特征:

    1)简洁、清晰代码不存在任何繁琐的、密集的、多余的、重复的。function 长度都不超过半个屏幕,深度又不超过两层 closure(不存在for... for...)。

        复杂的那些流程都被组织起来,成为若干小 function,或者用多维向量式同步计算。一行代码也不会太长,最多两三个调用步骤(括号)的样子。而且代码文件的长度也很合理。function、class、module、package 之类的树根关系和分类,非常理智,按照所有代码的负责范围、功能、主次关系、附属关系、以及调用/引用/公用的顺序条件。

        什么东西适合单独拉出来,做成一个单独的 library/库,也都很有道理。再说,不存在任何奇怪的杂数、变量名、函数名,等等。configuration和tests之类的,都很详细完整,又超级干净、易懂。所有 types/structs 的定义,内的,外的,也都是清楚分类,还有数据库结构什么的,都很灵活简单,又严格。这种严格简化,并不属于格式癖、强迫症、等等毛病。纯粹是为了让自己和其他读者一眼看懂所有代码。

        代码容易理解,容易更改,更别说容易利用/开启。看到这样的代码,感觉好美啊,用不着任何comments等来说明解释作者的思路。说白了,就是作者自己思路清晰的表现。从一开始计划,就已经预料到了整个结构的需求,以及考虑到了许多未来需求。

    2)细致、耐心遇到新问题/bug的时候,大部分工程师只会想办法避免,隐藏。

        比如加几个 if。其实这种处理方式相当于治表不治本。而且会让代码越来越繁琐,大大提高未来更多bug出现的概率。高级程序员,他们会焦虑很久,反复把矛盾拆开;理解整个系统哪里不对劲;比如哪个核心假设有错。然后想办法修改整个系统,提高输入输出容忍度,保持整体简洁程度。以及加test。他们这样做,经常显得效率比较慢,有点烦人。但是个人觉得,考虑一下长期利弊,这样处理问题是比较正确的。

        他们在开发新东西的时候,也可能用了更长时间才完成,一样值得。细致的另外一些优势;他们脑子很清楚每个函数的输出、输入格式,以及函数的责任。更厉害的是:还很熟知每个东西的占用时间和占用资源,(还有complexity),细到每一行,几个微秒纳秒。也知道不同服务器的速度差异,服务器之间的时间距离,线程之间的距离,等等好多。

        他们知道哪些东西最值得优化。对这些方面都很敏感,也总有一大列自己不满意的地方,追求完美的心不死。随便问一下,他们可以告诉你这个过程在不同情况下的时间和资源需求,也不需要真的去做测试做分析。有时候真的很夸张!

    3)灵活、万能这种感觉来自他们对新事物的理解掌握速度。这种高能程序员,本来就肯定熟悉了至少三四门计算机语言,用过好几百个库。这些经验足以让他们快速看懂其它没接触过的东西,直接下手更改或利用。每次思考新问题,新的项目。。。一般工程师都是直接开始用自己最熟悉的工具来实现。

        但是对于顶级的那些来说,总有好多好多选择。他们能研究利与弊,同时想办法把将来的复杂程度最小化。如果一定要用自己不熟悉的工具,新的语言,也完全愿意,无障碍。或者说,他们可以帮助其他团队解决跟自己领域不太相关的问题。并且提出各种中肯建议,讨论起一些人家都没思考过的事。人家能有这种能力,让人感觉好佩服。很多时候自己都没开过这种脑洞,事情突然简单了很多,每次或多或少,都有点惭愧。更夸张的是:他们的丰富经验给他们带来了一种莫名其妙的自信、勇敢。没有适合的工具?

        好吧,自己写一个出来。没有这种服务、API、功能?好吧,自己做一个出来。有时候甚至发明自己的子语言来表达或处理新的一类问题。大家觉得很系统、很基本、很固定的那些东西,大神们都看作小事,随便主动改一下,或者扩大功能,这些都无所谓了。什么都不怕。还很会替其他团队朋友考虑,经常独立主动开库,把新东西分享给大家一起用,甚至彻底公开、open-source。

    4)懒这里说的“懒”,不是贬义的!意思是:这些人时时刻刻都在想办法减少自己的负担。只要一个东西需要手动做两次,他们就会立马想办法自动化。总是写好多脚本负责每天要做的那些无聊事。

        脚本又都是整理得很清楚的,自动化的。懒到什么程度;举几个例子:有个朋友不想查每天的运动比赛怎么匹配(因为不同网站的命名杂七杂八)。所以设置每个小时,只要出现无法匹配的东西,直接给他发邮件链接让他可以点进去处理。

        不仅是个脚本,那个链接也是他自己花了一天做出来的小网站,专门为了处理这种问题。点几次鼠标就完事了。晕!(以前其他公司都没想到这个减少时间的几个手段,还雇佣人专门每天手动核对,呵呵)之前公司有的人需要每次下交易,跟skype的人沟通,下单。最后感觉很烦,写了一个自动程序负责跟这个人自动交流。后来彻底自动化了,包括每天的利润报告都是自动生成。还蛮搞笑的。

        因为那个人说话也像机器一样,都是固定句子格式,可能到现在还没发现对方是挂机程序。(那家公司超懒,几乎所有功能都是chat里面说说的,对方程序接受命令并实现,根本不用手动登陆服务器什么的)以前在一家公司,有个临时工,每天需要填时间收费表等等。还需要加进去各种他用的服务器之类的还有lunch的cost。哈哈。。。最后他也基本上自动化了,直接生成pdf并发送。

    二)。高级程序员都是这样的心态。

    5)性格、背景另外发现了一些趣事。

        这几个人最大共同点就是从很小年龄开始对计算机感兴趣。都是十二岁左右开始写程序解决问题,或者编辑游戏做mod之类的。而大多数后来才认真学编程的人,(大多数人类似吧),根本无法跟上他们的节奏和经验。然后他们都比较安静,不太擅长社交。好像。。。

        很多也都没有男女朋友(?)顶级程序员肯定迷恋于计算机的所有运转细节,根本不想花时间处理人类。有时候显得非常骄傲,但是他们一般都是对的。至少,他们的好多预测都成立了,不仅是公司内部的事,好多科技趋势他们也都早就相通了。

        对我来说,这就是神人一级的程序员。从他们身上能学到好多好多非常有价值的概念。

         欢迎关注我的个人gongzhonghao:大数据开发学习院。添加小编vxin:miaoji997,送你免费学习资料,拉你进程序员社群。

    相关文章

      网友评论

        本文标题:顶级程序员的生活是怎样的? 网友: 很后悔, 找不到女朋友!

        本文链接:https://www.haomeiwen.com/subject/ydfacftx.html