整个的Advanced Training持续时间一个月。任务是做一个类似于JUDE一样的UML辅助建模工具,工具要基于.NET开发者。因为公司Securtiy policy,所以这里不太方便透漏技术细节,只能记录自己的心得体会。
团队方面,起先是3个人,后来成为4个。Leader一个,我不是Leader。
技术方面,起先开始用户需求分析。我将我分析的部分有哪些模块,模块里面涉及到哪些细节通通写在笔记本上。后来看来这非常浪费时间不说,而且根本就没有看什么。最好的办法就是不管写什么就写到计算机上,特别是事前估计 effort 比较大的要写的东西,写到计算机上面一来打字比较快,二来将来文档化的时候很多东西可以复制粘贴。
团队整体将项目分成两块:数据和UI。 Leader问我们的兴趣点愿意搞哪一块,因为我当时对winform UI 以及 GDI+ 一窍不通,而对数据面向对象建模有点信心,于是我就负责了数据。而Leader就负责了UI及控件。于是我就借用JUDE工具绘制我对项目的类图,就是至少这张类图,我对着他看了3个星期。到了后来coding的时候都有些想吐的感觉,因为我的工作没有一个UI,全是代码。这里有两个场景我印象很深。
第一个场景是关于在团队中要坚持自己的观点。起先是类图设计的过程中,我一开始认定一种类型的连线用一个类,线的基类用一个类,放线的公共属性。而一个member建议用一个字段来表示不同的线类型。Leader先是同意我的观点,然后后期可能因为他UI方面要求我用一个字段,于是我妥协。按这样的设计后,有一天我突然觉得越想越难实现,于是第二天,大概是项目中期的样子,我又去改底层架构,改良了之后的架构不管从扩展性以及健壮性都比以前强得多。这里有两点启示:1. 如果你认为你的观点是正确的,哪怕团队其他成员都反对,你一定要找出事实证据后坚持你的观点,不要轻易妥协。团队需要和谐,团队更需要有想法的人。2. 不管你处于团队哪个位置(Leader更是如此),要考虑自己的部分会对其他人造成什么影响,如果只有自己的爽,将其他人的工作搞得无比郁闷,那你自己到后期依然爽不起来。
第二个场景是关于保持信心的坚持自己的工作。在办公室里面跟其他的团队坐在一起,经常其他的团队做UI的做了一个Demo出来,然后大家都围上去看,羡慕的不得了。这一来表面一个技术点被攻下,二来表面项目进度又进了一步。如果旁边的团队经常这样欢呼,而自己面对同样的类图工作了3个星期,信心是有点影响的。一来不知道自己团队的这些技术点攻破没有,二来别人接触到了新东西而自己没有(以为自己没有成长)。不过后来的事实表面,这一套底层架构设计的非常成功的,任何的操作都变得非常简单,只是在写API details的时候自己想吐。
总的来说,在群硕工作就会经常完成一些看似不可能完成的任务,我们都没有想到一个月的时间能够做出来一个像模像样的基于.NET的UML制图工具。是为记。