[软件开发]All In One一体化程序员为何不好
一般采用瀑布式开发流程,应该会有以下角色
项目经理(PM)
系统分析师(SA)
系统设计师(SD)
程序员(PG)
测试人员(Tester)
国内蛮多软件开发的工作是让程序员担任很多角色
常见的是除PM以外全包,有的甚至得做PM该做的考察风险与时程,但却没有PM的权力
面试时遇到说全包的这种情况时,面试官通常会说因为公司小啊,成本考察啊,没办法啊
这边讲一个故事好了
我以前在一间游戏公司开发内部系统.公司的对于管理是极度倾向于数字上的管理
例如:程序的开发,花较多时间开发个稳固、好扩充、容易修改的系统,远远比不上花一点点时间开发一个能跑,但是很难调整,很多潜在Bug的系统。
常常一个功能会包含以下几种查询条件(不一定会全部都有)
1.游戏名称
2.服务器名称
3.合作厂商
4.时间
通常在使用的时候,非常容易出现一种状况就是查无数据,因为时间久了,有的游戏可能根本没有在运作了,有的厂商可能根本没有再合作了,导致有些下拉菜单的选项根本就没有作用。
假设下拉菜单的选项不多也就算了,但如果有几十个甚至近百个选项,各位不觉得这样用起来很痛苦吗?
这问题…其实是有方法可以解决,最常见的方向是采取某种方式将下拉菜单的选项做个过滤。
比如用时间做过滤,只显示想要的时间范围内的游戏、合作厂商数据
那么这种事情该谁提出咧?
我认为理想上应该是SA要提出来,让功能操作上可以这样跑?
SD再决定说这件事情的影响变动如何?
假如变动过大,可能就要跟PM与系统架构师(如果有的话),讨论是否能够这么做
这边SA与SD所需要做的事情,其实我是有做到的能力。至于系统架构师的部分,因为数据库实在太过混乱了,有些解法可能会让我没把握能控制状况,才会说需要跟系统架构师讨论
这件事情,我后来也只能跟同事私下抱怨罢了
因为开发通常都是时间先压好的,而且常常是在根本需求没完全搞清楚就先压好的,这时间上也不是跟主管说要调整就能调整的,这牵涉到整个部门的绩效。如果我这样做的话,我要花较长的时间处理,然后我辛辛苦苦的让使用者操作更顺利的代价就是,让人觉得我开发太慢,绩效可能更差。
那个项目没有SA这种角色,都是由不懂程序的QA去谈需求,QA也比较只像是传递信息罢了,不会去想有没有让使用者使用更顺畅或者让开发较轻松的方法。
我必须无视SA的角色,反正我职称也不是SA,对我来说,较快的把上头需求完成才是我当PG该做的。
假设团队结构上有人就是当专职SA的话,他就不会在多个角色之中,选择放弃某个角色该做的事情了。
结果就是,其实功能的设计可以让使用者操作更顺利,但结果就是很不顺…
这种事情,我相信在很多公司、很多项目都会遇到。
如果想要剪刀、指甲刀,各位会想直接去买呢?还是会买个All In One的瑞士刀咧?
我相信一般人不会选择用瑞士刀,因为瑞士刀的简单和指甲刀肯定不好用。
想要省成本所以All In One,还是为了把事情做好,所以各种角色都有专职人员。我能做的事情只有表示各种选择所产生的后果,其他就是决策者的选择…