聊聊程序员的工匠人生

程序员的人生看起来五花八门,可以是Windows系、Android系、iPhone系等,这代码如人生的的IT行业,码农们也具有珍贵的工匠精神。泰山不让土壤,故能成其大;河海不择细流,故能就其深。优秀程序员的价值,不在于其所掌握的几招屠龙之术,而是在细节中见真著。来读一读网友 Hesey小纯纯的描述。

如果我们可以一次把事情做对,并且做好,在允许的范围内尽可能追求卓越,为什么不去做呢?追求卓越,追求完美,追求细节的极致。小时候看到那些修表
匠,握着一个小螺丝刀,或是看着电工,用烙铁沾着锡和松香,在那一小寸的世界里,把坏了的地方修好,那种专注的眼神,觉得很厉害。

现在再去回想那些工匠工作的场景,越发觉得钦佩。在我老家有一家刻章的店,在我上幼儿园的时候就已经在那开了很多年了。前段时间需要刻一个章,发现

那家店还在,于是走进去,门口坐着一个老人,我确实记不得当年是不是他,不过看这岁数八九不离十。我以前在别的地方刻的章,都是在电脑里设计完图案后,激

光刻蚀。但那次老人却是用的手刻,我着实惊呆了。只看他拿出一块红色的印底,右手持着刻刀,开始一下一下地刻着。虽然老人连话都不怎么说得清了,但是工作
时那专注的神情,和精湛的手艺,以及最后成品那比机器更完美的效果,着实让我心里非常动容。

一、技术人的执着

我见过很多人,也见过很多程序员,都有如此的「工匠情怀」。

做产品需求评审,有的人善于快速提供技术解决方案,在最短的时间内解决问题。但我见过的很多牛人,他们除了能在脑海里最快地形成方案原型,并且更深

入地考虑各种细节点,最终能给出一个更趋于完善的技术方案。在他们身上,我看到了对这项职业的自我尊重,对自我价值的追求,也有对「卓越」的理解和渴求。

《精通正则表达式》的译者余晟老师写过他和正则表达式的 缘起
。只是因为项目经理让他「多用Google,查查正则表达式的资料」,余老师打开了正则的大门,读完了英文原版的《Mastering Regular
Expression》,如今成为了国内最了解正则表达式的人之一。

看完那篇文章其实我想起了我的实习经历。那时候我刚去公司两三天,有一天我老板找我让我研究一下如何用Java里的
MappedByteBuffer做文件内存映射来读取大文件。尽管我们当时要处理的文件很大,以我在学校编码的经验看,用普通的Reader也是可以很
好地解决的。

于是我说,「这个其实用Reader也能做,更简单一些,没那么麻烦。」老板反问我,「什么叫没那么麻烦,这是一个做技术的人的态度吗?」那几天我

花了很多时间,去从Linux一直到JVM,去了解什么是内存映射,底层原理是什么,和其它技术的比较、优缺点,并和其它几种读文件的技术做了性能对比。
虽然最后项目没有采用这个方案,但是那句反问直到现在一直在我脑海里,时时地提醒我:「做技术的人,对待技术,应该拥有什么样的态度?」

所以其实我很感谢我的老板,以前他教我们这些新人优秀的职场习惯,有一条是每天的邮件必须没有未读数,即便是不需要阅读的邮件,也要一键置为已读,
不要留一个未读的数字在那。现在想起来,有点像iOS
App右上角那个提醒数的角标,有些强迫症的人怎么也忍受不了有个红圈圈在那。开个玩笑,虽然有些习惯看起来可有可无,无关紧要,但这确实映射了一种态度
和思维习惯。完美有多远?我不知道,但我愿意多往前走一步。

二、拾起初衷

我们的生活,每天很忙碌。有时候忙得自己都忘记了为什么在此处,有时候忙得只能不断地用直觉、用以往的经验去设计一个解决方案,而没有时间去思考需求是不是合理,方案是不是最佳,我们以为自己设计的是最佳实践,谁知道呢?

这个社会,这个世界,处在一个以不可思议的速度向前直奔的时间线上,我们处在这个时代的浪潮之上,每个人都感到了那种令人窒息的紧迫感。父母都是不
希望孩子太累的,我们见过很多这样的话:差不多就行了。糊弄糊弄就完事了。不要与众不同。顺其自然。但是你应该问问自己,是不是真的要 顺其自然 ?

我记得在上大二的时候,听一个叫端木恒的人说过一句话,大意是,这个世界上,政治可以改变很多事情,而科技,可以通过促进信息的流通,最终去推动政

治的变革,去改变整个世界。当时觉得这事儿太酷了,是的,所以我当时的想法是,要去一个技术足够强大,并且对人们的生活有实质影响的公司。希望用技术的力
量去让更多人生活地更好。

这当然是一种不自量力,但又如何呢?只是一个普通人小小的想法,不断追求卓越,愿意比别人多往前走一步而已。就像冯大辉说的:所有人都说你做不成,都告诉你不要去做,不靠谱,嘲讽你,而你最后真的把事情做起来了,这就是牛逼。

做成了,其实牛不牛逼对你自己而言已经不重要了。没做成,所有人都笑你是傻逼,但起码也对得起自己的内心。再说,如果 青年人 想的都是养老和退休,那做事的人在哪?

三、发现更好的自己

在一个完美主义者的眼里,这是一个怎样的世界?

这个社会上很多人在生活上追求更高的品质,但愿意对自己手头所做的事情坚持高标准坚持卓越理念的人已经不多见了,以至于我们发现花再多的钱也买不到

安全的食品了,花了一辈子的积蓄买的房子却有各种质量问题。扪心自问自己在工作中是否能坚持某些东西,大部分人的态度都差不多,只是你糊弄一下不会怎样,
而他马虎一点就会死人,区别仅仅在于这里。

M·斯科特·派克说过一句话:规避问题和逃避问题的趋向,是人类心理疾病的根源。很多人把随大流把妥协作为一种
「成熟」的标志,小时候敢想敢说可能也敢做,长大以后懂得了人情世故,懂得向现实妥协,45度角仰望天空说自己终于长大了。再看身边那些「冥顽不灵」、
「认死理」的所谓完美主义者,认为这些人才是不正常的群体,把这些人要么当做傻逼要么当做装逼。

天哪,我都想问,「这是一个怎样的世界?」

肯定有人会说,站着说话不腰疼。诚然,在生活中,有的人是为了活下去,有的人是为了活得更好,有的人是为了帮助别人活得更好。这是不同的人生阶段,每个人的情况不一样,但这并不影响每个人内心的精神寄托和对信念的追求。

我从不指望去改变别人,但我相信我可以改变自己,虽然也很难。学生都喜欢问,如何最快地告诉自己的能力。说实话,我真的不知道什么是捷径,我的经验
就是和比你优秀的人一起工作,经常请教比你资深的人,不断挑战过去的自己(每天审视自己太紧张了,只要比前段时间的自己更好就可以了)。

四、细节是魔鬼

Devils are in the details,细节是魔鬼,这句话很多人都听过,但要在工作中时时刻刻注意?难。

前几天给同事做Code
Review,就几行代码,发现了一个问题。场景是我们发现某个系统中存在占用内存超大的HTML字符串,需要统计HTML字符串的长度,于是为了获得准
确的字节长度,这段代码调用的是String.getBytes().length,一眼看起来并没有什么大问题。

但是考虑到本身这个字符串就比较大,联想到Java内部是用UTF-16存储字符串的,而getBytes()会转换为系统默认编码(GBK或是
UTF-8等等),这里必然存在底层字符数组的拷贝(可以去参考String.getBytes()的源代码证实),一个本身就很大的字符串,经过拷贝,

将会占用更多的内存,加剧这个问题,而在HTML中,中文其实只占了非常小的一部分,所以直接用String.length(),虽然会少数几个字符,但
对统计结果影响其实并不大,并且这里不存在任何数组分配的开销。

另外建议所有调用String.getBytes()的地方通通显式传入编码,这是个大坑。(陈皓注:用String.length代替
getBytes().length,也是在给未来挖坑——如果未来有人要用len来干别的事,那么这个不精确的len可能就是一个大坑)

另外一个案例,也是在Code Review的时候发现的。

某个调用场景下,每次都会新建一个解析器对象去解析结果,尽管解析器没有任何实例变量不会产生线程安全问题,创建的开销也并不大,但我还是坚持要改成单例,使用同一个实例去处理,这也符合面向GC编程的思想。

这些场景,每天我们都在遇到,也许我们会说这些都是很小的问题,无伤大雅,差不多就行了。但就像前面说的,这是一种态度,一种思维习惯,当你坚持用最高的标准去要求自己,去要求自己的工作时,你才有可能渐渐接近卓越。细节是魔鬼,它会在完全察觉不到的时刻,把人拉回平庸。

「我不是为了输赢,我就是认真。」这不代表我们不在乎输赢,从头至尾我都坚信,只有坚持完美,坚持品质,坚持那些我们曾经了解现在可能已经放弃了的
美好的东西,像一个老工匠,把一种专注、追求极致的情怀融入我们的作品里,也许有一天,就有人,追寻着 梦想 ,发现了 生活更多的可能性
,像乔布斯、像贝索斯,改变整个行业,改变全世界。

我们是被这个时代推上浪潮之巅的人,是去做一个见证者,或是一个冲在最前面也不怕被拍死的傻瓜,是我们每个人选择的权利。只是不要忘记,那些傻瓜,不是真的不怕死,他们只是认真。

作者:牧码人

来源:51CTO

时间: 2024-07-31 08:15:51

聊聊程序员的工匠人生的相关文章

聊聊程序员绩效那点事

刚入职场的时候,对于绩效的概念理解朦朦胧胧,到后面自己做PM,自己开始带团队,带团队以后开始接受公司相对正规的团队管理的培训,到阅读德鲁克的<卓有成效的管理者>,对绩效这个概念有了相对较为清晰的认识,所以在这篇随笔里,我会以自己的亲身体验来讲一讲我对绩效的认识. 1.TOP 1有意思是作为程序员怎么拿到高绩效?这个话题就好像问做什么赚钱的一样, 没有一个非常精准的答案但是有一些普适的道理. a)超出预期: 所谓高绩效一般情况下是要超出期望才有可能,那么这个期望就是给你考评的老板或者主管的期望.

聊聊程序员如何学习英语单词:写了一个记单词的小程序

背景: 关于英文对程序员的重要性,就不多说了! 英语的学习,有很多,今天也不聊多,只聊英语单词! 关于单词的记忆,找过很多方法,下载过很多软件. 如图(其它不好用的都卸载了): 上图算是我以前用过软件,注意,是以前哦~~~ 意思就是没有坚持下来~~~~ 随时间的推移,最后它们还是被我遗忘了~~~ 为什么???不能:坚持!坚持!坚持! 学习思考: 一直在找方法: 1:下载过联想记忆法.背文章记单词,词根,各种视频~~~ 2:连单词的数据库都网上下载了一份了,期望从数据库的直接记忆单词快些~~~ 通

聊聊程序员的积极性问题

我们先好好回想一下,最后一次有人说类似于"哇塞,你就是传说中的代码大神啊!"或者"你的算法真是牛逼!"的言语是啥时候的事了?如果是在不久之前,那么我不得不羡慕,你真幸运. 大多数时候,搞游戏开发.写应用程序以及做前端工作能让我获得更多的客户和同事的反馈.每一个反馈都如同甘霖,滴入我干涸的土壤,让我能够动力强劲.干劲十足.不过我得承认,我得到这些赞美的原因主要是人们对这些工作更感兴趣,即使有时候它根本不如后端的复杂算法难度那么大.这是可以理解的.相对于枯燥的算法,人们

一名程序员如何来地位自己的人生

问题描述 我是一名快要毕业的计算机专业学生,现在在一家公司实习.我主攻语言是java实习才一个月觉得很迷茫不知道如何来定位自己的人生,希望各位给我的建议,如何走好程序员这条道路,非常感谢! 解决方案 解决方案二:有别的机会就别来搞程序.解决方案三:才搞一个月你当然得迷茫了不然你就是天才了解决方案四:------不知道说什么解决方案五:好恐怖啊解决方案六:先别急着定位人生,先努力工作.等工作三四年自然就知道自己想过什么样日子了.解决方案七:珍惜生命远离挨踢解决方案八:迷途的羔羊啊...真的,有别的

程序员的薪资是如何确定出来的?

我值多少钱?我如何能涨薪?这几乎是程序员们最关心的问题了.要想弄明白这个问题,关键就在于弄清楚薪资是如何确定出来的.今天,小编就根据自身的经验,来聊聊程序员的薪资是如何确定出来的? 首先,对于普通开发,薪资是根据能力确定的. 在这个阶段,程序员的工作基本上是被指派的.可能是老板指派的,技术经理指派的,也可能是产品经理指派的.无论哪一种,归根究底就是工作内容是别人确定好的,程序员就只管实现就可以了.既然重点在实现,那么自然谁的技术更好,能更快更好地实现,谁的薪资就更高.这个阶段薪资一般不会超过2万

当程序员是我最大的遗憾

这位有35年程序员经验的老兄在 20年 前本该可以走管理路线,跟乔布斯共事,当上 CTO/CIO/ 工程副总,但是当然他却选择继续做程序员.看着工资是自己 10 倍的妹妹,他现在后悔了.当程序员真的是人生最大的遗憾吗?你遗憾吗? 大概 20年 前我正处在人身过的十字路口.由于 Deltagraph 项目开发了 5年 之后中止,我的第二家公司快要做不下去了.那时候我已经有了 13年 的程序员经验,同时也有大概 9年 经营公司的经验了(同时). 我不再想这两样都做了.我的第一家公司 85-87 不仅

程序员也应该有梦想

        上周跟公司提了离职,给公司的理由是:累了,想休息一下,调整一下.其实这是表面的理由,深层次的理由是,一直还有一个梦想没有实现,那就是徒步川藏线.自从知道了川藏线上的风景,就一直惦记着去走一圈,11年自己一个人在电影院看<转山>,给自己看的稀里哗啦的,或许我本来就是个感性的人,那时候打算12年7月份去走这条线.各种原因一直拖到现在,总是是找到个机会去实现这个梦想了,最难的在于耐心的说服自己的家人,让他们理解,让他们少担心.离出发只有两三天的时间了,各种装备也准备就绪了.想聊聊程序

程序员该如何规划自己的人生

 其实大大小小的文章讨论程序员的人生规划不计其数.本人还是坚持谈谈个人对于程序员日后规划的看法,也是本人做事的一种风格跟对人生的态度吧.希望能给大家有点帮助. 首先我们庆幸的是我们是软件行业的一员,我们作为程序员从最基础的"农民工"开始的,从反反复复的代码中成长起来.我们要为我们的职业感到骄傲才对,他赋予了我们善于动脑的习惯,程序员每天要应对的问题多种多样,我们要快速的思考,不知不觉我们锻炼出了思考的习惯.[当思考成为习惯,成功将随之而至] 思考是前进的本质,我们在当初能进入程序员行业

怎样提高程序员的软实力,走上人生巅峰(http://bbs.jointforce.com/topic/17845?ref=myread)

文章转自<http://bbs.jointforce.com/topic/17845?ref=myread>,感谢作者分享! ---------------------------------------------------------------------------------------- 程序员是一群"死脑筋"的童鞋,总认为提高了自身的编程能力就万事大吉,走向人生巅峰.然而编程能力是硬实力,想要升职加薪,赢娶白富美,还是要靠职场那点软实力!程序员职业不像是别的