厉害程序员相对于普通程序员的优势在于:
1. 有更高概率做出正确的技术判断,在有多种选择的项目,选择合适的框架,选择合适的算法,选择合适的协议至关重要。比如 ,选择关系型数据库还是NoSQL?选择哪种缓存?选择哪种消息队列?选择TCP还是UDP?高手对技术的各个方面都有深入的理解,对各种技术的优缺点都熟悉,更高概率能选对。任何技术都有短板,高手知道如何扬长避短。
2. 写出的代码更容易排错,不是高手的代码就不会错,而是高手的代码出了错容易找。高手的代码可读性一定很好,模块清晰,命名规范,格式工整,关键的地方有注释,出了异常有log,自然容易排错,即使交给别人去debug也是比较容易的。
3. 厉害的程序员善于解决问题,通常让最好的程序员去解决崩溃,死机和性能问题,这种问题最考验技术功底,需要对系统上上下下有全面深刻的理解,甚至要对OS内核和硬件都有所了解。比如,我们一个工程师负责去解决某些服务器总是死机的问题,最后他调查后怀疑是服务器厂商的主板设计缺陷,导致CPU在进入休眠后有一定概率无法再次唤醒,然后设计了一个测试环境验证了这个问题,反馈给了服务器厂商。这种问题哪是普通程序员能想到的。
我们来谈程序员对性的追求。
可靠性(reliability)
可读性(readability)
可维护性(maintainability)
可测试性(testability)
可扩展性(extensibility)
可移植性(portability)
可伸缩性(scalability)
易用性(usability)
可用性(avaliability)
可重用性(reusability)
互操作性(interoperability)
可管理性(manageability)
可支持性(supportability)
一致性(consistency)
安全性(security)
性能(performance)
稳定性(stability)
精确性(accuracy)
可客制性(customizability)
魯棒性(robustness)
上面都是软件在不同层次下的品质指标,学习软件工程时会谈及。有空再填。
厉害的程序员从不说『这不当初你让我做的吗?』
厉害的程序员从一开始就能识别出那些不靠谱的需求并说服对方放弃或修改。
如果不能说服对方,厉害的程序员就会在设计中留下变更的接口,不把代码写死。等老板客户产品经理过来需求变更的时候,他们也会面露难色,表示变更需要至少X天时间,等产品经理面带愧色离开后,化X分钟把问题搞定然后花时间去做更有意义的事。所以厉害的程序员可能也会加班,但绝不会天天加班。他们不会浪费自己的时间。
厉害的程序员和厉害的销售、厉害的主持人一样,他们对自己所做的工作的内在规律和运行方式有着本质的认识。看他们工作能感受到一种有韵律的美。
===================
解释下什么叫更有意义的事:
为项目(公司)编写更好的开发测试工具包;
优化框架、减少子系统(模块)耦合,将需求变更产生的工作量和代价最小化;
学习更好的技术(开发规范,开发流程),并将其引入到自己的项目(公司)。
这个4年前的问题选择在这个时间点突然出现在我今天的时间线上显得非常 亦可赛艇!
Android是2008年初才发布,而Oracle在2009年就以7.4B$收购了Sun,是Google不够睿智吗?
非也!
1)如果Android没有如此成功,Java对于Google而言就是一坨shit,Google从来没有想到自己会站在一坨翔上面取得空前的成功,如果有算命的告诉Google的命中贵人是阿翔,它就是穿越回去吃也要把它吃下去,可惜历史不能假设!
2)Google一直有python基因,很多系统都是基于python的,你知道工程师主导文化的可怕性吗?这帮pythonic的nerd出于情怀或者节操或者叫清高或者叫偏执或者叫真爱,它说什么都不会去买Java的,“老子看不上”!谁知造化弄人,09年你对我爱答不理,18年老子叫你高攀不起88亿!(注:今天的Google在各种收购之后,Java服务的比重占的也非常大了,变成了一个杂合的技术栈,而官司也很可能打到高院,尚未定论)
3)Google一直有跟开源保持共存共荣共襄盛举的传统,它跟Mozilla做生意,赞助开源项目,捐赠Wiki,主张“不作恶”,简直就是一副乌托邦理想主义者的化身,圈粉无数(包含答主),像Java这种项目,它更可能的方式是烧一笔钱给它花,然后来几句“希望Java明天会更好”之类的废话,它根本就不曾想过有一个家伙抄底了,因为那时候Android根本就没有火,Google从来就没有想过Java也T-M-D算哪门子“底”?
4)Sun的主手人也是个技术型的,就是技术牛掰业务做的稀烂,当时怎么看Sun都处在夕阳,SPARC也是逼格满满业务下滑被Intel捣的稀烂,那个价格没有几家觉得划算的,幸好是Oracle这种剑走偏锋的收购了它,要是换一家公司收购多半就把Sun雪藏甚至捣腾碎了,Java也就没有今日风光了,而Google在坊间也有创业公司杀手的美称,也许这就已经是历史发展的最好结果了。
什么,你问我对于Oracle收购Sun和MySQL怎么看?
还能怎么看?好白菜都让猪给拱呢呗!
但是作为吃瓜群众,我最喜欢看大佬们掐架,Google与Oracle的这场官司绝对酸爽,大家保持关注,各家都有千百号律师,吵起架来想想都 亦可赛艇!学知识产权法/专利法/法理学的同学们千万不要错过,说不定两年后就能进教材作案例呢!
什么,你又问我Google应该怎么做?
靠,我有不是劈柴!按我的观点,Google这次是违反了Java的使用协议的(无意引战,定论的事情留给专业法官),不能因为体量大就以为能压死人,那可是在美帝,万事全靠律师一张嘴,怎么讲都有理!
大家还记得微软以前有个skydrive吗?在英国被判败诉了,最后也得改名叫OneDrive呢!Google有钱了不起啊,过来领罚单!
而Java的坑早早就埋在那里了,所以苹果直接一刀切:老子不支持,免得搞一嘴毛!Flash一身毛病,一刀切,老子不支持!
所以,我对Google的建议是:
这TM不是关乎技术,不是关乎信仰,不是关乎生态,不是关乎用户体验!
这TM关系到命!
什么?要我预测结果?
法官中间调停,你们俩和解,google把赚的钱按每部手机给Oracle付钱?什么你说太扯了?你每买一部Android,都要给微软钱,你造吗?Oracle就想躺着就把钱收了!