卖桃者说
后端工程师的危机
如何定义一个好的现代的后端工程师呢?
1、在领域内精湛的技术造诣和丰富的经验 ;
2、技术上的远见和整合能力 ;
3、广泛的技术知识,不做基础组件,不意味着你可以不懂 ;
4、熟练的编码技巧和细节把控,想当架构师的程序员都写得一手好代码 ;
5、熟悉信息的表示方法,了解主流的和常见的国际技术标准.
说白了,就是既具备技术整合能力,也通晓技术细节,从而实现技术驱动业务的突破,而不是纠结于某个中间件或存储服务
如何打造你的技术影响力
一般来讲,个人影响力可以分为两种,一种是公众和社区里的影响力,比如各个领域的 Kol、业界领袖、行业专家、公共知识分子等;另一种是在自己的生活和工作中具备影响力,这个虽然影响不了大众,但是对你的个人成长和职业发展都非常有好处。今天主要跟大家聊聊怎么获得和增加第一种影响力,也就是公众和社区里的影响力。
技术人起码能阅读技术文档,能就着技术文档和同事交流,那么翻译的难度就不会太大。不过,在翻译中要注意以下几点:
第一,翻译和阅读不一样,翻译会要求你对原文的理解更深更准确,否则很可能出现错误,但你却完全没有意识到,所以最好从自己熟悉领域的资料开始翻译,这样更有把握;
第二,翻译完成之后不要立刻发出来,可以过几天再以“没读过原文”的心态仔细看一遍,确保看你文章的读者能看懂,发出来之后当然还可以再修改,但原始版本可能已经四处流传了;
第三,翻译时可以加上一些自己的观点和评论,如果能把技术和自己的实际经验结合起来就更好了,纯粹的翻译不容易凸显自己的特点,对中文读者的参考作用也有限;
第四,记得在每次发表翻译稿时注明自己的身份,你可以借助其他的平台发布,但尽量不要做这些平台上无名氏流量贡献者;
第五,也是最后一点,一旦开始做就要持之以恒,如果能就同一主题翻译十篇以上有份量的文章,无论是自己加深理解,还是对自己技术影响力的打造,都非常有帮助。
做好事情的4个思维方式
- 强化内功
- 持续改进
- 不断叠加
- 保持耐心
如何高效完成自己的计划
第一个关键点,目标要确定且具备可行性。
第二个关键点,不要贪心,目标最好不要超过 5 个,每个目标下面的关键成果定在 2-4 个比较合适。
第三个关键点,组成目标的关键结果要做到明确且定量。
第四个关键点,定期 Review 你的计划,并根据情况作出调整。
成事的五步流程法
第一步,有明确的目标。
第二步,找到阻碍你实现这些目标的问题,并且不去容忍问题。
第三步,准确诊断问题,找到问题的根源。
第四步,规划可以解决问题的方案。
第五步,做一切必要的事来践行这些方案,实现成果。
如何做好带人这件事
第一,把行动计划拆解成具体步骤,不止告诉对方你要什么,初期还要告诉对方怎么做。虽然这会花费你较多的时间和精力,一旦对方上手,你的前期付出就会给你物超所值的收获。
另外,当你对团队成员的表现不太满意时,不要干巴巴地说“你要更用心”、“你要更努力”,这样的意见并没有什么用。你要告诉对方什么才叫用心,怎么做、做到什么程度才能达到你的预期。一定要给团队成员确定感,不要让对方的精力耗费在猜测中。
第二,你需要列出一份品控文档。毕竟,并非每个员工都能一点就通,或者一次就能改善的,但如果你作为管理者,老是揪着一个问题说来说去,不光对方会烦,你自己都受不了。所以,对于一些流程性内容和经常出错的地方,需要时常提醒的事情,做成一份品控文档,极客时间团队无论是教研部、还是研发部,都有这样的资料,全部门都可以参考。
第三,提供反复实践的机会,并逐渐提高标准。打个比方,你让一个完全不会游泳的人,马上学会换气是很难的。同样的情况放到工作中也是一样,我们必须要接受,在大部分情况下,你是很难要求你的团队成员马上把事情做好,并达到你预期的标准。这时候,你能采取的做法,就是通过反复的实践,让对方在实战中成长,并慢慢增加强度和难度。
最后,当你跟团队成员沟通的时候,一定不要只问对方“懂了没”就完了。毕竟,对方的“懂了”可能有多种意思,比如真的懂了、误以为自己懂了、不敢或不好意思说自己不懂只好说懂了等等。为了不浪费你自己的心力和时间,每说完一件事,一定要确认对方是真的懂了、理解了。
程序员的黄金五年
- 由点及面建立知识体系
- 优先打磨专业技能
- 养成持续学习的习惯
如何让自己更有说服力
- 不要纠结于表面原因。
- 注意倾听对方的真正需求。
- 不要被对方的需求牵着鼻子走。
- 用故事或场景说服对方。
- 不要预先提出解决方案。
- 站在对方的立场模拟思考。
如何保持学习的热情
第一,带着明确的目标去学习;
第二,学习的东西应该很快用于实际项目中,以获得正反馈;
第三, 多和别人分享,要热衷解决实际的问题。
高效程序员的6个习惯
-
欲速则不达
-
跟踪变化
以下 4 个小方法可以帮助我们不断学习,拥抱新技术:
迭代和增量式的学习
每天拿出一部分时间用于学习新技术,当你听到自己不熟悉的概念时,可以把它们先记录下来,之后再有计划地逐步深入研究。
了解最新行情
从媒体网站或科技博客中了解新技术发展,看看大家都在关注哪些领域。平时可以多看看 InfoQ 网站以及极客时间的专栏,新技术出现并不可怕,可怕的是别人都摸清门路了,你却一无所知。
参加知识讲座
全球每年都会举办各种知识讲座和大会,极客邦主办的就有 QCon 和架构师峰会等,主办方通常都会找到行业内知名的专家或顶尖技术人才发表演讲,你可以近距离向这些厉害的人物学习。
持续阅读
既要阅读技术相关领域的好书,也要阅读其他领域的好书。对开发人员来说,提升技术硬实力很重要,但像沟通、管理等软实力也不能忽视。3. 把握开发节奏
-
把握开发节奏
-
使用短迭代,增量发布
-
代码要清晰地表达意图
-
保持简单
给项目经理新手的五个锦囊
-
从项目的真实需求出发
-
善于制订计划
简单来说,制订计划可以分为三个阶段:
项目立项前。这时的计划比较粗略,可以把目标按照功能体系分割成几个重大里程碑,并给出里程碑完成的时间点预期。
项目立项后。这时需要对团队生产力做估算,然后结合启动过程中对里程碑的大致预期,进一步推导出需求确认、设计确认、功能完成等中间节点。
需求确认后。由设计、开发、测试一起做 WBS(Work Breakdown Structure)工作分解,将工作细化,并进一步明确设计确认、功能完成、零缺陷、发布前代码冻结以及里程碑完结时间点。
-
失败也是一种选择
-
不要为了检查进度而检查进度
-
管理好自己
如何高效地学习开源项目
首先,需要树立正确的观念:不管你是什么身份,都可以从开源项目中学到很多东西。
例如,要理解 Redis 的网络模型,我们不需要成为 Redis 的开发者,也不需要一定要用到 Redis,只要具备一定的网络编程基础,再通过阅读 Redis 的源码,都可以学习 Redis 这种单进程的 Reactor 模型。
其次,不要只盯着数据结构和算法,事实上这两点在学习开源项目的时候并没有那么重要。
例如,Nginx 使用红黑树来管理定时器,对于绝大部分人来说,只要知道这点就够了,并不需要去研究 Nginx 实现红黑树的源码是如何写的,除非你需要修改这部分,但我认为极少人会有这个需求。
第三,采取“自顶向下”的学习方法,源码不是第一步,而是最后一步。
不要一上来就去看源码,而是要基本掌握了功能、原理、关键设计之后再去看源码,看源码的主要目的是为了学习其代码的写作方式,以及关键技术的实现。
例如,Redis 的 RDB 持久化模式“会将当前内存中的数据库快照保存到磁盘文件中”,那这里所谓的“数据库快照”到底是怎么做的呢?在 Linux 平台上其实就是 fork 一个子进程来保存就可以了;那为何 fork 子进程就生成了数据库快照了呢?这又和 Linux 的父子进程机制以及 copy-on-write 技术相关了。
第一步:安装
第二步:运行
第三步:原理研究
第四步:测试
第五步:源码研究
极简工作法则
法则一:承诺留余地,完成超预期
法则二:学会问为什么
法则三:从他人的错误中学习
法则四:管理你的精力
法则五:设定长期目标和短期目标
法则六:认识你的角色
性能优化六大原则:三要三不要
三要:
- 查最大性能瓶颈
- 确诊问题根因
- 考虑多种情况
三不要:
- 过度反常态优化
- 过早不成熟优化
- 表面的肤浅优化
优秀程序员的五大原则
一、避免重复原则(Don’t repeat yourself)
二、别让我思考(Don’t make me think)
三、最小惊讶原则(Principle of least astonishment)
四、迪米特法则(Law of Demeter)
五、避免过早优化(Avoid Premature Optimization)
成功必备的结构化思维
- 结论先行
- 以上统下
- 归纳分组
- 逻辑递进
关于财富的7条法则
法则一:了解自己的金钱观及其源头
法则二:清楚自己的财务现状
法则三:制定财务计划
法则四:不要与消极的人分享财富观
法则五:抓住机会,积累财富
法则六:小钱不能让你成为有钱人,却会让你的生活失去乐趣
法则七:定期检查财务健康状态
谷歌的优秀经理都具备哪些特质
- 当好教练。
- 充分授权
- 关心团队成员的成功和个人幸福感
- 高效工作,结果导向
- 善于沟通,倾听团队意见
- 帮助员工做好职业规划
- 为团队制定清晰的愿景和战略
- 拥有关键的专业技能,可以为团队提供支持
程序员如何提升自我价值
第一,技术不能落伍。技术要能跟得上形势,编码和设计能力要能跟得上发展,这是程序员的基本功
第二,积累对行业和客户需求的认知。只有深入地了解了一个行业,了解自己的用户,才能创造出用户喜欢的系统
第三,找到自己的热爱。程序员这个工作,其实很复杂,也是一个良心活儿。只有热爱,才愿意多想,才会多投入,才能做得好
如何快速深入地学习一门新技术
习惯养成的四大定律
第一定律,让它显而易见;
第二定律,让它有吸引力;
第三定律,让它简便易行;
第四定律,让它令人愉悦。
如何利用整合思维做决策
优秀决策的三个原则
第一个原则是元认知,你需要充分地认识自己的思维过程,了解现有的思维模型及其局限。
第二个原则是同理心,你需要理解他人的想法,了解自己与他人想法之间的差异,并从他人的见解中学到新知。
第三个原则是创造力,你需要有一种创造新的更优方案的能力,而不只是在现有选项中做出选择。
整合决策的四个阶段
第一阶段是呈现对立模式,明确问题。
第二阶段是审视对立模式。
第三阶段是探究各种可能性
最后一个阶段是评估初始方案
如何从容地应对生产事故
-
事故洞察
首先,你得对自己负责的系统了如指掌,同时有多种渠道来源,能够帮助你第一时间发现生产事故,比如实时监控预警系统、客诉部门、基础服务支撑部门、第三方服务依赖方等等。
如果核心业务交易量大、交易分布时间相对平均、业务面向 C 端用户多、业务重要程度高,需要特别安排 7*24 小时监控室 + 工程师轮值 on-call 机制,on-call 要求轮值工程师在一定时间内随叫随到,做好生产环境出现紧急情况的应对准备。
-
事故分析
如果确保了第一时间能够发现生产问题,接下来最重要的事情不是去定位问题发生的根本原因,而是要先去分析事故的影响范围和严重程度,比如是否会产生资损风险、资损的金额可能有多大、影响用户的范围有多大、是否非常严重等等。
为啥这么做呢?因为研发人员的特点是发现问题会习惯性地排查问题的原因,而且一般都会觉得自己可以快速解决掉问题。可往往真实情况是,一个技术难点陷进去之后需要很长时间,就算这个难点解决了,却发现又出现了第二个问题。这就像电视剧里面通过线索排查案情一样,问题一环套一环,结果是时间可能已经过去了 30 分钟,问题也没有解决,这个时候生产事故已经扩大影响范围。
-
事故升级
如果事故属于严重程度,需要立刻进行事故升级,通知相关业务方和上级领导。及时向上级汇报有三大好处:第一,领导会根据严重程度协调高层资源,进而加快解决问题的速度;第二,没有完美的生产事故解决方案,很多时候需要领导在不同方案中做决策;第三,就算这次事故没有处理好,第一时间告知领导之后,至少不失告知责任。
需要注意的是,在给领导汇报生产事故的同时,最好提供一些事先应对预案,并将不同预案的风险和优缺点如实告诉他,请他来决策和支持。
-
事故应对
如果你在长期的应用运维过程中不断积累和沉淀,那么,对于 80% 的常见问题你是可以提前做出应对的。比如,Java 系统产生 OOM 内存溢出,虽然不知道是什么原因导致的,但是可以通过立即重启来恢复服务;再比如数据库连接池占满,导致其他服务不可用,如果没有最好的方案,可以从数据库层面杀掉耗时最长的慢连接。
-
事故复盘
事故解决之后,需要做的事情是复盘事故发生和解决的详细过程,包括发生时间、参与人员、详细处理过程、结束时间等环节。如果事故的应对方案是短期临时方案,还需要进一步针对此次事故制定长期解决方案,并且快速上线。
复盘最主要的目的不是问责,而是回顾解决事故的整个过程,总结经验,下一次遇到类似问题能够更加快速从容地应对。此外还能通过复盘分析事故的特点,寻找能够提前避免的预防方案,因为最重要的事情还是需要做到事前预防,而不是事后补救。6. 完善方案池
-
完善方案池
这里所说的方案池更像是历史生产事故记录表,你可以把经常发生的事故的应对方案放到应急方案池中,作为团队的共享资源。一旦发生这类问题,就算是新入职的同事也可以参考方案池快速解决问题。
如果再有新的事故发生,就再次把新的方案融入到方案池,这样方案池就越来越丰富,从而不断积累形成宝贵的经验。通过这种方式,生产系统的新问题一定会越来越少。
-
故障演练
研发团队需要不定期做故障演练,包括数据库故障演练、应用故障演练、网络故障演练等一系列的极端情况下的故障模拟,确保真正出现问题的时候,能够沉着应对。当你掌握了这些方法,就能从容地应对生产事故,避免或者减少生产事故所带来的影响。
我的20条工作原则
开会不迟到:每次开会最好早到五分钟,静静心,和其他早到的同事闲聊一下,这样就可以心态放松,游刃有余,可以全身心投入到会议中去。每次会议一定要有总结,有下一步行动计划,并落实到人。
保持开放思维:相信每个人都有智慧,也相信每个人都有盲点,不论是处在什么岗位上。所以要保持思维的开放,请大家直接给反馈意见,不用顾忌我的面子,因为这是为了工作开展得更好,不是为了我个人。
站在公司角度做大决策:这个原则在前几期也零星分享过,越是重大的决策,越要坚定地站在公司利益的角度做思考,坚决摒除个人利益。这样就可以有效防止错误决策,也能让事业和格局越来越宽阔。
透明沟通、直接沟通:将一切沟通都摊在阳光下进行,保持“极度透明”,在沟通的过程中不断修正彼此之间的信任和默契程度。这个时候,有冲突是好事情,团队正是需要通过这些冲突将信任延展到更深的层次。
相信专家的力量:相信自己的学习能力,但更要相信专家的专业性。别人之所以是专家,就是在某一个点上他投入了大量的时间和精力,有自己的一技之长,我们通过和各种专家沟通,提升自己在这一方面的能力,少踩坑,节约时间。
坚持自我成长:始终保持空杯心态,相信每日精进,相信认知是能够不断进化的,包括身体和心灵。比如跑步是让自己的肌肉进化,阅读和写作是让自己的思维进化,信仰是让自己对哲学有更深的理解等。
不基于恐惧做决定:凡是基于恐惧匆忙做出的决定,基本都是错误的。始终记住这一点,遇到了恐惧,就先让自己平静下来,详细列出要做出的决定的优缺点,并且和团队成员坦诚沟通,集思广益之后再做决定。
做事情不纠结:坚定相信纠结无用,这只是在浪费时间和精力。决定已经做了,事情已经在开展了,就随它去,我们能做的就是如果形势往好的方向发展,就想办法乘胜追击,如果形势往坏的方向发展,就痛改前非。
对人不争不急不狠:这个是我最近一段时间给自己新定的一个原则,与人相处,不论是对待同事、家人还是朋友,都要温润如玉,不争功,不争荣誉,不气急败坏,不心狠手辣。
对事要争要急要狠:对待自己在做的事情,对待公司的事业,就必须要争第一,要定高目标,执行力要强,说到做到而且分秒必争、提前做到,更要高标准严要求,对待质量问题不留情面。做到这样子,才是对用户最大的爱,对自己和同事最大的爱。
早晨十点之前完成工作:几年前看过日本作家高井伸夫写的一本书,书的名字就是这个,从那以后我也把这个作为我工作的原则之一。每天做事情,原则就是要事优先,在精力最旺盛的时候做最重要的事情,先把大石头搬掉,然后是中石头,小石头。
写日记三省吾身:坚持写晨间五分钟日记,记录感恩的事情,要做的事情,要反思的事情等。每天花很少的时间,做简要规划和反思,持之以恒,养成良好的记录习惯,也能每日精进。
真诚赞美周围的人:善于发现周围人的优点,做得好的地方,哪怕是很小的一个点,都要积极地基于具体的事件进行赞美,每个人都需要关怀,也都需要得到他人的肯定,没有例外。
周末至少工作半天:不论是在家还是来公司,每个周末至少要正式工作半天,先做到在时间上的投入。当然,现在公司经理人实行大小周制度后,这一点比从前做得更好。
每周至少围着公司转一圈:尤其是公司的规模越来越大,也有越来越多不认识的同学,每周围着公司转一圈,刷刷存在感,一方面让自己对公司有更多的感知,另外也借机会多认识一些同事,有缘在一起工作,是很幸运和幸福的事情。
吃工作餐时尽量约着同事一起:因为疫情的原因,这一点好长时间没有做了,不过我是相信聊天就是生产力。尽量防止同事进公司的时候,见过 CEO 一面,离开的公司的时候,再见一面的尴尬情形。
工作日尽量不喝酒:这一点在努力做到,作为一个公司的领导人,还是要时刻保持头脑的清醒,因为你不知道第二天会有什么重要的会议,或者重要的客户来。工作日就是要拼命工作,就是要努力创造工作中的价值。
6 点半之前起床:醒了就起床,不要赖床,可以先坐起来一会儿,然后强制自己开始洗漱,冥想,运动。无论前天睡得再晚,这个规矩都尽量不要打破,这也可以强迫自己早睡觉,少刷手机。
生命在于运动:坚持运动,每天至少跑步三公里,五公里最好,周末要跑个至少十公里的长跑,条件允许的情况下,可以跑二十公里,保持身体的持续锻炼。
每周读一本书:最后一个原则还是和“书”有关,书中自有黄金屋,书中自有颜如玉。不论是工具书,还是小说,还是人物传记,开卷有益。平时我们都是在输出,通过阅读书籍,可以弥补我们的输入,做到两者之间的平衡。