自己的经验越丰富,完成项目或任务的时间反而越长

Zilk1988年14岁时就开始编程,此后尝试过几种职业,最终还是在1997年决定成为职业程序员(又称码农),现在已经39岁,对此选择依然无怨无悔。

但是后来他发现一个问题,自己的经验越丰富,完成项目或任务的时间反而越长。因为他见过了太多可能会出问题的情况而对选择踌躇。比方说,假设他刚想到要写一段写入文件的代码时,电光火石之间他就已经开始担心起下面的一系列的问题:权限、锁定、并发、原子操作、迂回/框架,不同的文件系统、目录中的文件数、可预测的临时文件名、PRNG(伪随机数生成器)的随机性质量够不够、操作过程中断电怎么办、API怎么写才好理解、文档应该怎么写等等。

简而言之,他的问题已经从“怎么做”变成了“怎么做最好/最安全”。

结果就是他他做出来的版本坚如磐石,但是也导致他完成项目的时间比菜鸟还要长。

Zilk说,他自己精通算法、热爱数学,享受复杂项目,专注度也没有问题。也许经验是有问题(尽管已经39岁了),导致害怕犯错,使得项目费时。所以他在StackExchange上邀请同行帮助他解决这个问题。

下面就是精选出来的解决方案:

Telastyn:

你完成项目并不慢。以前你认为自己的菜鸟项目做完了但实际上并没有完。你应该把质量卖给客户。“公司可以做得更快成本更低,但项目真的完成了吗?或者说你愿意花几年的时间找bug吗?”此外,你还应该知道并接受那句老话:“完美是好的敌人。”

sevenseacat:

“好、快、省只能3选2”。以前你懂得少所以牺牲了“好”,现在你懂得多了却牺牲了“快”。

mouviciel:

似乎你的经验的确不足:)。教训:遵守需求即可,不要想其他。这样才不会实现不需要的功能。

Satish:

应考虑敏捷方法论而不是瀑布流。先交付然后迭代交付。此举有助于降低风险和成本。

DXM:

似乎你加入黑暗面:管理的时候到了。

我不是要建议你放弃编程变身经理。但从你的描述来看你的经验仅限于技术层面。写文件这么简单的事情你居然能想到10个方面的问题,稚嫩一点的开发者绝对是想不出来的。这不是什么坏事,但是……

黑暗面的一切都与现值有关。它要考虑的是如何用最小的投入实现最大的产出(成本效益分析)。商业上的一切事情都要归结到成本、成功几率、失败几率、潜在回报等问题。做好这方面的数学然后采取相应行动。

哪怕你是开发者也无妨:忽略权限和命名冲突的情况下建个临时文件只需5分钟的时间。净收益:团队其他成员可以开始依赖此文件的代码编写工作。这是不是一个完美的解决方案?当然不是。99%呢?95%?90%?这些可能性是存在的。

还要问你一个问题:你对技术债务(注:快速解决但会增长后续维护成本的做法)感觉如何?有人认为不应该有技术债务。我不同意。跟商业一样,技术债务让你可以借到“金钱”和“时间”以便晚点交付某样东西。2年做出一个完美解决方案,或者用4个月时间快刀斩乱麻作出客户可以使用并且购买的东西,哪一个更好?判断当然要因情况而定,但是大多数情况下如果你要让客户等两年的话,客户可能早就跟竞争对手签约了。

关键是像管理商业债务一样管理好你的技术债务。借的钱不够的话就拿不到最佳的投资回报。但是负债太高的话利息会把你压垮。

我的建议是用番茄工作法。专注于小的时间间隔(番茄),然后为未来的工作/研究分配这些时间段,并且在执行的过程中不断根据事情的优先级进行调整。

Saul:

编程的一个关键是管理并控制好复杂性,这是我的最高优先级之一。忽略了复杂性管理,要么缺陷频发,要么软件的ETA(预计到达时间)急剧增加。

软件复杂性有很多不同的管理层次和办法,好的做法可以是这样的:“任何软件项目的最高优先都是客户满意度,这是客户期望的函数。”

换言之,软件复杂性取决于你控制客户期望的水平如何。

如果你接受这个观点,那么下面两点也很显然:

客户期望必须明示 客户期望永远都可以改变且通过协商完成。

你举了一个很好的例子,“直接写”还是“无数的其他考虑”。考虑一下,如果有人详尽写下了此二者的需求,双方的功能描述还是一样的吗?

同样是造飞机,F16能飞,航模也能飞,但那能一样吗?

本来我打算把所有建议都摘录出来的,但是考虑到上述的精彩见解足以解决Zilk的困惑,并且为了践行这些建议,本文就此打住,感兴趣者可参见完整讨论。

最后我只补充一句:

你还可以看看麦当劳理论。

时间: 2024-10-04 22:59:28

自己的经验越丰富,完成项目或任务的时间反而越长的相关文章

经验分享:SEO项目推进计划制定细则

虽然seo操作的方式大家都大同小异,但为什么最终的结果却千差万别呢?很多东西别人做了你也做了甚至做得比别人更多一些,但造成最终不一样的结果其实就是很多细则没有注意到. 当接手一个seo项目时,很多新手最容易犯的毛病就是心急,总想着网站很快收录,排名很快提升,所以一天天拼命的发外链,当没有得到想要效果的时候就心灰意冷,干脆不操作了,这对seo优化是一个极大的弊端,新手操作seo项目应该一步步来,按照计划稳定稳步上升效果. 一个全面的项目规划是成功的基础,正所谓"工欲善必先利其器",通过笔

Java Web项目中使用Socket通信多线程、长连接的方法_java

很多时候在javaweb项目中我们需要用到Socket通信来实现功能,在web中使用Socket我们需要建立一个监听程序,在程序启动时,启动socket监听.我们的应用场景是在java项目中,需要外接如一个硬件设备,通过tcp通信,获取设备传上来的数据,并对数据做回应. 先看一下web的监听代码: import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; public class

tomcat-web项目运行一段时间就宕掉了,警告: processCallbacks status 2

问题描述 web项目运行一段时间就宕掉了,警告: processCallbacks status 2 以下是日志信息,请大家帮忙看下: 2014-05-07 20:03:57 Commons Daemon procrun stderr initialized 2014-5-7 20:03:59 org.apache.catalina.core.AprLifecycleListener init 信息: The APR based Apache Tomcat Native library whic

请问发布这样的项目大概要多少钱或者多长的开发时间?

问题描述 请问发布这样的项目大概要多少钱或者多长的开发时间? 配音软件,一些英语视频以及动画视频,消除原人声后,內录自己的声音,并添加到视频中,然后再播放出来,和原视频作比较.主要要求有个简单的界面把这一切集成起来.不知道如何发布这样的项目,感觉语言描述的不是很清楚,另外也想知道这样的软件需要多少资金和时间?谢谢解答. 解决方案 格式工厂直接可以转..可能需要服务器脚本去操作什么的

《BI项目笔记》创建时间维度(1)

原文:<BI项目笔记>创建时间维度(1) SSAS Date 维度基本上在所有的 Cube 设计过程中都存在,很难见到没有时间维度的 OLAP 数据库.但是根据不同的项目需求, Date 维度的设计可能不大相同,所以在设计时间维度的时候需要搞清楚几个问题: 你的业务涉及到的最低的细节级别是什么?比如按季度查看报表还是按月份,或者按周,或者再甚者按天.这个细节级别需要弄清楚,比如在一些销售数据统计,有的时候可能更多按季度或者按月来查看报表.但在有的监控一些机器运行数据的统计,可能会按照小时或者分

《BI项目笔记》创建时间维度(2)

原文:<BI项目笔记>创建时间维度(2) 创建步骤:   序号 选择的属性 重命名后的名称 属性类别 1 DateKey DateKey 常规 2 Month Key Month Key 月份 3 English Month Name English Month Name 每年的某一月 4 Month Number Of Year Month Number Of Year 常规 5 Calendar Quarter Key Calendar Quarter Key 季度 6 Calendar

外包 项目经理 经验-关于外包公司项目经理工作经验的问题

问题描述 关于外包公司项目经理工作经验的问题 我现在在一家公司做项目经理,有35人的团队,开发.测试.QA.CMO都有,做的营销类系统,三个项目并行开发,自己感觉挺有挑战性的,能够学到不少东西,但是有的同事说外包公司的项目经理将来跳槽的话可能别的非外包公司不认可,但是我各人以后不想继续呆在外包公司.所以想征求一下大家的意见,外包公司项目经理跳槽时,非外包公司到底认可这些工作经验吗? 解决方案 求携带新人入外包 !不想简历包装 解决方案二: 项目经理就是项目经理 只跟项目有关跟你做不做外包无关

[经验分享]站长必须学会合理安排和管理时间

作为一名站长,我们几乎每天有一半以上的时间做在电脑前,但是很麻烦的是很多人会在不知不觉中耗掉大半个工作日,一天下来几乎没做任何事情,很多新手站长应该都有这方面的困惑,那么应该要如何有效地时间管理呢? 下面是我总结出来的一些经验,希望可以给您有所帮助. 一.把你每天固定在电脑前的时间记录下来,也许很多人认为站长的生活是没有规律的,但是我认为,一名合格的站长必须合理地安排每天的时间,生活的规律性是靠自己来决定的. 以下是我的记录: 7:00-8:30:洗漱晨跑早饭 8:30-11:00: 我一般会利

在项目中停留的时间

问题描述 就是我做的那个项目...实施人员或其他人员在项目里填写信息时...如果信息过多,填写的的时间一长....当你点击保存按钮时...它就让你重新登录...结果他们填写的那些信息又得从填....我想让这中间的时间长一点...在哪里设啊//B/S结构.. 解决方案 解决方案二:来人啊..帮帮忙啊..解决方案三:web.config中设置<sessionStatetimeout="40"mode="InProc"/>解决方案四:楼上正解解决方案五:在那个