标签: 时间管理

为什么程序员总是不能准确预估工作量

一个经验丰富的项目经理声称,他拿到程序员的时间估算以后,先将它乘以π,然后单位变为下一个时间数量级后,才能得到真正的值。即1天转化成3.14周。他过去因为程序员不擅长估算时间而吃尽了苦头。我创建了一个用来翻译程序员时间估算的表格,来尽量缩小估算错误。

 time

时间估算是困难的。每一个程序员都有一个现实的估计区间。低于这个区间的估计意味着(构件,测试,检查代码的)时间开销被低估了。超过这个区间的估计意味着这个任务太大而很难预估。

对于初级开发者来说,这个区间甚至都不存在。他们忽略(构件,测试,检查代码的)时间开销,同时困难的任务他们却又无法预估。我想说一个有经验的开发者应该在0.5至24小时将事情做完。超过24小时,就需要细分。这项工作应该在开发者的头脑中完成,然后总和到60小时。但是即使是有一些有经验的开发者也需要有利用管理时间块来思考。

同样重要的是明白:编程经验不等同于估算经验。一个不被包含在估算流程中的开发者将不会擅长估算。同样,如果实际的时间花费不被测量和用于与估算比较,那么将没有反馈来学习。

最后,每个程序员都应该具备估算的技能。为磨练这个技能,接手每个任务时,先决定你要做什么。然后在开始之前估算任务所需时间。最后测量实际花费时间,并与估算相比较。同样比较你实际完成的与计划完成的。这样你将会既提高你对一个任务包含细节的理解,同样也提高了你的估算技能。

给开发人员的时间管理建议(转)

软件开发是非常令人兴奋的工作,经过多年的工作,你不仅可以得到相应的报酬(随着工作经验增长)还会有其他晋升的机会。大多数人只关心保持头浮出水面。但这并不是我们所要追求的目标,那仅仅是我们在学校或者孩童时代的梦想?

为了赚更多的钱,大多数人还会找额外的工作并且不太关注编程以外的东西。没有时间休息、没有时间和家人朋友小聚、除了工作还是工作。因此导致压力越来越大,对生活的不满足感油然而生。

 

其实我们只要稍微调整一下时间管理原则,会让生活变得更好,会让我们的生活和工作都很成功,并且还会促进软件和Web开发事业的发展。

设定目标:长期和短期

想要生活变的更好,首先应该知道该怎么做才会更好?下个星期、下个季度、未来两年甚至未来20年,你会在哪里(如果你很年轻,必须决定你想要什么?确定你的追求所在!)。

善待计划,勇于执行计划

拿破仑曾说过:“只有合理的去计划,才能达到令人满意的结果!”请不要忽视该原则和投资计划。请记住,混乱是没有计划的。另外和大家分享一句古典引文:“有时我坐下来思考,仅仅只是坐着思考”,通常,这种现象会浪费很多时间。如果你发现自己处于混乱的状态,那么可以换个事情做做,转移一下焦点,比如站在窗前看看外面或者放松放松双眼。

如果不能计划,只能跟踪

如果你现在不能计划任何事情,别担心,以后再做。仅仅跟踪你所做的:上一篇论文、excel表格或者使用一个任务管理软件。每两小时更新一次列表或者每天结束时更新。这样有助于你找到相同的中断时间或者重复的事情,以后你就可以进行很好的规划。即使一个星期追踪一次,也可以给你的生活带来些光明。

看一下你的时间日记并且试着发现并非需要真正去做的事情,一些事情可能由其他人做更好;工作,更加快速有效;行动,占用他人时间等等。

你可以下载一个简单的时间跟踪模板

把所有要做的事情列入清单

有时候,我们会觉得无所事事,可是过一会,会突然记起(或者管理人员提醒)一些重要的任务要马上完成,其非常急促和重要。避免这种事情的唯一方法就是把将要完成的事情列一个清单,无论什么时候,只要有新的任务,就在清单上面记下。如果你不能及时进入电脑或者忘记,你可以从头写一下或者借助媒体工具(比如随身携带的手机,在上面记下来),最后把它列入主清单中。

对每个任务进行时间评估,确定完成期限。这样会避免在最后一刻才去做。

调整优先级

德鲁克格言说:“做正确的事情并不重要,重要的是做正确的事”。在软件和Web开发工作中,常常会为了某个任务花费大量的时间,结果只产生很小的价值或者毫无价值。例如写一个正则表达式来拆分coma-delimited数组或写一个CORBA应用程序来访问远程服务器上的两个方法。没有上面灵丹妙药可以杀死优先级案例,但可以提供一些技术给大家:

● 首先可以去问客户或者经理给任务进行适当的优先级排序。但事先要想到:并不是每个客户都会立即回答。

● 如果客户依赖于某件事,要先做。

● 对于两个任务的轻重缓急情况是一样的,那么难度较大且自己不太喜欢的放前(为什么不把自己喜欢并且感兴趣的优先呢?)

● 当切实可行时可以委托

推崇代表

如果有人可以成为你工作中的一部分,请不要犹豫与他分享工作。分享目标而不是程序,承担责任和问责制。对一个任务进行清晰的描述并且提供一个“如何测试”的例子。

下面这些规则可以帮助决定是否可以委托:

● 他(她)会做的更好更快,如果是,毫无疑问,委托他(她)来做。

● 如果你有更重要的任务需要去做,如果可以提交一个任务给别人。如果是,可以!

● 在没有你帮助的情况下,他(她)能够完成。例如你不在办公室?

● 当然,你可以把你的工作委托给你的老板,但是不要滥用。

在一个多项目环境中,整个团队工作很难去平等地分配给每个成员。有人不得不做更多的工作。使用Goldrat的约束理论:“直到最慢的那个成员完成工作,项目才结束”,这样将永远无法完成工作。因此在一个团队里面应该推崇代表团成员,而不仅仅是从经理到开发人员。这个过程只能是在一个开诚布公的团队里面才有效,比如XP团队和敏捷开发团队。

完美并不是比好还好

在编码时,准时完成比设想一个更好地解决方案更重要!先让这个工作完成,以后你可以慢慢补充更好的元素进去。做你最好的:“在第一时间正确完成”。不要节约编码约定和代码质量。纯代码反而会增加以后的维护时间。考虑一下单元测试,它可以帮助你在开发中提高质量和加快速度。

对困难的任务进行拆分

人们通常会绕过那些困难重重的任务。但是如果把那些困难的任务拆分成许多个块,不久你会注意到,那些可管理的并且完整的块,已经解决啦!一个非常有用的方法是给每项任务添加“如何测试”笔记。把这个设置成一个个小目标,来帮助任务的完成。如果每项任务都可以自动化测试,相对于重复测试来说,将会节约很多时间。

找出你所浪费的时间

人是社会性动物,我们每天至少要花1小时的时间来处理来自同事、朋友、亲人之间的问题。他们可能会帮你或者让你速度放缓。有些人可能会通过电话、短信息或者邮件直接与你联系。这样就会导致时间中断。6-9分钟的中断通常需要额外4-5分钟即可恢复,如果连续中断5次,将要1个小时的时间。想想如何减少这种中断次数呢?唯一的方法是找到可替代的时间来补充中断的时间,一旦你获得了整个画面,你就会知道哪些是需要保存。

 

有计划的放松和娱乐

牛津大学人体新陈代谢教授Keith Frayn在电视上讲过:“任何人在只有水没有其他食物的情况下,都可以存活60天”,但是如果缺乏睡眠,将会降低很多。1964年,一个高中生Randy Gardner试图打破吉尼斯最长记录260小时,Stanley Coren把Randy每天的状况记录下来,第二天眼睛难以集中,第四天产生幻觉,最后一天口齿不清,注意力跨度短。

熟话说:“身体是革命的本钱”。不要指望在疲劳的情况有较高的生产力。睡眠可以让我们的大脑更清醒的思考。充实的计划并不需要节约睡眠。

开发人员每天在一个固定的电脑面前至少要坐8个小时,这样会产生情感或者生理上疾病。我们暴露的一个器官——眼睛,整天在显示器前监视很长时间,如果不进行防护,我们的视力也会得到破坏。减少对眼睛的伤害有很多办法,在搜索引擎里面输入“训练眼睛”,会出来很多结果,找一个适合你的,在晚餐前或者一天中的其他时间来锻炼。

勇于向你同事,朋友寻求帮助

几乎IT项目多少都会涉及风险问题,这些风险可能是隐藏起来的,也可能在项目初期就会发现。开发人员发现风险后要马上处理解决,即使很小。这样最少需要几天或者几个星期的时间。为了避免这种时间浪费,可以找同事或朋友帮忙或者请他们给出建议。下面举这样一个例子:客户需要给给应用程序提供额外的安全性,在进可能的夹缝中去实现。一方面保护从服务器端下载的组件并且在没有重写硬盘的情况下加载这个DLL应用程序。经过两个小时的研究,我都没有发现任何有帮助的信息。我暂停了一会并且向一朋友寻求帮助,他给了我一个网址和教程,上面正是我寻找和想要解决的问题案例。

奖励自己

每个人都希望自己的工作能够得到肯定和回报,特别是完成一件事情以后。有时候一个小小的奖励,可以激发我们更多的工作欲望。在自己完成一个任务或者一部分工作后,承诺给自己一个奖励,例如让自己看一部有趣的电影,一旦你开发完一个新页面或者新功能,你可以奖励自己吃些糖果或者其他的东西。

结论

这个时间管理技巧仅仅是一个通向美好生活的起点,每天遵循这些原则可以帮助你事业成功、身体健康和获得更多的福利。

细节决定成败。往往人们会忽略一些小而重要的细节。帮助自己实现梦想,避免混乱,有计划的去管理时间,助你成功健康。

 

原文:Time Management Tips for Developers