码农杂谈:Taste

代码首先是写给人看的,然后才是在机器上运行。一个每天“高效”产出几百行烂代码的人,本质上是在给团队做负功,屎一样的代码生产的越多,对团队的拖累越大。我去年接手公司的项目,一个好好的开源项目,一个实习生两个月咣咣咣加了一堆代码,生产(屎一样的代码的)效率极其惊人,结果我接手后,带着两三个人花了近一年的时间才把屁股擦干净——几乎每个月定位到的 bug 都能 blame 到这位前同事……

代码是有生命周期的,并且与代码的 ad-hoc 的程度成反比。码农的一大悲剧就在于,在职业生涯的早期,多数时间都在写着各种 ad-hoc 的代码。比如拿个开源项目魔改一下,写点脚本,写几个页面加几个 button。多数人都熬不过这个周期,然后要么转行,要么激情磨灭了——我不敢说自己已经脱离了这个阶段。就我工作这几年接触到的人和项目,大多数代码的生命周期都短得可怜……少有超过两年的,也许是我的职业生涯太 low 了吧。这也是我现在越来越反感各种所谓“小步快跑”的开发方式。所谓的敏捷开发在大多数企业完全是被烂用了。真正的敏捷开发,需要强力的 PM,仔细推敲的需求,强力的工程师,良好的自动化测试部署监控系统的支持……你什么都没有,碰个事情就说“来来来我们先 work around 一下把这个问题临时解决一下”,这不叫敏捷开发,这叫胡闹开发。然而,实话实说,在资本强力的鞭策之下,码农其实是蛮弱势的一个群体,很多时候做的事情就是把现实世界的需求翻译成机器能“理解”的代码,如是而已。 从某种程度上讲,写代码和写文章是非常像的,代码运行在数字世界,而文章则运行在想像中的思维世界。一个优秀的工程师,对待写代码,应该像一个优秀的作家对待写一部作品一样。好的代码,需要仔细的推敲设计,反复的迭代修改,需要在动笔之前就在脑海里布上所有的“剧情”,就像一部小说一样。但是写代码和写文章又不完全一样,广义上的文章(小说,散文等各种作品),写完了,作品就算结束了,但是代码则永远没有“封笔”的那一天。因为软件世界在不断的进化,代码封笔,就意味着这段代码开始慢慢腐化走向死亡了。这是写代码和写文章的一点不同,也是大部分痛苦和乐趣的来源。

当你学了 C,学了 C++,学了 Java 学了 Linux 学了 JavaScript 一堆一坨一吨一挑子一卡车一轮船的东西,耗了两年终于入了门能做出点小东西后,这时候如果想进阶,想在这个行业干到 35 岁之后还能饶有兴致的继续干下去,记住一个很重要的词:taste。工作这么多年,接触了这么多人,我必须说,大多数码农的 taste 实在是太差了……写代码做设计写文章,对什么是好的什么是差的一点感觉都没有……为什么一个公司一个团队一定要有那么一些 Senior 甚至 Staff 级别的有点 taste 的工程师镇着场子?因为如果没有这批人,一群连什么是好坏 taste 都搞不清楚的码农搞吧搞吧慢慢就会把手头的项目做死……我是说真的。怎样去培养好的 taste?我的意见是,不要局限于代码,去看那些好的文章,去看那些让你流泪的电影,去听那些让你心潮澎湃的音乐,去学 LaTeX 细究下各种字体的排版细节,去学学 Mathematica 看看什么叫做令人惊艳的交互,去买一个顶尖的降噪耳机体验下什么叫做瞬间安静的世界……跳出你固有的思维舒适区,多体验多尝试多思考,当你的手、眼、脑、耳变得挑剔,当你听到 work around/trade off 这类字眼就本能得反感恶心和不舒服,你就明白,什么叫做“由俭入奢易,由奢入俭难”,你就懂得什么是好,什么是差,什么叫做 taste。

大多数企业 taste 之差,远超你我的想像。举个例子?好吧:

码农杂谈:Taste

这是淘宝开放平台的开发者文档不需要懂多少数字排版的知识,我相信每个人都能看出来这份网页的排版有多烂吧?你要知道,这可是淘宝,市值几千亿美金,开发者平台上入驻了数以万记的开发者,这个网页每天的访问量可能会有几十万。就这排版……还开放?开放个屁,要不是垄断,谁乐意去读这些鬼画符一样的文档。

码农杂谈:Taste

码农杂谈:Taste

这是我随便找的一篇官方微信公众号的文章,看似色彩斑斓,然而我要告诉你,中英文排版中,段落文字水平居中是最烂最烂的排版方式。看看段落两边的错落边缘,你不觉得这种居中排版的段落,就像被你家狗啃过的面巾纸么? 关于 taste,再多说一句吧,taste 的好坏,甚至技术的牛逼与否,并不决定一个企业,甚至一项事业的成功与否。世间万物如果都遵循“如果怎样就会怎样”的模式,那这个世界未免有些太简单了,简单到有些无聊。以前我和人争论,写代码之前应该仔细调研,全盘考量,谋定而后动,有人就跟我举例说,“滴滴打车最早的项目就是找个外包随便做的”,“淘宝最早也是买来的代码随便改的”,然后试图说服我采用所谓的“小步快跑”的开发模式,work around 套 work around,trade off 叠 trade off,先解决需求。可是,可是,可是,可是,可是的是,滴滴走到现在,和他最初的 App 是请外包开发还是自己开发的,有半毛钱的关系么?淘宝走到现在,最初的代码来自于哪里又能有什么决定性的影响?我同样可以说,你看 Github,从成立之初到现在一直保持了极高的代码、文案和设计的水准;看看 Stripe,靠着极其友好的 API 和开发者文档不知俘获了多少开发者的芳心。一个商业项目的成败取决于太多的因素了,技术的牛逼好坏也许至关重要,也许微不足道。因果律在这里是不成立的。所以一个人一个公司有没有好的 taste,本质上就是“江山易改、秉性难移”。

资料获取方式,关注小编,私信"学习"即可,手机用户可直接私信,电脑端尚未开放此功能,还需下载app,然后私信回复“学习”然后今天就分享到这里,大家记得点赞收藏,分享转发,关注小编哦!免费领取本文的Java视频学习教程。


分享到:


相關文章: