这期的CTO训练营活动,培训的主题只有一个:如何在公司不断发展的过程中,确保技术能够灵活地因需而动?这个话题非常有实战性,因为无论公司是刚刚组建还是发展到一定规模,语言的选择、架构的调整一直伴随其中。那么当面临老系统重构、拆分亦或是解耦,管理者们应当注意哪些问题?随着业务的发展,时间的推移,IT技术逐步在进化,在进化演变的过程中又应该如何把握,应该用什么样的思想去迭代产品?七乐康技术VP曲毅给出了一个新的思路:用进化的思维做架构,给与会者们开辟了更多思考方向。

语言选型需要注意6大因素

曲毅,从事互联网研发工作12年,曾在高阳、空中网、新浪、乐蜂网等互联网公司担任构架师、高级技术经理、技术总监等职位。他对HTML5技术有非常深刻的认识和理解,有着丰富的实践经验,同时也是HTML5引擎Crow5的创造者。

“是什么在左右你选择语言?”曲毅一开场就抛出了一个问题。经过六个小组的简短讨论,最终曲毅在白板上将选择语言需要考虑的问题归纳成六点。

一是团队。训练营的一位小伙伴表示,招到优秀的人才最难得,最好是能招募一个靠谱的团队,有了团队,语言的选择就顺理成章了。

二是成本。这里面主要是时间成本和质量成本。曲毅认为此外还需要考虑人员培养的周期、学习的周期、团队配合的周期,以及人员流失带来的人力成本。

三是控制。选择了这种语言能不够始终保持控制度。

四是项目特点。根据不同的项目需求,最终选择最适合这个项目的语言。

五是技术健壮性。所谓技术健壮性主要包括技术是否安全,文档是否健全,以及活跃性,例如这种框架社区是否活跃,是否有持续性。

六是技术多样性。产品合作的需要取决于团队语言的多样性,曲毅认为前期搭建团队时,采取的语言最好要统一,但是后期团队发展起来后,最好能够有多样语言,因为经常会与外部合作,语言的多样性可以带来更多的选择。

好的架构是设计出来的,还是改出来的?

“好的架构是设计出来的,还是改出来的?”曲毅又抛出一个问题,最后他谈出自己的观点:长远地看,架构是改出来,短期地看是设计出来的。

他解释道,企业发展是从无到有,从小到大的过程,而企业产品演化的方向同样也是变化的,而且有时间和成本的限制,因此架构在前期、中期、后期需要考虑的点都不尽相同,应当因地制宜地选择语言,选择合适的容器,合适的架构。“在我看来,做架构就是做技术创业。”

庞大复杂的系统如何进行解耦?

“解耦主要用的逆向思维,这一点和写游戏外挂非常相似。”曲毅表示,“那么解藕是否有规律可寻?”答案显然是肯定的,曲毅给出5个方法,根据这5个步骤就可以逐一替换拆分出的模块。

第一步,抽象+分层是一种解决方案,采用代理模式,从整体把握,按照业务拆;第二步,在模块内,熟悉系统,研究数据流。用逆向工程模拟交互接口,猜表;第三步,逐一替代,按照功能和数据流向对接。需要注意的是,前期涉及数据同步、脏数据等问题,需要写外挂处理脏数据;第四步,针对脏数据,收集bug。使用数学归纳法穷举问题,逐一修复;第五步,最后打破现在方案,根据对现有业务的需求,重新设计,曲毅表示,这里要注意,是按照业务需要设计,并非技术架构。

主流电商业务流程介绍

“在主流电商平台中,若需精细化管理各个业务流程,一般会涉及到上百个系统,系统之间的交互接口更是不及其数,任何系统环节出现问题,都会对业务带来或多或少的影响。”曲毅以电商为例。

系统解耦案例2

设计的进化

曲毅用发生在自己身上的真实案例给大家讲解设计前端,写代码的方法论。“如果都采用标准化语言规范和配置方式,给我30分钟就可以教会大家使用JS语言”

他的方法是首先要编写公用模块给大家用,编写规则引擎大家可以按照相同方式编写。第一阶段要编写完整的模块,并且书写风格优良。讲到这里,曲毅分享他的心得,他认为少写代码就可以减少复杂度,约定模式是一种很好的方式,用配置的方式可以减少代码的编写,而且降低具体细节的复杂度

最后他提醒大家,要回归本真,标记替代配置,这样更简洁,更容易理解。

“学会忘记,也许设计的本真就在开始的时候,就在你觉得简单的时候。”

轻松热闹的沙盘活动

瀚海商学院刘达开,是一位有丰富管理经验的老师,在下午沙盘活动环节,也给学员们带了轻松交流交流和项目管理的经验分享。

刘达开,瀚海商学院资深讲师、管理咨询师,是瀚海商学院沙盘【地租交易】【超级公司】【捕鱼达人】研发者,主要研究方向是“PDP测评”“工作压力和情绪管理”“沙盘管理”,掌握企业管理学、心理学、人力资源管理等知识,拥有丰富的教学经验。

他首先让大家将座位调整成一个圆圈,每两位学员开始互相介绍自己,然后通过一两个互动的小游戏,让大家在轻松愉悦过程中认识彼此。

小伙伴们开始面对面互相握手介绍自己

在体验活动中,刘达开将学员分成7个小组,每个小组自己领取了不同形状不同颜色的任务卡,只有小组之间相互合作,互相共享信息,齐心协力才能完成。最终学员们经过“激烈”的沟通,顺利地完成了任务。