For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
程序员中,通常有这样的一种人存在,他们不一定年龄大,职位高,也不一定风趣幽默受欢迎,他们可能平常不怎么爱说话,默默藏在角落敲代码,看上去呆呆的,感觉有点无聊、古怪,甚至还带点神秘感。但是,有一天当青岛IT培训小编看到了对方写的代码,或是和对方有过具体问题的沟通之后,猛然被对方的能力所折服,油然而生敬佩之情。
以下是根据w3cschool小编在对程序员C君的询问中,通过程序员C君对大神的特质归纳、总结,整理如下:
一、简洁清晰的代码
代码不存在任何繁琐的、密集的、多余的、重复的。function长度都不超过半个屏幕,深度又不超过两层closure(不存在for···for···)复杂的那些流程都被组织起来,成为若干小function,或者用多维向量式同步计算。一行代码也不会太长,最多两三个调用步骤(括号)的样子。而且代码文件的长度也很合理。function、class、module、package之类的树根关系和分类,非常理智,按照所有代码的负责范围、功能、主次关系、附属关系、以及调用/引用/公用的顺序条件。什么东西适合单独拉出来,做成一个单独的library/库,也都很有道理。再说,不存在任何奇怪的杂数、变量名、函数名等等。configuration和tests之类的,都很详细完整,又超级干净、易懂。所有types/structs的定义,内的、外的,也都是清楚分类,还有数据库结构什么的,都很灵活简单,又严格。这种严格简化,并不属于格式癖、强迫症等毛病。纯粹是为了让自己和其他读者能够一眼看懂所有代码。代码容易理解,容易更改,更别说容易利用/开启。看到这样的代码,你会感觉非常美,因为用不着任何comments等来说明解释作者的思路。其实这正是作者自己思路清晰的体现。从一开始计划,就已经预料到了整个结构的需求,以及考虑到了未来需求。
二、细致耐心的品质
遇到新问题或是bug的时候,大部分工程师通常会想办法避免,隐藏。比如加个if。其实这种处理方式是治标不治本的,而且这样会让代码越来越繁琐,大大提高未来出现更多bug的概率。高级程序员,他们会焦虑很久,反复把矛盾拆开;理解整个系统哪里不对劲;比如哪个核心假设有错。然后想办法修改整个系统,提高输入输出容忍度,保持整体简洁程度,以及加test。他们这样做,从长期利弊的考虑来看,是相对比较正确的做法。他们在开发新东西的时候,也可能用了更长时间完成,但是这样做是值得的。细致的另外一些优势;他们脑子很清楚每个函数的输出、输入格式,以及函数的责任。更厉害的是:还是熟知每个东西的占用时间和占用资源,(还有complexity),细到每一行,几个微妙纳秒。也知道不同服务器的速度差异,服务器之间的时间距离,线程之间的距离等等。他们知道哪些东西最值得优化。对这些方面都很敏感,也总有一大列自己不满意的地方,追求完美的心不死。随便问一下,他们可以告诉你这个过程在不同情况下的时间和资源需求,也不需要真的去做测试做分析。有时候真的很夸张。
三、灵活应变的独立能力
这种感觉来自他们对新事物的理解掌握速度。这种高能程序员,本来就可定熟悉了至少三四门计算机语言,用过好几百个库。这些经验足以让他们快速看懂其它没接触过的东西,直接下手更改或利用。每次思考新问题,新的项目,一般工程师都是直接开始用自己最熟悉的工具来实现,但是对于这些人来说,总有更多的选择,他们能研究利与弊,同时想办法把将来的复杂程度最小化。如果一定要用自己不熟悉的工具,新的语言,也完全无障碍。或者说,他们可以帮助其他团队解决跟自己领域不太相关的问题。并且提出各种中肯建议,讨论一些人家很可能都没思考过的事情。人家能有这种能力,让人不得不佩服。很多时候自己都没开过这种脑洞,事情突然简单了很多,每次或多或少,都有点惭愧。更夸张的是:他们的丰富经验给他们带来了一种莫名其妙的自信、勇敢。没有适合的工具?好吧,自己写一个出来,没有这种服务、API、功能,自己做一个出来。有时候甚至发明自己的子语言来表达或处理新的一类问题。大家觉得很系统、很基本、很固定,大神们都看作小事,随便主动改一下,或者扩大功能,这些都无所谓了。什么都不怕。还很会替其他团队朋友考虑,经常独立主动开库,把新东西分享给大家一起用,甚至彻底公开、open-source。
四、善做减法的思维方式
这些人时时刻刻都在想办法减少自己的负担。只要一个东西需要手动做两次,他们就会立马想办法自动化。总是写好多脚本负责每天要做的那些无聊事,而且脚本又都是整理得很清楚,自动化的。这些人花了一天时间,却每天减少了别人10-30分钟的时间,或者完全取代了一个职位。为了自己而开发个人小玩意。估计好多天天装逼自恋的同事也都没想过自己每天在浪费多少时间搞小事。而公司根本意识不到它自己本身有多浪费(多二),高级程序员通常都是这样的心态。