美文网首页
对于同样的需求,一个月做出来和三个月做出来有什么不同

对于同样的需求,一个月做出来和三个月做出来有什么不同

作者: fourn熊能 | 来源:发表于2019-10-23 11:07 被阅读0次

    程序员对于同样的需求,一个月做出来和三个月做出来到底有什么不同呢?
    答:底层架构不同、可预见未来支持的扩展不同、优化不同。
    或者可以这么说:从某个角度上说,是完全两种东西。

    开发时间的常用评估方式

    首先,评估开发时间的问题,两个常见的方式:
    第一种,会从底层程序员往上报自己需要的时间,经过主管、经理再到总监每一层都会多报出一个百分比的时间,以备用来解决不可预知的问题或bug,其实不预估时间的项目往往是最快的,程序员尽力去完成,但在有一定规模的项目组中却不可取,没有哪个老板或投资人会对没有时间规划的项目开发组充满信心。企业也不会任由程序员来规定时间。而报到老板那的时间也会直接被砍一刀,三分之一的时间被砍掉都算是少的。

    第二种,如果是合同定制的,开发需求非常明确的,一般都会有一个明确的开发周期和时间节点,开发任务会“以终为始”的方式来开展。
    举个例子,六个月的工期,那么第六个月的时候交付产品,需求、设计、开发、测试各自匹配出相应的时间,在这个时间段内完成任务。只要对方不改需求,时间给的合理,这样反而简单了,一般情况下都可以保证deadline来之前上线交付。

    开发时间被压缩的要求,往往来自于不懂行或者没有开发背景的老板,一方面是项目进度、企业进度这类客观性的要求,另一方面是怕程序员偷懒,工作不饱和,自己白付工资这种主观性的考虑。
    在他们的视角中,开发一套系统,三个月的时间成本和一个月的时间成本是一个简单的数学关系。
    外行人做管理层,从来不会关心你短时间内开发的系统所遗留的问题,他们会认为那是程序员应该解决的事,而这些问题实际上会像滚雪球一样一直堆积,最终在某个时间段内集中爆发出来,后果就是系统的架构已经无法再加任何的功能了,只能重写。

    我们假定这个程序员的水平在中等偏上,不存在技术水平以及任何情绪的问题,一切都是按照比较公平的方式去比较,现在企业要做一套系统,需求明确度60-80%,为了简化模型复杂度,我们只要一名程序员,这名程序员负责系统的所有的任务,程序员报三个月的开发时间,如果这个时间被无端压缩至一个月,那三个月开发出来的系统和一个月开发出来的系统到底区别在哪呢?

    架构不同,决定了对未来可扩展的支持的不同

    系统做的可大可小,关键看给的时间,时间不够,即便有能力也会把系统做成小的、扩展性差。
    为什么呢?
    程序员都会选择当前环境下的最优解,和时间赛跑的项目最优解就是,快点上线。
    底层架构?领导又不关心你操哪门子心。
    未来可扩展性?表示不关心,只知道项目完不成会更糟糕。
    反正先让你看到个东西,管他底层是啥样子呢。

    举个例子,你的系统是做一个学校的客户关系管理CRM,实现客户的录入、分配、跟进、报名的功能。
    假如老板或甲方压缩时间,给的时间不够怎么办,那只能做做表象的东西,一个客户表,一个跟进表,两者一对多关联,再加一个用户表和报名表,用户表和客户表一对多关联,客户表和报名表一对多关联,完工,项目做完啦。
    其它不管了,也没时间管,谁让你给的时间少呢?那上面这套系统哪还有问题呢?
    程序员报三个月,被老板压缩到一个月,老板是不是赚到了?

    同样的东西,压缩时间做出来,老板真的是赚到了吗?

    上面那套系统,程序员未来可预见的业务扩展,但由于被压缩了时间,所以底层架构是按照最快最简单的方式来实现的,那架构在哪会出问题呢?
    问题可大了,比如:
    对方需求没说支不支持多校区,整个数据库设计被设计成了一个校区,想要多校区?不支持的,你们没说,没这个概念。
    班级的问题,你们没提,我们也没给你们加,一个学员可以进几个班,一个班级可以安排多少课,是分开计课时?还是一起计课时,不管你上不上都会划去一节课。
    补课?缴费?退费?补款?没说啊,没说可不没有么?为什么我们不写啊,我们只写你们提的需求里的功能,谢谢。
    操作权限问题和数据权限问题,一个客户的市场收集人、销售分配的人、登记客户的人是三个人?不支持,按需求合同来。
    你还要统计跟进次数?什么,还按部门统计,你们重新提需求文档吧,先把第一阶段的给钱给结了。
    访问速度太慢啦?把服务器的性能调一下,多加点钱就好了,服务器费用从每月3000增加到每月9000。

    上面简单列出了一些问题所在,有看得见的功能上的完善,还有看不见的架构扩展,你只要不说我们就不写,你压缩时间,我们就压缩你看不见的,一切以时间为准,或者说一切看绩效。
    这样的系统,再来几次新需求,可能就要重翻了,重新翻系统的话,该花费多长时间不会减的。
    本来多给几个月,这些东西全给做上了,这一压缩时间,多花费出来的时间你还是要给程序员开工资的,别指望靠每天免费加班来榨取剩余价值,程序员离职对项目的损伤更大,并且,项目是公司的,公司是老板的。上有政策下有对策,所以业内有句话是这么说的,得罪谁,也别得罪程序员,否则,最后你怎么死的都不知道。而这句话并不是危言耸听,觉得程序员老实好欺负的老板的最终下场都很惨烈。

    除了功能和架构以外,还有什么?

    那除了功能、和架构以外,还有什么“本应该可以做”,但由于时间原因没做的呢?性能监控和优化、缓存、日志分割和备份、数据库备份、代码重构等等等等,这些东西你做了,别人看不见,不做,对系统交付也不会产生问题,时间紧任务急,被时间压急眼了,不做也罢。

    原文:http://toutiao.com/group/6666373091565765131/?iid=0&app=news_article

    相关文章

      网友评论

          本文标题:对于同样的需求,一个月做出来和三个月做出来有什么不同

          本文链接:https://www.haomeiwen.com/subject/pcwhvctx.html