Search This Blog

Loading...

Friday, November 23, 2007

城里的月光

城里的月光
每颗心上某一个地方
总有个记忆挥不散
每个深夜某一个地方
总有着最深的思量

世间万千的变幻
爱把有情的人分两端
心若知道灵犀的方向
那怕不能够朝夕相伴
-
城里的月光把梦照亮
请温暖他心房
看透了人间聚散
能不能多点快乐片段
城里的月光把梦照亮
请守护它身旁
若有一天能重逢
让幸福撒满整个夜晚

这是一首许美静的歌,是一首很旧的歌。我初次时听到它是十年前,那时我正在应付PMR, 每逢夜晚,就会坐在书房里读书。不时我的邻居就会播放歌曲。他来来去去,就只有播放一首歌。

对了,就是这首。

我听着听着,起初只是觉得它好听。可是听久了之后,竟然爱上它了。那首歌陪伴着我长大。那个年代,充满回忆。年少轻狂,做事常常莽撞。青春岁月,忙碌一天,到了晚上,总是觉得日子还很好玩。看人也很简单,交朋友也不计较,只道全世界都是好人,这世界充满了希望。偶尔暗恋其他女生,看到她不睬我,时而神伤,天昏地暗,但过了不久就恢复原状,这世界又立刻光明一片。

只是,岁月催人老。在社会磨练多年,看透了世间繁华,也看破了人生的勾心斗角。已经好久,好久没有好好的坐在满天星空的夜晚,怀在单纯的心,细数天上星星。现在的黑夜里,我不是太累,就是还在电脑桌前,不是工作就是网漫游。总之已经失去了赤子之心。

但是今天,我提早放工,不经意又听到这首歌。啊,顿时想到我的中学生涯,又想到两个中学朋友分别在今天明天结婚。其中一个,还给我送来自制的请卡.我原本答应他们出席,现在却放他们飞机,感觉过意不去。如今勾起往事回忆,一股感伤顿时油然而生。那段岁月,给我多少甜蜜回忆。我多少次希望时光可以倒流,可以重现过去无忧无虑的日子。但是这些都是镜中花,水中月,究竟是不可能的事。

只是希望我那两个结婚的朋友,可以婚后快快乐乐的生活。

愿天下有情人都成眷属。

The problems with Forecasting Software Shipping Date

When was the last time you have successfully predicted the shipping date of your software?

As far as I can recall, we never failed on this effort.

Yes, out of all the projects I participated, we never failed--even just once-- to forecast our software release date, as far as our customers were concerned. We might be late for our own internal milestones, but we were never late for customer's delivery.

Want to know our secret?

Really?

OK, let me tell you our dirty little secret. But first promise me you will keep this piece of information to yourself and please, please don't tell anyone that I gave this secret to you.

Ready?

It's easy, we never tell customer when we can release our software until we are readied. That is, we don't even bother to forecast the software release date. No try, no failure, as simple as that.

We all know how hard it is to forecast software release. There are always last minutes bugs, killer features that are impossible to be left unattended. And it is very, very hard to keep track of software scheduling also. I mean, you the developers love coding but despise paperwork right? How about filing in forms or logs, those boring forms that ask you about what you have done in the morning, afternoon, evening and night? No only that, you need to remember meticulously
  1. Where all the log forms are kept, and
  2. how long you spend on each task, and
  3. Adding in new tasks whenever needed
For most the developers I know of, after a day of hard work, they would rather:
  1. Play, or
  2. Hack even more code
But not filing out forms so that their managers can judge them clumsily.

Furthermore, keeping time logs just doesn't make much economical sense, especially for a small team. Because even if you can faithfully keep all your time, what use is it to it? You still need someone to read everyone else time logs, to extract information from there, update the Gantt chart in Microsoft Project and setting all the path dependencies. All these overheads add up. And yet at the end of the day, no one knows how useful the Gantt chart is.

There are just too many barriers to even track the software development process, let alone to produce an accurate software forecast. Some of barriers, to borrow phrases from the Mythical Man month book, are because of the essence and others are of the accident inherited in software development process itself. Some of the examples of the essence are volatile requirements, difficulties in debugging etc. The accident is, in a large part, due to the decoupling of time log keeping from the software development process and the tediousness in updating all the charts.

But, not all hopes are lost. A good issue tracker can help to reduce the accident, and thereby making shipping date forecast more like a science.

The best way an issue tracker can do this is by directly integrating the time keeping functionalities into an issue. Whenever a developer gets an issue, he will have to set the estimation time, and starts clocking his activities. When everyone starts to do this, the issue tracker will have a wealth of data regarding the developers' time as well as their best estimates in finishing their remaining tasks. Of course, these data can be processed in order to give a meaningful interpretation of the current stage of software development. It can then be used to generate forecast as well.

A neat solution, isn't it?

Of course, there are more to using an issue tracker as a software project management tool. This I will explore in the future posts.