引言
是不是觉得同样是活着,别人为啥就能做这么多事呢?
是不是经常8小时班上下来,却不晓得自己干了些啥?
是不是习惯于在Email, BBS, Google Reader间切换,感觉也挺忙的呢?
你需要时间管理!
你知道自己一天写了多少代码吗?
你了解自己一周有多少时间在网上游荡吗?
你能说出一个月有几天陪着家人吗?
你需要PowerShell!
管理?先记录!
时间管理就是用最少的时间做最多的事。和优化程序的性能一样,为了提升时间的利用率,得先知道自己的时间都花在什么地方。如果上班时间有50%都浪费在琐事上,剩下的一半时间再集中精力,一天的成效也好不到哪去。相应的,如果90%的时间都在干活,相比于竭力缩小剩下的走神时间,反不如稍稍提高一点效率。射箭强调有的放矢,治病讲求对症下药。知晓瓶颈所在是优化的前提。
那么如何知道自己的弱点在什么地方?记录,养成记录的习惯。
试想当一周结束,你看到一张统计表:这周加班5小时,所有工作时间中,27%写代码,22%开会,16%写文档,35%偷菜。写了3600行代码,出现了75个bug,自查出69个。是不是觉得时间管理一下子简单了很多?多写代码少偷菜,少生孩子多养猪呗。当然这个“偷菜”可以是很多东西,办公室政治,信息上瘾,搭公交上下班…如果没有这个表,恐怕很多时候自己都意识不到有这样多的时间浪费在了琐事上,还在苦恼怎么提高效率呢。
记录不仅可以为管理服务,这个行动本身就能给人带来动力。“吾日三省吾身,则知明而行无过矣。”记录不仅仅是动动笔,当回顾过去所为的时候,它更是一个“省”的过程。为什么前两周每周都是3000+行代码这周只有1500-?为什么昨天老婆发了3次火而此前3周一共才生两次气?为什么…?声色犬马,光影浮华,我们太容易忽略一些就发生在我们身边的变化,而随手的记录,说不定就会让我们即时警醒。
可是…难道要我每次上网都要记下来上了几分钟,每次老婆发火都要立马翻个小本子出来记个陈年烂芝麻帐吗?
记录太烦人,秘书来帮忙
当然不,你需要的只是一个秘书。这个人心隔肚皮的世界小蜜可要不起,不过电脑,手机这些冷冰冰的塑料家伙倒真可以成为你的伙伴。我没有能力搜罗出一系列神通广大的软件来一下告诉你上个月偷了几棵菜上了多少网,但也许可以启发你打造自己的电脑秘书。
让电脑这个不怕麻烦的家伙说出你用电脑干了什么事可是他的拿手好戏。我们就从这里开始吧!可是…用什么工具呢?PowerShell呀!就像我们上次介绍的,这个全新的命令行工具可以轻松地获取系统信息,接合.NET对象,管理后台任务,还能调用Excel等高级数据分析工具。数据记录、处理、呈现、挖掘一条龙服务,舍我其谁呢?
观察
整个时间记录的思路比较简单。电脑反正不怕麻烦,可以每过半分钟就来看看你在干啥。等一天结束的时候再把报表拿给你看就好。
可是问题来了,电脑怎么知道你是在上网,在写文档还是在写代码呢?哈,对于PowerShell来说,这个可简单了。还记得PowerShell中传递的是一个个对象吗?其中每个命令返回的都是含有丰富信息的对象,我们可以大加利用。至于怎么知道每个对象有哪些属性,可以用get-member这个函数来查看。比如Get-process可以得到当前所有进程,我们可以用get-process | get-member来查看“进程”有哪些属性属性。当然由于ps是get-process的alias,我们也可以用ps | get-member来查看。
复制代码 代码如下:
Name MemberType Definition
—- ———- ———-
… …
MainModule Property System.Diagnostics.ProcessModule M…
MainWindowHandle Property System.IntPtr MainWindowHandle {get;}
MainWindowTitle Property System.String MainWindowTitle {get;}
MaxWorkingSet Property System.IntPtr MaxWorkingSet {get;s…
MinWorkingSet Property System.IntPtr MinWorkingSet {get;s…
… …