从员工的角度看管理

从员工的角度看管理

读《格鲁夫给经理人的第一课》

工作的规划

在你规划行动之前,一定记得先问自己:有什么事情如果我”今天“做了,可以让“明天”更好,或者至少让“明天”不会更糟。

事实上,我在工作前两年对工作和生活都没有过一个上心的规划。很多时候是顺应环境的变化而变化,比如在途牛,很多时间都需要加班,但是我很少去思考为什么我的工作需要加班,除了特定的上线点无法规避之外,我能不能通过自己发声去改变任务量不均衡(任务量多的时候很多,少的时候又很少)的情况,能不能尽量参与到任务量的分配过程中,而避免很多被动的情况,很可惜我没有做到,后来到了笛风,也是通过规范化的任务评定流程来减轻了工作上的压力。这是非常值得我去思考的地方,如何规划日常的工作和生活?

现在我逐渐开始摸索任务的细分,我首先做的工作是“番茄工作法”,它的意思是将一日工作的8到10个小时分隔成25分钟的小段,依次去执行。通常我们会选择将主要的工作留在下午去做,因为上午通常精神比较困而且需要处理昨日留下来的杂事,因此我通常会选择上午一个小时和下午的4到5个小时来分隔我每日的工作任务。

举个简单的例子,比如我这个月的规划有:

  • 完成既定的工作,即公司安排的工作量
  • 学习公司内部的组件和框架
  • 学习一些额外的技术,拓展知识面,并且写一写小项目来熟悉

这么看来,第一,首先公司安排的工作量是必须要完成的,但这其中通常包括任务评定的时间和配合测试的时间(即掐头去尾),这个时间是碎片式的,我应该怎么样去利用?

第二,学习内部组件的任务的优先级是要高于学习其他技术的,如同格鲁夫在第一章制作面包的流程中所谈的那样,我们首先需要找出流程的关键任务,并尝试去优化它。我主要的任务是公司分配的工作量,学习内部的组件和框架将大大提升我对工作内容和项目的认知,缩短我接下来的开发时间,同时在学习的过程中避免踩入某些坑中(因为组件内一些比较明显的坑开发者通常会在源码中的README中提到),但是,学习组件也是一个过程,我应该怎样去安排它?

第三,学习额外的知识是非常有必要的,尽管它可能是我目前的工作上所不需要的知识。我们通常会把学习比作攀峰,然而两者也是比较相似的,我们不可能一步从山脚跨到山顶,

这里有一个笑话:有人问,如何看待白银市公安局换了局长,就破了连环杀人案?有人调侃说,今天早上我吃第三个包子才觉得饱,早知道我就不吃第二个包子了。

知识和技能的进阶也是循序渐进的,两年前,我还不知道ajax,git和node,一年前,我还不知道webpack,gulp和linux shell,现在,我还有很多很多模糊的知识点和技能需要去学习和实践,而且很多知识往往需要很多其他知识的铺垫,就像多边形永远比三角形和正方形多更多可能,可供拓展和学习的方面也就越丰富。比如我记得我在不久前,遇到了一个关于[深拷贝浅拷贝的问题](),深究起来,发现其中涉及到了相等的概念定义,js的类型转化,深浅拷贝的区别,各框架的实现,关键字的真值转化等等方方面面的知识,任何一个知识点又可以拓展出新的知识面,所以额外的学习是绝对不可缺少的。问题也产生了,如何平衡主次任务之前的关系?

我们先从我的一份日常任务安排表开始说起:

每周任务:
主任务:
1 提钱游新手指南(0901提测)
2 修改手机号流程(0907提测)
3 实名验证(已提测)

学习任务:
1 Grunt项目发布流程
2 validate验证组件的实现

额外学习:
1 学习iScroll的源码
2 linux命令行的学习

我们从下往上看,首先,我为什么需要学习iScroll的源码,因为有人提到过iScroll和lodash的源码(或者underscore)都是值得一读的,不仅可能学习到框架开发的逻辑,还可以借此学习代码的规划化。最重要的一点是,我现在开发的移动端项目必不可少的组件就是基于iScoll开发的,学习它有益无害。

其次是linux命令行的学习,这是源于我在写构建化工具的时候,通常会发现底层还是linux命令实现的,我基于这个兴趣,毅然要入门去看看它到底有多强大。

本周的学习任务是hybrid项目发布流程和validate验证组件的实现。这两个就比较接近于我日常的开发项目了,现在公司内部还是有不少的项目使用hybrid开发,grunt构建的开发方式,由于我对grunt不是很熟悉,目前也没有大量的时间可供我去深入学习,所以我退而求其次,只大概学习其基本的开发流程,本地开发,构建,打包,发布和ftp上传,所以发布流程我只需要花点时间简单掌握就行。其次是validate的验证组件的实现,这个是因为我目前在开发中的一个项目需要大量使用到这个组件,而且这个组件的使用也涉及到很多Angualr指令的定义,简单来说是比较复杂,因此我会选择花大部分的额外时间在这个组件的研究上面,最好是能够在使用上做些优化的工作。

最后是本周的主要任务,也是公司分配的任务量,首先在此之前我已经对工作量进行了评估,除去已提测需要配合测试的任务,第一个任务,主要的工作在静态页面和UI上,因此找设计师尽早给到切图和标注是重点(找出关键点),然后找到产品拿到所需文本和链接,基本任务就能完成了。评估大概需要一天半的时间。第二个任务花费时间会比较长,因为是流程性的工程,我首先列举出几个可能开发的难点:

- 手持身份证扫描功能(后确定是图片上传,那就确定为hybrid引用本地图片上传功能)
- 任务流程是否准确,功能是否全部覆盖
- 相关说明文本和链接
- 接口格式的定义

这其中除了第一个需要我自己找相关代码研究,其他都需要找其他人配合沟通(产品,测试,UI),所以我先将问题列表列出来,依次和相关人员沟通定方案,或者在他们沟通,不需要我参与的时间,去研究相关代码,搭起项目框架,最后我预估工作量大概是5天,静态页面2-3天,接口定义和联调至少也需要2到3天。

接下来就是分隔每段时间,把工作量细分到每一小块任务的事了。比如,首页我首先需要画页面,定义哪些是展示的常量,哪些是作为Flag的变量,这种工作通常是大脑考虑一下,简单细分的事,我也不会记著笔端。简单的事情结合成时间段去做,重复相同的事情努力找到优化的点,提高效率。那么,我们开始回答问题吧。

时间是碎片式的,我应该怎么样去利用?

答:碎片式的时间用于学习碎片式的知识点,比如:某个简单的库,如iScroll,某个HTML5的新标签,新协议,es6的新方法等等,这些都是碎片式的,但汇聚起来可以是很全面的知识体系了。

学习组件也是一个过程,我应该怎样去安排它?

答:学习一个组件也是一个过程,就像NPM的包那么多,我们不可能都接触到,但是我们用的多的包心里一定对它的功能点和特性有所了解,比如express,webpack和gulp。学习组件也是这个道理,只有用得多了,用的熟练了,我们才有好奇去探究其实现的原理。我认为学习组件应该是放在使用组件之后的,在我们对其了解的程度上去研究其实现,甚至完善其实现,这些都可以是学习的过程,至于时间,我认为可以放在项目提测后的一段时间内。有相对整段的时间和一定的了解度,学习可以事半功倍。

如何平衡主次任务之前的关系?

答:我目前的想法是,主任务是头一位的,不存在为了学习和研究就对主任务懈怠的情况,即使在碎片化学习过程中遇到了突发的问题,也肯定是以解决现有问题为主,如果存在时间安排冲突的情况,我会选择放弃已有的学习进度,以开发任务为主重新安排时间表,这也是对个人职业和操守的尊重,公司利益的维护。

最后我还想谈一谈时间段的概念,相对于学生时代,我们现在整片的时间已经越来越少了,我也知道如果不是因为单身,我也抽不出这么多时间用于学习,所幸我现在还一直有兴趣去做这件事,我最喜欢的阅读往往是洗完澡后,靠在沙发上看书的那一段时间,有时候会看看技术书,有时候会是小说或者经济或者管理的书,无论是什么,我庆幸我都对他们抱有最大的兴趣和热情,让我不停的向前走去。