11月26, 2017

软件工程3中期个人总结

软件工程3中期个人总结

软件开发是一门工程学问题


暑期的时候纯属胆子大,接了别人提供的外包活,写了demo之后发现由于前期的需求啊、设计啊做的都不到位,结果到了九月份的时候,出现了需要大量返工或者发现设计不合理的地方。所以今年软工项目还没开始的时候,我就去找暑假认识的那些工业界的大佬,请教软件工程的开发流程究竟应该是什么样的。非常感谢这些大佬的帮助,我们才能少走不少坑,没有引发bug的雪崩效应。

我们这次写的项目的体量,远远超出了以往各种大作业。以前的大作业其实很多虽然说是需要多人合作,但是就任务量而言,其实还是可以单人扛下来。任务量大,就意味着必须合理分工合作,必须步步谨慎。

项目的需求从作业的得分点列出变成了沟通中获取,有些人会吐槽,但是从我个人的角度来看这其实是好事,因为只有和真正的客户接触过你才知道真实世界里,人们的需求能有多奇葩。我接触的客户,就算他们真的是一条一条的把自己要的东西列出来了,但是那些也不一定是自己真正要的东西,甚至他们自己都不清楚自己要什么。最开始的时候,我脑海里的这玩意是一堆功能点的堆叠,用我的甲方老板的话说:“炫技”。直到和刘强老师打了个电话沟通之后,我心里才有了这个东西到底应该是什么。他是个活的整体。什么百万并发量,什么各种花式聊天,那些其实没那么值得去说。这个时代,如果一个项目存在的目的是取代掉原先的人力已经能完成的工作的话,那么这个项目的核心需求就一个:帮用户省去重复的工作量,与这个需求无关的一切东西,都等于0。当你理解了项目用户的核心需求之后,很多需求点,你会觉得他根本不必提就应该被实现。

以前写小作业或者“大作业”的时候,一个人在一张海报纸上写写画画就差不多把东西的各个部分给安排了,由于项目不大,所以即使设计有漏洞,也有容错率。但是这次不行。总体设计的时候还好,之前写过一些乱七八糟的东西,市面上有什么框架知乎上看人撕也大概知道各自都是个什么玩意,然后再吃一发群主还有月影大大的安利,前后端的各种框架选型,还有数据缓存方案,静态资源部署方式等等差不多就确定了。经过胖总提醒,原型设计也早早地就做好了。不至于和很多人一样周二检查周日赶工。但是到了细分设计,就直接懵逼了。软件学院前两年的专业教育是存在问题的,软工一、二只字未提设计模式还有项目拆分的问题,到了软工三,突然就让大家真刀实枪的上手去做。我带组讨论的时候,四个人原来组会定的议题有三个,最后就这一个议题讨论了两个小时没讨论出个所以然来。没招啊,只能去请教大佬,设计了两次才算得到了大佬的认可,是个能用的设计。高内聚低耦合这六个字说起来很简单,也确实是这个理,但是就跟周易一样,你不懂大道,或者没有那种悟道的悟性,这书对你来说不值一钱,还不如马克思主义哲学教科书教的经世致用之学管用。什么东西要解耦,什么东西应该内聚,没学过完全不可能知道。

我父亲是个工程师,搞土木的,十九岁离开家门,砖瓦里堆出来的二十多年的经验。我小时候看他工作,翻过他的蓝图。如果把我们正在做的东西勉强也称为小工程的话,那细分设计、原型设计差不多就是我们的蓝图。那些蓝图画的确实漂亮,很难想象人手能写出那样规整的字,但是一个大工程光靠几张图是肯定不够的。我们的项目完成细分设计之后,组内咔咔咔的就分工好了。分工完了活得有人干,新的问题就来了。流程控制,开发进度控制,质量监测。在我爸那里,建筑垂直面会有最大偏移误差,项目进度要计算关键路径(说起来答应我爸要做一个帮他算关键路径的软件还没做……)。在我们这里,eslint等等各种工具就得用起来,统一代码的风格,然后禅道上、Github上就得盯项目的进度。其实二轮迭代我自己是不满意的,稍微拖了点节奏,所以中期刚检查完我就去把milestone捋了一下,定了三轮迭代的活。这活本来应该是一轮开始之前就要搞好的,结果当时没当回事,好在没出大问题。另一个问题就是测试。有些组一行代码一行测试写的,特别勤奋,但是我觉得现阶段这样做除了浪费时间强行增加代码量之外实在没什么别的用处。测试是为了保证项目上线不出差错的必要手段,就好像一艘船,刚搭到一半,这个时候检查龙骨的结构是否合理,有没有虫蛀是必须要做的,而去检查骨架的漆有没有刷好看显然不如先把船板搭起来重要。记住上面说的:我们是来完成需求的,不是来炫技的

团队合作是一门艺术


从大一到大三,各种大大小小的作业和组队合作我都见过了。带别人躺过,被别人带躺过,坑过也被坑过,但是没有哪一次的团队合作和这次这样让我有种这真的是一个team的感觉。贾老师、尚明还有璧灰对于分内的事情完成的非常漂亮。我一直觉得,除了项目经理和产品经理这两个额外的身份之外,在开发的层面上,我们四个人没有组长组员之分。一个人对于自己分管的部分就是有绝对的发言权,贾老师和尚明开发各自的子系统的时候,他们觉得怎么做比较合理那么就是比较合理,璧灰在我教完她thinkjs之后,回头就指出了我代码里的问题,还在二轮迭代末指出了API设计中的一个很严重的漏洞。玩吃鸡的时候,我有夺取团队指挥权的倾向。但是到这里,充分尊重和信任队友的想法是一件非常重要的事情。
现在很多同学组队时倾向于组自己熟悉的人,但是未来的开发者之路上,我觉得我永远不知道未来都是些什么人和我搭伙干活。我会在之后继续尝试和其他不同的尤其是没有合作过的同学合作。

软工三是专业课,贴图收尾。
培养目标

本文链接:https://blog.magichc7.com/post/se3mid.html

-- EOF --

相关评论