公元2017-10-24,星期一,手机上还不断刷着知乎,嘴里搞着东西坐在那小工位上走着心呢,突然,"小忠,你过来,给你讲讲任务调度这块的一些业务重构的需求吧",还没缓过神儿,就被源哥叫到小黑板前开始上课了;
"我们做个任务调度的功能吧,现在这个制单速度没有达到最大化,很多客户端不能同时进行制单,只能有一台机器能够自动制单,其它的只能人工手动制单,不行,这个得重新设计一下,重构吧。"老大简明下达了这次作战任务,接着就是他老人家的一些方案,大概进行了1个多小时,我们下课了,最后这次的设计老大交给了我,让我来设计这次的任务调度模块,其实我心里是非常接受的,因为这是我第一次设计,兴奋感一直在心头涌动着;老大也知道我是第一次,所以私下就不断给我灌输了很多他老人家的设计经验,说真的,这几天学到最好的也是嘱咐最多一句话:"小忠,设计不要局限在自己的那块,要跳出来,一定要跳出来,要掌控全局"。
经过2天多的设计,我如愿以偿的交上了V1.0版的设计文档,周三下午;
"源哥,设计文档发过去了,你有时间的话看一眼吧,哪些地方还需要改进",当时我还是有点自信的,因为很多逻辑我都想了一遍,突发情况也想好了相应的解决方案。
10分钟,就10分钟,源哥叫我了,"小忠,你过来一下",我以为要给我说明天就开发吧;然而我错了,错的一塌糊涂,连毛都不剩;
"小忠啊,我现在把你这个设计文档给其他人,其他人能快速定位到自己需要开发和重构的地方吗,好,不说这个,就你,你现在拿着这个文档去开发,你能列出个满意的计划给我吗?"因为我了解,老大质疑你的东西,那十有八九就是你做的不到位;
接着,"好,先不说你这个设计方案是否可行,但是你这个入门的基本功首先就没学到位,你没用心,知道吗,你这个文档上处处标记着你没有用心",最后那几个字儿源哥还是拉着很长,然后说了好多这V1.0版本的毛病,这次是我第一次感觉从一次对话中学到了很多道理的时候。
又经过3天多的调整,我终于将V1.1版的设计文档搞出来了啦,在周一早上就发出去了,但是这次我不是态度的问题,而真的是经验和格局的问题了。起初我是站在自己负责的那块来改造,针对自己的品牌进行了设计,是的不错确实对于我来说真的是一个完美的设计,但是我抛下了很多重要的业务分支,根本没有考虑过其他品牌是否符合你的设计,也没有和任何其他模块的开发者去沟通过,最终导致设计方案覆盖范围极小。"设计者,不要佩带着任何角色去设计,接着,源哥又给我从整个公司的用户下单开始,清晰的描述了整个业务链的运作,以及各个模块之间是如何配合工作的",听完这次的描述,我心里又有了一百种方案,真的,这就是所谓的人生格局越大,看到的景色越美的道理。
以下是我这次总结的失败经验,给大家分享一下,如果有不对的地方,请各位也不要谩骂我误导大家,因为是第一次,如果有好的地方,也希望能够对各位有用。
1、设计千万不要把自己局限在自己负责的那块和邻近了解的那块,一定要跳出来,掌控全局,了解整个业务链的运作,有胆量将自己设计的东西放在任何点来重构整个业务链。
2、设计过程中在文档上做任何决定时,一定要遵循,先寻求现有的,后决定是否自己开发,然后将问题逐一抛给现有的和要开发的方案,进行对比,当然,这是需要全方面的对比,比如:成本、效率和扩展性等。
3、设计过程中遇到或者别人抛出的问题,一定要记录(必要时刻直接写在设计文档中),这个也是我这次最轻视的地方,每次想到一个问题,经过一番讨论,就完事,也没有将问题记录下来,最后当有人第二次提出同样的问题时,我又开始当场思考,想解决方案,而且还远远不如第一次的。
4、多沟通,一定要多沟通,厚着脸皮就算是扯淡也要跑着去了解一下有可能涉及到的模块业务,因为就算是扯淡也不至于到最后让你后悔没有去了解一下这块的情况,也不会出现:"卧槽,要是把这次的设计放到这块多好啊"。
直到今天,我跟这个设计文档整整周旋了快9天,今天早上交付了V1.2版本的文档和一些模块框图过去,其中还加了一些功能分布图和一些对应的描述信息,得到很不错的反馈,因为源哥说看着舒服多了,我心里也舒服多了。估计下周就可以开始实施了,好开心,终于可以看到自己设计的功能了。(初次设计,望各位照顾)
最后,分享一句老大给我说的话。一个设计文档的好坏,最重要的就是要看,当你把你的设计文档丢给别人,别人和沟通的次数多不多,如果说别人每做一点你都在给人解释,那么你的这个设计文档就烂,而且很烂,甚至可以说不是设计文档,而是你在设计过程的做的笔记,我们设计的目的就是,把模块功能设计好之后组织成文档,交给执行者去实现,最后你再过来看是否和你设计的预期效果一致,话不多说,效果达到就好。
感谢默默教我道理的人,感谢所有共勉的朋友。