「我只是认真」聊聊工匠情怀
老罗的Smartisan T1手机发布会很多人应该都看了,发布会的最后老罗凝视着自己的工匠自画像,半晌没说话,随后转过身,慢慢离开舞台,屏幕下方只留下一句话:
我不是为了输赢,我就是认真。
这一瞬间让我想起93年「狮城舌战」的主角蒋昌建,在「人性本善还是人性本恶」的总结陈词最后,以顾城的名句,「黑夜给了我黑色的眼睛,我却用它寻找光明」,把整个辩论赛的氛围推向高潮。
而老罗的这句话,和这句话背后的工匠背景,却以另外一种无声的却震人心魄的力量,敲打着每一个在场的,或是观看着整个发布会的观众的心绪。
「工匠情怀」,我深有体会,就像我在 面向GC的Java编程 一文中所提到的:
优秀程序员的价值,不在于其所掌握的几招屠龙之术,而是在细节中见真著。
如果我们可以一次把事情做对,并且做好,在允许的范围内尽可能追求卓越,为什么不去做呢?
追求卓越,追求完美,追求细节的极致。小时候看到那些修表匠,握着一个小螺丝刀,或是看着电工,用烙铁沾着锡和松香,在那一小寸的世界里,把坏了的地方修好,那种专注的眼神,觉得很厉害。
现在再去回想那些工匠工作的场景,越发觉得钦佩。在我老家有一家刻章的店,在我上幼儿园的时候就已经在那开了很多年了。前段时间需要刻一个章,发现那家店还在,于是走进去,门口坐着一个老人,我确实记不得当年是不是他,不过看这岁数八九不离十。我以前在别的地方刻的章,都是在电脑里设计完图案后,激光刻蚀。但那次老人却是用的手刻,我着实惊呆了。只看他拿出一块红色的印底,右手持着刻刀,开始一下一下地刻着。虽然老人连话都不怎么说得清了,但是工作时那专注的神情,和精湛的手艺,以及最后成品那比机器更完美的效果,着实让我心里非常动容。
目录
一、技术人的执着
我见过很多人,也见过很多程序员,都有如此的「工匠情怀」。
做产品需求评审,有的人善于快速提供技术解决方案,在最短的时间内解决问题。
但我见过的很多牛人,他们除了能在脑海里最快地形成方案原型,并且更深入地考虑各种细节点,最终能给出一个更趋于完善的技术方案。
在他们身上,我看到了对这项职业的自我尊重,对自我价值的追求,也有对「卓越」的理解和渴求。
《精通正则表达式》的译者余晟老师写过他和正则表达式的 缘起 。只是因为项目经理让他「多用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编程的思想。
这些场景,每天我们都在遇到,也许我们会说这些都是很小的问题,无伤大雅,差不多就行了。但就像前面说的,这是一种态度,一种思维习惯,当你坚持用最高的标准去要求自己,去要求自己的工作时,你才有可能渐渐接近卓越。细节是魔鬼,它会在完全察觉不到的时刻,把人拉回平庸。
「我不是为了输赢,我就是认真。」这不代表我们不在乎输赢,从头至尾我都坚信,只有坚持完美,坚持品质,坚持那些我们曾经了解现在可能已经放弃了的美好的东西,像一个老工匠,把一种专注、追求极致的情怀融入我们的作品里,也许有一天,就有人,追寻着 梦想 ,发现了 生活更多的可能性 ,像乔布斯、像贝索斯,改变整个行业,改变全世界。
我们是被这个时代推上浪潮之巅的人,是去做一个见证者,或是一个冲在最前面也不怕被拍死的傻瓜,是我们每个人选择的权利。
只是不要忘记,那些傻瓜,不是真的不怕死,他们只是认真。
(全文完)
(转载本站文章请注明作者和出处 酷 壳 – CoolShell ,请勿用于任何商业用途)
《「我只是认真」聊聊工匠情怀》的相关评论
这次居然占了沙发
上大学的时候就和隔壁的同学一起听老罗语录
传播工匠文化,争取影响一代人呀
造出”痛苦”这个词的, 很可能并不知道真正的痛苦是什么样.
罗永浩这种”工匠精神”, 跟我看到过的”妈妈母亲节快乐”连一个账号都没有@的微博, 并没有本质区别.
沐剑的文章写的真棒,去年暑期实习的时候,每天看看你的邮件就觉得收货颇多,有次听你的分享,你对线上系统异常娴熟,对开源工具的使用异常熟练,对细节的探究和执着真的让我异常敬佩。七月初就入职了,希望自己能够从你身上学的更多。
象牙塔里,认真是可以、甚至是必须的。
现实、项目里,更多时候,需要与时间、金钱、人力做妥协。
另外,前英语老师的老罗,海报底部的公司信息,technology都写成了techology
还能拿认真说事吗?
不过最近粉丝说,就是techology,不是technology
细节是魔鬼
居然上班有时间写日志,牛B人.
说的很好,但是现实有点时候真的很残酷。
@ghostfire
谢谢,你是?
世界上怕就怕’认真’二字
–毛主席
@haitao
有时候少一点对别人的要求,做我们自己认为正确的事情就可以了。
“工匠”“情怀”,从罗永浩的嘴里说出来都是扯淡。我不知道他是只是想用来骗别人,还是把自己也骗了。
还有文章最后一部分举的例子:如果我有时间肯定是先分析性能瓶颈在哪里,再根据优先级从高到低一个个改。就自己被自己感动,然后做些无用功,对最后的产品有帮助吗?
问题是老罗正好就是对别人要求多,对自己。。。。
转一个:
http://weibo.com/p/1001603713670243830537
当年看那篇文章,觉得老罗写的不错,今天看就觉得更赞。那篇文章一开头就无情的嘲讽了魅族mx2学了iphone4很丑的马脸,其实mx2绝对没有锤子手机那么像iphone4,我刚看到锤子的时候,以为是放错了iphone4的图。老罗说魅族可以打开后壳不能换电池的设计是智力问题,锤子不但一样打开后壳不能换电池,还附赠了卸壳工具,尽管这是为了换sim卡,但我同样不理解为什么放上俩螺丝会比边框开个槽美观。还有老罗认为二x逼产品才会让用户随心所欲换彩壳,这一点锤子用多彩背夹电池完美的再现了,同时也像老罗说的前黑后白设计特别业余。老罗说魅族突起的home实体键容易误触是弱智,所以锤子一下用了三个实体键。除此之外,还有解锁从底部上划是黄章不懂心理学,dock上只有三个图标等等,基本骂的大多项魅族设计的弱智问题都在锤子上得到了继承和体现。而因为有人用左手就在两边都加上调节键的逻辑我同样很难理解,因为我们人类有拇指和食指,你不管爱用哪只手,都不会影响你调声音。而实际上,手机音量键在左边右边都很常见,这并不是一个有价值的痛点。而且我负责任的说,锤子手机按键的高度极其有问题,非常容易在拿起的时候误触导致突然音量增加,我非常有经验,因为华为x1就在这个位置,每天至少吓人两次,尤其是偷偷玩游戏的时候。至于老罗常年说的屏幕不会超过3.5寸,我就不计较了。
我并不是对老罗有意见,也没说他在自抽,我只是认真罢了。
我也投稿吧,我写了三篇随笔,关于老罗的发布会。
[142]不被嘲笑的梦想是不值得追求的梦想:观老罗发布会随笔(1)
http://www.scalerstalk.com/142-smartisan
[143]廉价的批评质疑与建设性意见:观罗永浩发布会随笔(2)
http://www.scalerstalk.com/143-critics
[144]热爱这个世界并与之和平相处:观罗永浩发布会随笔(3)
http://www.scalerstalk.com/144-peace
评论带链接不知道会不会block啊……如果打不开就用梯子……
简单的说,这世界上认真工作的人很多,轮不到老罗来教诲。
大家做好自己就好了,很多人不喜欢这样造神似的宣传。
当然,这是一般而言,对于需要听老罗语录才能开启自我思维的人
也许有个神,有点信仰对他们来说比较好。
@Jing
的确,现实社会,单纯认真是很难成功的
锤子如果能成功,认真最多只是5%,95%是因为老罗的名气大
老罗对别人显摆自己的认真,专门说别人的缺点
别人找出他的缺点、不够认真了,有人就说:少一点对别人的要求。。。
只许喝鸡汤,不许警醒
我只是认真
“某个调用场景下,每次都会新建一个解析器对象去解析结果,尽管解析器没有任何实例变量不会产生线程安全问题,创建的开销也并不大,但我还是坚持要改成单例,使用同一个实例去处理,这也符合面向GC编程的思想。”
什么单例不单例,没有实例变量,就该写成一个静态方法啊,没有状态搞什么对象
概念上的纯函数,就声明成函数,至于如果有性能方面的考虑,做cache什么的,函数的实现里自己去弄
“某个调用场景下,每次都会新建一个解析器对象去解析结果,尽管解析器没有任何实例变量不会产生线程安全问题,创建的开销也并不大,但我还是坚持要改成单例,使用同一个实例去处理,这也符合面向GC编程的思想。”
解析器对象的存在,使得部分解析、语法树遍历称为可能;原方案的解析器对象为将来扩展比较容易
既然没有实例数据,那么对于JVM这种高度优化的虚拟机那是完全没压力
同样,你说目前的实现中,解析器对象没有状态,那么调用方应该不会长期持有该对象(不会有cache的做法和多次读取的需求),那么该对象应该受逃逸分析的影响在栈上,最多也在年轻代GC的堆中
至于说改成单例,我能理解成,仅仅因为“恰好没有状态变量”这样的理由?面向实现编程?
能够做成纯函数为什么要引入对象(扩展性是一个可能的理由)
能够做成可重入为什么要引入全局访问点
更别说你这里的改写连“提升性能”这种借口都没有
我只是喜换比别人认真……
老罗转了那么多次行,不了了之的牛博网(ASPX写的呦),英语学校,还好意思说认真……
多谈些问题,少谈些精神好吧。惺惺作态的钻牛角尖也是一种拧巴。
ST1的发布会实则是“情怀”、“逼格”发布会。已经成功的把粉丝和认可者带到了更高的“境界”,至于产品本身怎么样不重要了。看看随后的N多媒体平台的文章,没两篇是评产品本身的,都是在谈“高大尚”的“精神文明建设”的!好吧,我等“屌丝”还是不羡慕“爱情”了,关注“面包”,结果是颇为失望的,也许是因为当初受罗锤抨击其他产品的设计,包括他示意苹果也就那样了,所以对锤子的期望略高了。
又不是纯粹的自由软件, 还不是要挣钱的, 你可以说你是很认真的干事去挣钱,但是不要光说啥你很认真
我也觉得,光是嘴上说的空话“认真”并没有什么意义。做不到行动上的认真,就是在骗人。尤其身为外行,不能虚心向内行学习,只靠大嘴巴来炒作,根本谈不上什么认真。
“如何最快地告诉自己的能力”
应该 把“告诉”改成“提高”吧
其实平时的开发真的需要这样的劲头,很多时候直接copy一段代码甚至连怎么一回事都不知道。成为一个合格的工匠,真的需要更好的钻研精神。
关于String,length(),这是一个坑,在不同的字符集下,每个字符的长度是不一样的,就算是一个字符集下,每个字符的字节长度也可能是不一样的,所以length()方法返回的长度肯定是小于等于真实的字节数组的长度,前一段时间再找如何避免创建对象就能计算出一个String 字节数组长度的方法,可惜没找到,找到了希望能告诉下
楼主有没有想过 加入锤子科技
做个疯狂的程序员,思密达~~
个人觉得不错!
问题是 你不能把你的认真当作产品去炫耀。跳出技术框框,普通消费者只需要知道你这个产品好用,就如无论apple怎么玩营销 都有一大批粉丝跟着 为什么?人家技术牛 设计牛 用户体验更牛 可你看过apple啥时拿技术 甚至自己如何如何刻苦专研 如何认真拿来当作产品来炫耀呢?一句话认真永远是对的 但不能拿认真来说事儿!如果拿了 我个人觉得有点低级趣味。没办法,这几年手机圈都被某人带坏了!
继续coding…
工匠精神。说来容易做来难
我不知道这是不是他的噱头啊,但我说心里话,老罗只关注他所谓的用户体验,让用户产生他“千锤百炼出来的手机才有真正的用户体验”的感觉,其实他压根就不懂什么叫手机
个人感觉。
认真吹牛B
一个无法深入本职的人能混多久,糊弄事的在这行就干不长久的,到年纪就玩完,重新开始
细节说明了很多问题,态度才是最重要的
认真细致的态度,也决定了你的高度!
我也是一个工匠,一个修车的工匠,可否友情链接,铁魔方http://www.tiemofang.com
老罗的话是说得对,但跟他做出来的这个手机无太大关系,我觉得他的这个手机很一般,我想大部分人都不会因为他说的话很感动而掏几千块钱买他的手机,这是两码事。
说回“认真”这事。有些人不是不认真,而是能力不够,或者说是“呆老实“那种。对这种人我是没啥意见,能帮就帮。有些人则是以为自己很牛,实际是草包,还瞎指挥,这种人我是能避则避,当然有人是直接劈头骂回去,我没那脾气。
生活所见,人越牛越认真,越蠢越随意。
“心里非常动容”其实是病句呢
说到底,也是罗永浩的一种营销。上海小额无抵押贷款http://shanghai.yiqirong.com/
一个真正的工匠会把最好的产品拿出来说话,不是一个加了一些自以为是的小细节的rom。我们可以等五年后再看看锤子手机怎么样,现在批评或赞扬都为时过早。
说的真好,赞!
看完颇有感触,认真这对于一个做技术的人来说太重要了。如果抛弃了它我们只剩下躯壳了。
有里的一句话特别喜欢:
优秀程序员的价值,不在于其所掌握的几招屠龙之术,而是在细节中见真著。
程序员就是个大工崽 有什么卓越可言呢?
@haitao
太多人骂锤子手机都只是讨厌老罗这个人罢了。不过你列觉得几条理由还算是不错。
感触很大
做一个认真的人
@haitao
是有这个单词
Massachusetts Institute of Techology 简称MIT
坚持看酷壳很多时间,从最初的讲技术 到现在的讲情怀讲故事讲方法.