阅读英文资料
对于全栈工程师来讲,遇到问题时经常会求助搜索引擎,尤为是在学习新的编程语言,或者学习某个框架的新版本的时候。这是最快速的方案,在不少时候比看官方文档还有效。有的时候咱们只是想快速了解一个新的技术,或者快速上手,这时候也会用到搜索引擎。
为何我推荐使用英文,而不是使用中文搜索,有这样几个缘由:前端
英文的技术资料更多
在全世界范围内,IT工程师广泛使用英文(即便中国工程师的数量也许更多),因而用英语写做就有了最大的读者群,而后有更多的人用英语写做……。
在Google中用英文搜索技术问题,每每能获得很详细的说明,以及相应的代码示例。有的时候您会进入英文维基百科,里面有关于词条的详细解释,包括历史、版本、理念、竞争者,等等。有的时候您会进入一个教程(tutorial),里面会详细介绍完成一个任务的整个流程,甚至还可能贴心地提供工程示例文件的下载,这是新手学习的最好方法。程序员
StackOverflow有完善的鼓励机制
内容筛选机制、严格的内容把关政策,这让Google的内容质量很高。若是您键入的关键词足够多,那么您颇有可能看到不少StackOverflow的问答连接。
StackOverflow是一个与计算机编程相关的问答网站,也是最大的IT工程师平台。在这里有不少知名开发者,因为有完善的系统鼓励政策,他们都很热衷于回答其余开发者遇到的问题。用户能够在网站免费提交问题,浏览答案,赞同或者反对答案。StackOverflow是一个英文网站,全部用户都必须用英文提问和回答问题。不少时候,在一个问题下都会有多个回答,有经验的用户能够赞同或者反对其余人的回答,新手能够根据每一个回答的赞同数来判断回答的可靠性。
关于StackOverflow,还有一点题外话。StackOverflow由两个世界著名的博客做者共同建立,Jeff Atwood和Joel Spolsky。Jeff Atwood提出了著名的Atwood定律:“任何可以用JavaScript实现的应用系统,最终都必将用JavaScript实现。”JoelSpolsky多是软件工程师中写博客最有名的一位,他是“Joel on Software”博客的做者,读者人数能够排进全世界前100名。两位创始人对工程师心理有着深入的洞察,包括追求荣誉感这一特色,因此他们设计的StackOverflow的鼓励机制,取得了巨大的成功。编程
Google的搜索能力很是强
Google在搜索引擎方面的技术实力能够说是绝对领先,它比排名第二的搜索引擎的技术实力和用户体验要强一大截。我曾经对比了大量词汇在不一样搜索引擎中的搜索结果,有时候差很少,有时候差异很大,Google老是好得多。因此即便您要搜索中文问题和词汇,也仍然建议使用Google。缓存
英语世界的语言风格比较严谨
中文互联网世界上的语法通常比较口语化,并且不太在乎语法正确性和逻辑的严谨性。在整篇文章的行文和逻辑构建上,英文也每每更严谨。
若是您的英文不够好,没有关系。在长篇的英文技术文章或者StackOverflow中,写做者都会有意使用最简单的词汇和语法。若是您能编程,您就能理解这些简单的英文安全
时间管理四象限
一个领导说过,若是您平时没有作重要的事情,就会发现本身经常在作紧急的事情。若是您平时没有注意锻炼身体,就会经常去医院,花费更多时间。若是没有培养后辈,为每一个项目设置接班人,就会经常须要处处救火。若是您没有配置好版本管理系统就开始工做,就会浪费更多时间去找回丢失的代码。若是偷懒硬编码(hard code)了一些变量在代码中,后续必定会花费更多时间去调试。时间管理四象限将咱们平时须要作的事情分为4类:重要并且紧急、重要但不紧急、不重要但紧急、不重要并且不紧急。服务器
时间四象限教咱们把不一样的事情分在不一样象限之中,而后采用不一样的处理方法。
第一象限是重要又紧迫的事情。好比线上出现严重bug、服务器出现安全漏洞、用户的投诉,等等。对于这些问题,是考验本身的经验和判断力的时候,用本身最好的判断力,当即执行。不过也要意识到,在这一象限的问题每每是第二象限的问题没有制定好的计划而滑落过来的,若是大部分的工做都落在第一象限,说明仍是在“瞎忙”。微信
第二象限是紧急但不重要的事情。好比会议、一些可转交的需求,等等。这种事情每每会因为对方强烈的呼声让您认为它处于第一象限,有一种“这事很重要”的错觉。咱们花不少时间在这里打转,其实只是在知足他人的需求,而没有关注本身的职责。对于这种事情应该请他人代劳,不必定是本身的下属,还能够是平级的同事。有一些会议不必定须要本身去参加的,能够提早跟主持人(项目经理)沟通。框架
第三象限是重要但不紧急的事情。好比一些线上体验优化计划、团队的长期发展方向和我的培训等。有一次老板提出了线上的一个体验问题,咱们觉得这是第一象限的问题,立刻执行。结果老板说,这个事情不须要您们这么快去执行,但愿能够作深刻一点的调研。建议工程师把80%的工做投入到该象限中,避免“瞎忙”。编程语言
第四象限是不重要也不紧急的事情。逛论坛、刷朋友圈就属于这一象限。简而言之就是浪费生命,因此根本不值得花半点时间在这个象限。但咱们每每在1、二象限来回奔走,忙得焦头烂额,不得不到第四象限去疗养一番再出发。因此咱们要避免浪费时间在第四象限,也不要疲于奔命,各处“救火”。
有时候咱们觉得是外部缘由让咱们分神,其实更重要的缘由是人的精力被耗尽了。咱们在一些觉得是消遣和休息的活动上投入了不少时间(好比刷朋友圈、玩游戏),回到工做的时候,并无感到重返工做的舒畅,反而精力涣散,容易分神。咱们身体上的劳累让咱们的精力没法集中。ide
消除重复工做
重复的工做应该交给计算机去干,这是咱们都知道的一个道理。
有趣的是,咱们每每不知道咱们的时间花在哪里,有一个办法就是详细地记录本身一天的时间消耗。在合并代码上面花费太多时间?仍是提交测试?发布流程繁琐?编译过久?切图的工做枯燥无味?
第一步即是识别出本身的时间花费在了哪里,以此做为优化的目标。
有了优化目标以后,第二个思考的问题是,可否使用已有的工具——免费的或付费的——来无缝衔接在已有的流程中。若是新的流程成本过高,那就没法有效推动。普通工具能够用英文在GitHub上搜索相关的关键词,前端开发者能够在Gulp和Grunt社区寻求帮助。
若是不能使用已有的工具的话,就要本身去编写了。在语言的选择上能够从几个角度考虑:工具的使用者是谁?若是须要分发给同事安装,那么他们使用什么系统?Windows仍是OSX?若是使用Web来做为用户接口,那么就可使用任何您喜欢的语言。用脚本语言开发小型工具很是快,无需编译便可运行。Paul Graham在《黑客与画家》里面就提到过他使用Lisp语言来快速开发的经历。
给本身留出不被打扰的时间
当咱们被QQ、微信、RTX、电话等提示工具打扰时就会频繁分神,这使得专一力现在已成为稀缺资源。
Paul Graham在一篇文章中说过,创做者的时间计划与经理的时间计划是很是不同的。工程师做为创做者,遵循创做者的时间计划。编写程序须要大量的精神投入,须要整块连续的时间思考,因此工程师工做时是不但愿被打扰的,若思路被打断则后果很严重。
Facebook的每周三是没有会议的日子(No Meeting Wednesdays),每个团队成员都知道,除非万不得已,不要在这一天安排任何会议。事实证实这对团队的效率颇有好处,它鼓励全部人(包括产品经理)成为“作事情的人”而不是“计划事情的人”,并且全部人都有一整块的时间工做。对于远程工程师来讲,还能够选择在家里工做,根本不用出如今办公室。
番茄工做法
有些时候,咱们没有办法获得一成天的大块、连续的工做时间,为此能够采用短迭代的工做方法,高效地利用每一小块的工做时间。
我在跟Facebook的工程师聊天的时候,发现他们都很注重锻炼身体,天天早上开始工做以前都会花一个小时跑步和健身,而后洗澡吃早餐,再开始一小段高效的工做时间。下午的工做时间中也会穿插一些运动和甜点时间,等等,不会像国内的工程师们,须要长时间地坐在电脑前。这种状态的转换让他们的效率获得了很大的提高。因此包括腾讯在内的一些国内公司如今也开始把健身房和团队运动做为一项员工福利,有时候还会组织晨跑或者徒步等团体运动。
番茄工做法”是由弗朗西斯科-西里洛于1992年创立的一种微观时间管理方法。使用番茄工做法,选择一个待完成的任务,将番茄时间设为25分钟,专一工做,中途不容许作任何与该任务无关的事,直到番茄时钟响起,而后在纸上画一个X,短暂休息一下(5分钟就行),每4个番茄时段则多休息一下子。
番茄工做法极大地提升了工做效率,还会有意想不到的成就感。为何25分钟是一个比较好的时间点?由于若是太短,思惟尚未恢复过来,就立刻要被打断,不利于创做。番茄工做法主张在25分钟时间段内专一地完成高质量的工做,接着是5分钟的休息。若是让压力系统一直工做,而不借助心智休闲进行调节,一些症状会找上门来。
跨界思考
有时候项目会频繁变更,从A计划临时转变成B计划,而后再回到A计划的事情家常便饭,这是浪费工程师精力的最大因素。
从项目的角度来说,也许这是好事情,谁也不但愿把很差的产品发布出去。每一个人都但愿本身作的产品可以成功,可是不是作重复的脑力劳动。归根结底,是双方在沟通的过程当中充满了障碍,不一样岗位的人的思考问题的方式不一样。
设计师们是典型的浪漫主义者,他们的世界里没有公式、没有定理、永远没有标准答案,更多的是用发散的思惟去构思创意,更容易产生好想法。而工程师注重逻辑的严谨性、技术的可行性,他们每每用“我是否可以作到”和“我要花多少时间才能作到”这个思惟在思考。
那么这种矛盾如何解决?在初级设计师和初级开发者之间,咱们鼓励他们频繁沟通,把本身的想法用对方能懂的语言说出来。在高级设计师和高级开发者之间,界限就没有那么明显了,我鼓励他们帮对方作一些工做。这说明什么呢,沟通当然重要,跨界学习更加剧要!当双方带着彻底不一样的思路去讨论一个话题,讨论出来的结果必然是双方妥协的产物,而不会是最优的结果。
不少工程师都向往国外大公司的“工程师文化”。为何?由于“工程师文化”表明了工程师是产品开发中的强势方,在跟产品和设计师的沟通中有更多的话语权(甚至某些产品跳过设计师和产品经理)。可是我认为,这是由于国外的工程师有更高的跨界思考能力,才获得了本身的投票权。不少工程师主导的项目,界面不华丽,可是可用性都很是高。这就是跨界能力带来的另外一个好处,能够作一个“产品创做者”。
过去跨界学习的成本很高,大部分人都不敢轻易尝试。但现在互联网时代给咱们带来了机遇,天天上网均可以看到其余领域名人写的文章和微博,经过查看这些内容,咱们就能对本来彻底陌生的领域有一个感性的认识。时间一久,咱们就可以在潜移默化中理解另外一个领域的从业者的思惟方式,当您开始跨界学习以后,就会增长更多的机会.
我在工做的这几年中也在渐渐受到设计师和管理者的影响,开始学习设计师和管理者的思惟方式,因此有时候我被认为是“有一点设计感受的工程师”,但我仍在学习。或许每一个工程师会在不一样的环境中跨不一样的界,可是在将来,我认为跨界出来的那部分能力才真正定义了“您”。
纸上头脑风暴
我使用过不少工具,好比MindMap类软件,或者简单的记事本软件、手机上的绘图软件等。最终,个人经验是,在电脑上工做以前,先在纸上画出本身的想法。笔跟纸是最灵活、最容易修改、成本最低的头脑风暴方式。
好比在写一篇文章前,就能够先画一个思惟导图,把头脑风暴出来的全部关键词都列出来,而后再根据金字塔式的写做方式层层分解。若是是开发一个软件,或者写一个脚本程序,能够把每一步的主要工做都写下来,相似伪代码,可是抽象层级更高一点。
使用版本控制和构建系统
数据代表,对于没有使用版本控制工具的工程师而言,浪费在代码合并、版本回溯以及bug修改上的时间远远超过了使用版本控制工具的工程师。因此,这是针对全部人都适用的建议,尽快使用版本控制工具。
好的构建系统可让工程师彻底从枯燥的操做中解脱出来。在极端状况下,不使用构建系统的工程师可能要花费80%的时间在编译和等待生效、清除缓存等操做上。
加班是一种文化?
我不认同加班是一种“文化”。加班就是加班,是因为工做没有完成致使的。
在一个项目和人力都很稳定的团队中,有两种缘由会致使加班。
一种是糟糕的项目管理,领导失职,没有安排好工做。
第二种是员工能力不够,效率不高,没有按时完成目标。在这两种状况下,我都建议您跟领导去沟通。
我时常听人抱怨说,团队有加班的氛围,他早早完成了工做,但是看见你们下班后还待在座位上(尤为是领导还在),就很差意思本身一我的下班,只好留下来“陪加班”。甚至,由于长期在这种环境下工做,有人认为领导在升职加薪的时候优先考虑爱加班的人,因此白天就慢慢吞吞,晚上就开始加班。
我认为这种状况也许只是个别人的认知问题:认为领导推崇加班的氛围,以及领导按工做时长来判断投入度,以此做为升职加薪的考量因素;或者认为领导不知道谁工做成果更好,因此按劳累程度来判断……全部这些认知都是由于茫然和不自信,不知道本身的核心竞争力是什么,也不知道老板真正须要的是什么。拿工做时长来拼,这仍是体力劳动时代打工者的心态在做祟。
稍有常识的老板,或者接受过一点点管理培训的领导者,都知道评估员工是看结果,而不是看努力和过程。您在把老板当傻子,拼命展现“辛苦”,结果更加不如意,只好每天抱怨:“小A这个家伙天天不加班,怎么老板那么喜欢他,升得比我还快!”
工程师须要提升本身的沟通能力,若是你们由于紧急项目等缘由在加班,您不妨过去问问,能不能帮到什么忙。用积极的态度去思考问题,而不是消极地坐在那里,浪费本身的时间和情绪。大部分老板都会很欢迎员工主动的沟通。
若是团队内年轻人比较多,有些时候他们下班后喜欢留在办公室,并非由于项目须要,而是公司内有免费的晚餐、空调、饮料、电脑……几乎是一个单身宅男须要的一切了,因此他们喜欢待在公司也是比较容易理解。我经常跟他们说的是,下班以后尽可能不要处理工做需求了,多点时间自我学习,或者准备一些分享,甚至作一些编外项目(side project)。重点是,不要加班作白天遗留下来的工做。
若是下属常常须要加班才能完成工做,我会认为是管理者的失职,一方面我会看看是否给员工安排的工做太多,可否转移一些给其余人,另外一方面也会看是否须要借调其余资源,或者招聘更多人手。
加班狂的英文是Workaholism,直译为“工做上瘾”。长期加班的人会有一种错误的观念,就是午夜鏖战全情投入项目的标志。他们不会去找高效的方法,由于他们确实喜欢加班。这每每致使恶性循环,熬夜和过量的工做让人疲惫,影响人的思惟和判断力,这样更加没法找到高效的方法来完成工做。
最后,过量的工做和压力严重影响健康,最终致使一些慢性病,甚至猝死。咱们常常在媒体上看到某IT公司员工猝死,临死前还在朋友圈发加班的照片。
我不肯定家庭情况、我的健康或者具体项目对猝死员工产生了什么影响,但我认为一个接受太高学历教育的成年人,应该有能力权衡本身的健康、家庭的责任,以及长期工做回报。每一个人均可以有本身的选择。工做上瘾者不光把本身逼上绝路,也把老板逼上绝路。您认为本身能高负荷工做坚持一个月,他就认为您还能坚持半年。
总结一下,加班不是一种“文化”,它每每是咱们心中假想的老板,还有媒体渲染出来的一种畸形工做模式。在这种模式中,加班狂习惯了熬夜和过量的工做,他们每每也给了老板长期加班的预期,同时也带来低迷的士气,以及疲倦的身体。
延伸阅读: 1.《软件随想录:程序员部落酋长Joel谈软件》(美)Joel Spolsky,人民邮电出版社 2.《卓有成效的程序员》(美)Neal Ford,机械工业出版社