怎样才是优秀的前端工程师？
一个优秀的前端工程师，他肯定有与众不同的工作方法，我们看看他是如何工作的。 小明是今年刚入职的新人，工作经验也五年有余，做了一段时间的业务需求，今天老板交给他一件事情，就是推进大家完善项目代码的文档，好让以后来团队的新人，能更快的了解项目代码。程序员很多不爱写文档，尤其是项目有了变动以后主动去更新文档。小明作为一个新人，来团队这一段时间也发现不少问题，很多自己通过问其他老人解决了，但依然觉得这个过程挺难的。所以这件事让他来做是最好不过了。 老板让他整理一个标准化的文档模板让大家来套用。过了两天，小明因为忙于业务并没有顾上这件事，一直想着等周末加班做一下，过了 4 天了，小明终于整理了一个模板文档放在了自己的文档空间里，但一直没有发给老板。此事后来就忘记了，过了一周以后，老板问起来，这件事做的如何了，小明说文档写完了，但是应该有很多不完善的地方，希望大家提提意见。于是在周会上，大家提了一些意见，其中最主要的一件事是要把一些公共的部分，用单独的文档详细说明，其他项目的文档来引用他的。这些公共的部分可能包括脚手架如何使用，国际化怎么做等。 时间又过了一周，老板问小明事情的进展，他说自己正在写其中一篇国际化相关的文档。 我们看到上面的案例，小明都暴露了哪些问题呢？ 大家在做事的时候，可能都想留给别人一个靠谱的印象，于是习惯性的接受，而不拒绝。想着自己一定要做到，只有做到才是这件事唯一的结果。如果自己还没做完就不会有任何的反馈，因为反馈会自我感觉难堪，因为并没有做完。但其实，在这其中我们忽略一个重要的问题，就是什么是靠谱？ 靠谱不是不拒绝，说到做到。靠谱其实是量力而行，做自己有把握的事，即使没有在预期的时间内做完，也要积极反馈。所谓「凡事有交代，件件有着落，事事有回音」。答应别人的事，一定要积极的反馈，频率可以是每天，每两天都可以，切记不要耗着，沉默着，等有结果了再反馈，也不要攒一个惊喜给老板。因为这样的惊喜往往是惊吓，因为每一次反馈和沟通都是对焦的过程，可以保证整个事情不会变形，符合起初的预期。 上面的例子，小明就有这样的问题，一是没有积极的反馈，即使自己有很紧急的其他事情，很忙没有时间做，也要跟老板说，自己最近在忙别的事，你交代给我的事，可能最近没有时间做。二是总想着做完再说，自己多加班来弥补，而这些苦劳，只是在苦自己，并不能改变事情的结果和别人对你的印象。 当你心甘情愿答应了这件事由自己来做以后，这件事就是你的事了吗？事实并不是这样的，因为这件事你可能没时间做，后来就又转给了别人，或者你让别人帮你做，别人做了大部分，最后结果被别人拿了去。其实更多的情况是你没有做出结果，事情也被你拖没了。所以判断是不是你的事，最重要的只有一点，就是「这件事是不是你设计的」。 我们经常听到邓小平是中国改革开放的总设计师，那说到改革开放我们就不得不提邓小平，其他还有很多人做了很多事，但我们并没有多少印象了。设计者并不一定是发起人或者创始人，我们看到在商业社会里，往往创始人不容易坚持到最后，拿到最终最大的结果。所以，不论是老板安排你做的事，还是你自己发起的事，更甚至是别人的事，只要是你设计的，那这件事就是你的。 设计并不是一件简单的事，他需要更为深入的思考，不是单纯的埋头苦干，是要站的更高，看到全局，看到周边，理出主线，确定关键，组织群众，解决难题，控制节奏，拿到结果。拿上面小明的例子，我们详细分解下这个问题。如何完善每个项目的文档？我们可能要先回答这样几个问题： 整理文档最核心的目的一定是让新手更容易了解当前的项目，所以内容一定要全，且要结合自己的使用感受，文档还要包含主内容和扩展阅读，主内容是新手完全可以按照这套流程操作，就可以使用项目的，还有扩展阅读则是一些概念介绍，扩展知识，不用当下消化，而是慢慢看的。 可能上面只是表面的或者重要且显然的目的，别人让你做的每一件事，其实对自己来说都是一次很好的锻炼自己、表现自己能力的机会。所以千万别草草了事，或者不当回事，或者把他想成是一件消耗体力的苦差事。思考先行，你会觉得他并不耗费你多少时间。当你把这件事从全局到细节都想清楚了，那种油然而生的掌控感会让你感觉很轻松。 所以，分析目的要看两方面，一个是表面的显而易见的，一个是自我的成长相关的。这两方面也就够了，切记不要想太多，不要过多揣测，也不要把一件小事，非要升华到人际斗争，宇宙本质的高度，那样就有点心累了。 把大象装冰箱总共分几步？三步，把冰箱门打开，把大象装进去，把冰箱门关上。这个原本大家以为是笑话的东西，其实才是解决问题最为关键的方法。很多人习惯在遇到一件事的时候，立马把关注点聚焦到这件事最难的部分，一直在想这个最难的部分怎么解决，而过去了很久都没有行动。与之相反，上面的这种步骤思维，不仅可以为我们解决问题提供可行的思路，还让我们马上行动了起来。 解决小明的问题，我们要看看分成几步： 只要多人做事，就会有做的快的，做的慢的，和压根不做的。你需要一个机制或者工具来 Check 进度。看上面小明的问题，我们就可以产出一张进度表，进度表也要非常讲究，要涵盖做一件事的每个关键点，也叫做检查点，检查点是行动指南，也是判断结果完成度的指标。每一行都有明确的哪个项目，什么地址，谁来负责，是否完成，有何困难。然后把这个表格，嵌入到团队集体工作流当中，比如在每周的团队会议上过进度，或者建立钉钉每日的提醒，或者把每两日的进度总结到群里。常态化的提醒和暴露问题，是推进事情的有效方法，当然还可以奖励完成速度快的同学。方法很多，关键是建立自动化的机制。 有了最终的产出，就代表这件事有了结果。我们依然要从两方面看，一个是表面的结果，看小明的例子，就是每个项目都有了完善的 ReadMe 文档。但是还有一个结果，就是工具和方法论的沉淀，比如一套自动化生成文档的命令，可以为后面新的项目提供更快的初始化文档的方法。当然你不必为了沉淀而沉淀，非要搞出一个可复用的轮子，能解决当下的问题，就是一个好工具了。另外，对自身成长的提升也是一个很好的潜在结果。 最后，还要把产出展示出来，给这件事画上完美的句号，感谢帮助自己的同学，同时拿到结果。 大家都在做事，那同一件事你来做，和别人来做会有什么不同。你做的那些事是否都深深的刻上了你的烙印，你所在的组织是否有受到你的影响，而变得不同。我上面所讲的内容，是最基础的做事方法，是区别于混日子和做实事的一大要素，是变被动为主动的法宝，也是建立成长型人格的有效方法。个人拙见，希望对你有所帮助，后面还会有成事的进阶篇，如何建土壤，让事情自然而成。