工作时间饱和没有时间提升自己怎么办?
Renyi Lv1

这篇文章主要是用来记录我在知乎上面看到的一篇关于他在工作中的提升和学习方式,也就是产能和产出的平衡方式,对我很受启发以此记录。


以下主要记录他在工作中遇到的问题和解决问题的方式。

保持好奇,勤于在项目中发现问题

  1. 第一件事情是在,2010年的时候,我在第一家公司还是一个新人,我发现我们所开发的客户端启动一次特别的慢。于是我开始思考Windows进程启动的过程中都干了啥,有哪些地方可以优化一下。后来进过系统的研究后我用了两个手段进行改进,将启动速度提升了15%左右。并总结成文反馈给了我的领导。鉴于此类的工作输出比较多,刚工作一年多的时候,我的leader就准备提升我为副组长了。不过我还是更热爱互联网,于是婉拒了领导的挽留,我再2011年跳槽到了腾讯。
  2. 第二件事情是在腾讯内部我同样在工作中进行了深度的知识整理。当时老大给我分配到了一个模块,所有合作方数据源的图片下载模块。这个模块的需求描述起来也很简单,就是把合作方数据中的图片url摘出来,然后下载并存储到腾讯的服务器上。在这个过程中,引发了我很多的思考。比如新建一个空文件的话消耗磁盘空间吗?一个文件夹下最多能存多少个文件?文件名太长了的话会影响系统性能吗?基于这些深度的思考我进行研究和学习,后来的技术方案就是为了提高性能,我们将文件通过hash的方式散列到三级目录结构下。保证每一次获取文件都很快完成。而且我还整理除了一篇热文,该文章在腾讯内部KM年度热文榜上登顶,而且在外网也是广为流传。

带着问题去深度思考、查各种资料

在我思考的过程中,我需要回头去翻各种经典书籍、看Linux的内核源代码,以及其它各种网上的资料。曾经有一次为了把一个内存的工作原理的问题弄明白,我嫌家里的书少,网上的资料不够,直接跑到国家图书馆待了半天。

别偷懒,加上动手验证实测

在看完书,查完各种资料后,理论上你可能得到初步解释了。但其实这个时候你的理解深度还远远不够。而且还有可能是你查到的资料是片面的,甚至有可能都是错的。这时候的动手实际测试显得尤为重要,用各种性能测试工具也可以,自己直接亲手写一段代码也ok。反正就要用实践检验理论是否正确。不正确的时候,再去别的地方搜其它的解释。如此往复迭代,直到把疑惑彻底消灭掉为止~

将你的成果用起来,提升项目效果

举个我几年前的小栗子,当时接手了前任开发留下来的一个推送模块,推送一次要跑将近12个小时。经过我剖析业务逻辑后发现主要耗时都花在了用几百万的imei到一个几千万条记录的数据库里查询了,大量的网络IO加随机磁盘IO。我把业务逻辑进行了改造,而是一次性将表中数据全查下来。然后在本地机器上在执行顺序读取遍历查询。这样大量的网络IO、大量的远程mysql server的随机磁盘IO全被我干掉了。在mysql上和本地服务器上全部都是磁盘顺序IO。整体耗时直接从12小时下降到了20分钟左右。

时间管理

最后再聊聊时间管理吧。住的尽可能离公司近一点,如果实在受成本限制,那就想办法把路上的时间利用起来,听一下技术音频课程,或者是包里随身带两本书。我个人的做法是我在公司的工作时间之内完成公司的开发需求。等到下班或者早上,反正每天固定要抽1-2个小时围绕工作中的技术点进行深度的思考,然后都写成技术文章并分享出来

以上是引用知乎地址

 评论