和华为的一位学长聊了很久,优秀的人果然都有过人之处

2020-09-22 11:09:11 浏览数 (1)

上上个周日和我们大学的传奇人物,研究生在华科,目前在华为的学长聊了一会。收获确实不少,果然优秀的人总有一些过人的地方。

既然答应了这周六要分享我从学长那里学到的一些干货,那今天就来简单说说吧!

我已经很尽力精炼自己的话语了,中间反反复复修修改了好几遍。

所以,还是建议大家一定要看完,内容不是很多,相信你一定会有收获!

01 练好基本功,勿过于追赶技术时髦

American Printing House

一定要把基本功的修炼放在首位。高楼大厦起于坚实的地基,顶尖的程序员同样起于过硬的基本功。

哪些算是程序员的基本功呢?

  • 技术方面:计算机技术基础知识、优秀的编码实践、系统设计、设计模式、定位问题的能力等等。
  • 非技术方面 :对业务的理解能力、抗压能力、表达能力等等。

如何修炼自己的基本功呢?

  • 不断学习,提升自己的认知。
  • 不要单纯为了完成需求而完成需求,还要考虑代码质量比如可读性、bug 数量、能否对扩展友好等等
  • 经常总结复盘。
  • 理论 实践并行。

02 尽量多沟通交流,提高表达能力

一直以来,很多人对程序员的主观印象就是:不爱交流、表达能力不行

我也观察过身边的一些很优秀的程序员,我发现他们中的很大一部分人都喜欢默默搞自己的事情,不太喜欢沟通交流,有的甚至在交流方面有点问题。

不善于沟通交流、表达能力不行的话,你面试的时候都吃亏的不行相信你的身边也有很多技术虽然一般,但是比较会说的小伙伴找的工作比那些真正编程能力强的人都要好很多)。

讲一个大学同学小 A 的例子,我觉得挺惋惜的!

在大学的时候,小 A 是技术方面让我最佩服的一位同学。然而,他后来找的工作却非常差(某外包)。小 A 真的是那种典型的不擅长也不喜欢沟通交流,但是技术非常厉害的程序员(高中就开始学习编程,领先我们一大截。大二的时候花了不到一周就写了一个功能比较完善的校园通)。 我尝试了很多次和他交流关于如何准备面试之类的话题,但是效果很一般。每次和他交流其实挺费劲的,一直他说的话不是特别清楚,二是眼神到处游走,没有重点。 我们有很多同学都向他提过这个问题(主要也是为了他好,希望他不要浪费了自己的技术,可以找个好工作),但是,这种东西不是别人说了就能改的。

不爱沟通交流很大程度是受性格因素的影响比较大。当然,很多人不喜欢交流,是觉得交流可能会打破自己制定的工作计划或者影响到自己的工作效率。

不喜欢沟通交流和表达的人,一般也会更难受到上级的青睐。很多时候你做的工作比别人多,你本以为你可以获得更多认可和奖励,但是,到最后往往收获的认可度和奖励却没有别人高。

做好本职工作是我们的分内之事,如果你能偶尔抽出一些时间,多和你的同事、上级或者 leader 交流问题的话,你所能得到的肯定是远远超过你所付出的那一会时间。

03 根据事情的重要程度安排优先级

说实话,在这一点上,我自己刚工作那会做的并不好,也经常因为没有处理好事情的优先级被 diss。

不知道大家会不会有时候在一个不那么重要的事情上,耽搁很久,虽然这件事情不是很重要,自己也知道要先去做最重要的事情,但就是想把当前的事情做完为止。

如何安排工作上的事情的优先级?

给几点建议大家参考一下,总体原则还是重要的事情优先

  1. 客户、线上、安全问题最优先
  2. 对于后续开发依赖比较大的业务优先
  3. 工作量小,流程比较长的优先比如账户认证,资源申请等等

04 学会安排自己任务,学会制定计划

工作之后,你会发现自己的时间少了太多太多太多。

大部分时间都会感觉每天忙忙碌碌,后头看,却不知道自己究竟做了啥!

前几天自己刚想学习的某个技术、刚想看某本书,忙着忙着却又忘记了。

所以,你需要学会合理安排自己的任务。

我个人比较推荐 Trello 作为个人任务管理工具。

据我所知国内外很多项目都是用 Trello 来做项目管理的。

我平时使用 Trello 记录一些自己想写的文章或者代码,以及一些读者的投稿情况和个人突然冒出来的想法。

下图是我平时用 Trello 记录自己要写的文章或者代码的效果。我还会按照优先级来排列每一个任务和想法。

然后,平时的一些小任务我是通过滴答清单来记的主流操作系统都有对应版本,并且还有网页版、浏览器插件版)。

最后,再来安利一下番茄工作法! 番茄工作法是我一直在用,并且也经常安排给身边朋友的一个时间管理方法,简单易操作,并且效果极好。

维基百科是这样介绍番茄工作法的:

番茄工作法原理:每次专注一段时间(一般是 25 分钟)结束搭配一次休息(一般是 5 分钟),多次专注(一般为 4 次)结束搭配一次长休息(一般为 15 分钟)。劳逸结合,有助于提高工作效率。

我每天会根据事情的重要程度以及难易程度给我当天要做的所有事情排一个优先级,然后按照番茄工作法一个一个地去完成。每一次专注的 25 分钟时间内,我都会保证自己只做这一件事情。空余的 5 分钟休息时间,我一般会简单看看邮件、做做眼保健操或者起来站一会放松一下。

我的番茄任务管理工具是在 Apple Store 上 花钱购买的 Be Foucused 的 Pro 版。

不是 Mac 电脑的也没关系,再给小伙伴们再推荐一个多平台(ios、andriod、mac、win)都可以使用的任务管理工具:番茄土豆

05 深入学习,学会总结沉淀

做咱们这一行,很多人最喜欢抱怨的就是:“我每天都是在做重复的 CRUD 工作啊!没啥意思。”、“这个公司的项目不行,没用到某某高大上的技术”......

然而,很多这样抱怨的人连特么 CRUD 都写不好,写个基本的业务功能一测贼多 Bug。

我在刚工作那会也是这样的。不过,现在再听到别人这样抱怨的时候,我一般都会首先觉得这个人有点浮躁,不知道如何学习提升自己。

单纯把业务代码写好真的没那么容易,抱怨自己天天做 CRUD 工作之前,一定要先看看自己 CRUD 的代码写好没。

另外,就单纯一个 CRUD 的工作,只要你善于学习,还是能从项目中挖掘到很多值得你学习的点。 举个例子,你项目用的是 JPA ,你把 JPA 玩的很溜了之后,是不是可以考虑去研究一下 JPA 的底层原理呢!还比如说,项目某个模块的响应速度太慢,自己是不是可以考虑通过某些手段比如 SQL 优化、DB 参数调优、JVM 参数调优、索引、读写分离、缓存等手段来优化一下呢!

真的!就单纯一个最基本的 CRUD 的项目要考虑到的点就已经够多了。一定不要眼高手低,整天就想着微服务、高并发,总觉得“低级”的开发工作配不上自己的身份了。

再来聊一下回顾总结。

很多时候,我们做一个项目,做完了之后就感觉自己就和这个项目没有关系了。项目上学到的一些东西或者可以改进的地方,完全不想花时间总结。

以至于,很多年之后,你学到的东西还是比较零散的,不成体系。 别人询问你“有没有从上个项目学到点什么?”的时候,自己却没法回答。

不会进行思考总结,你做再多的项目,了解再多的技术又如何?可能就只是表面上好看而已,有些东西永远都成为不了自己的。

对应到我们平时学习技术的时候也是一样,记得一定要多总结思考!

06 要有 Owner 意识

工作之后,经常听到大家伙开批斗会的时候说:“某某 Owner 意识不行!”、“某某很有 Owner 意识啊!”。

什么叫有 Owner 意识呢? 我举几个例子大家应该就明白了。

  • 某天客户突然在群里询问了一个问题,你及时在群里回应了客户。这就叫有 Owner 意识。
  • 觉得项目某个模块的数据库表设计有问题,自己私下进行了深度思考,并给出了优化方案,之后找到技术 Leader 说明了自己想法。这就叫有 Owner 意识
  • 觉得项目某个模块的技术方案有问题,自己找到技术 Leader 进行了沟通。这就叫有 Owner 意识

什么叫没有 Owner 意识呢? 我举几个反例大家应该就明白了。

  • 某天客户突然在群里询问了一个问题,你看到了问题,但是觉得自己的工作还没做完或者觉得这事不重要,干脆就假装没看见。这就叫缺乏 Owner 意识。正确的做法是积极主动地推动问题的解决。如果自己没能力解决或者实现没时间解决的话,可以联系相关的同事帮忙解决。
  • 觉得项目某个模块的数据库表设计有问题,自己就直接找到 Leader 开始抱怨:“这特么表设计的什么鬼啊!”。这就叫缺乏 Owner 意识。
  • 觉得项目某个模块的技术方案有问题,自己睁一只眼闭一只眼,没有找技术 Leader 沟通,技术方案确定之后,却经常抱怨技术方案设计的不够好。这就叫缺乏 Owner 意识。

有 Owner 意识,并不是说让大家都去当“奋斗逼”,故意在上级面前多表现一下。而是说,希望自己能够对工作更加负责,更加积极主动地参与项目的建设。

07 总结

对于上面每一点建议的理解,每个人可能都不一样。

如果你觉得上面某一点对你有用的话,不要关了这篇文章之后你就忘记了,建议你一定要记录下来。从当下开始就去努力践行。

最后,再来回顾一下这 6 点建议:

  1. 练好基本功,勿过于追赶技术时髦
  2. 尽量多沟通交流,提高表达能力
  3. 根据事情的重要程度安排优先级
  4. 学会安排自己任务,学会制定计划
  5. 深入学习,学会总结沉淀
  6. 要有 Owner 意识

0 人点赞