刚过去的2019年是部门历史上很重要的一年,也是我自己很重要的一年,这一年有很多事情值得总结。

18年年底C#后台开发离职,大家都认为后台开发不宜再用C#了,连离职的C#自己都这么认为。当时领导问我去C#之后的后台技术方案,我稍作考虑之后,决定使用Python。很多小伙伴不解,我记得当时领导听了我的想法之后,第一句话就是:我以为你要选Java呢。确实如此,我本身就是做Java出身,写了快10年Java了,我为什么决定用Python呢?其实考虑还挺多的:

  1. 出于对公司业务量的评估。公司是医疗制造业,软件开发是非赢利业务,长期以来都依附于硬件研发,不可能投入太大成本。毕竟当时软件部还是技术部的一个小组,因此我认为软件组能够满足市场、销售、生产等部门的业务需要即可。我们的人力和财力,使用Java体系太重了,不利于快速响应变化。所以我得出了结论,我司的软件业务在可预见的一段时间内一定是体量小(用户少)、变化快(拍脑袋)的基调。

  2. 我以往的工作经验告诉我,Java很笨重。Java实在是太啰嗦了,Jvm太吃资源。我们只有一台云主机,上面跑着nginx、apache、mysql,以及部署了十几个C#服务的IIS,还有前一位C#离职前发挥主观能动性,凭“一己之力”部署的redis和mongodb。。。所以说,留给Java资源真的是不多了。考虑到公司背景,我认为我们在可预见的很长时间内,很可能都是靠着这一台云主机吃饭。

  3. 出于对人性的考量。虽然C#后台离职,但是C#技术栈还在,我们还有一位比我来得还早的小伙伴使用C#开发PC端产品。他之前也是做后台的,要知道当年我和他早就有过无数次关于C#和Java优劣的辩论。领导问我弃C#后该换什么语言,一方面是真的要换技术路线,另一方面也是对我能力的认可呀!因此技术栈选型,我必须要考虑老员工的感受。从长远来看弃C#大势所趋,但是C#对软件业务做过的贡献不可磨灭。微软是没落了,但我不想让我们的老员工感到心寒,这是人家的饭碗呀。我选择Python,是想传达一个信息,不要为C#没落而难过,大家可以一起学Python嘛,我们又在同一起跑线上了,团结才是最重要的。

部门内部对Python有一定基础。Python上手快,有不少小伙伴私下都在学习Python(可能是Python培训的小广告太多了)。而且领导之前还亲自用Python写了一个很重要的接口服务,在生产环境稳定运行好久了。我觉得对于Python,领导可能会比较放心,对软件部整体来说是合适的。

我也想借此机会好好学一下牛比哄哄的Python,看看Python是不是如小广告说的那样能一个打十个。。

然而人算不如天算,我被软件部19年的快速发展,无情的打脸了。我考虑了这么多,事实证明,上述5个推断没有一个如我所想。首先软件部在“不经意间”就从软件组升格为软件部了。软件部独立了,领导一声令下,大家都有了明确的发展方向,全组都全力投入到了互联网医院的开发之中。

有了大领导的关注,显然我们不用再守着一台云主机紧巴巴地过日子了,我们花了好几个月冲刺,经过一顿猛如虎的操作,我们甚至拥有了一个微型的小IDC。这一下子就愁坏我了,以前是担心没有资源,现在有种“杀牛用鸡刀”的感觉,不上Java真的对不起这些设备呀。

本来我还担心C#的小伙伴没有人陪他写C#了会感到失落,结果他专心做PC端产品,根本就不关心后台开发了。再加上软件部成立了,出现了一些岗位空缺,我成为了移动组主管,从这个结果来说,如果我当时坚持选择Java的话,其实也不会有什么阻碍的。

这一次失败的决策当中,我最大的失误,实际上还是第5点。作为医疗企业,我们理应尽量使用成熟方案。中小企业无论是能力还是精力,都不可能自己重新造轮子。Python更擅长做数据分析、运维处理等非工程化项目,协作性、可维护性不高。Python做企业级开发和Java相比实在无法相提并论,主流的系统架构,例如服务化、消息队列、数据同步等等,几乎所有的开源方案,都是Java体系。出去参加了几次大会,发现大佬做的分享也全是一水的Java方案,顿时心里凉凉了。以前做Java开发时,特嫌弃Java,没注意过这事,现在选择了Python之后,才发现自己犯了个多大的错误。

下半年的时候,我问领导,我说假如我现在决定弃Python换Java你会不会打我。领导说,当然要打你啦,这才几个月!我道出了实情,我说如果还是去年的业务,Python非常适合咱们,但是咱现在要大干一场了,Python力不从心啊。领导听了说,你还是再研究一下,如果实在不行,那咱该换就换。领导真是深明大义啊,于是我们请了位大牛来做技术咨询,大牛一开口,咱终于吃了个定心丸,决定改换Java,现在换其实也不晚。最大的代价可能就是需要做思想工作,让Python开发人员改学Java,这种转型在很多软件公司经常发生。我很早就给Python开发通过气,但是我心里很内疚,因为这一切本来是可以避免的。

团队是一艘船,每个人都是船员,船越大,开动越困难。当船开动起来之后,再调头可就难了。做为Leader、负责人、主管,做决定要慎重又慎重。决策错误,改变方向,自己是倒是积累经验了,对于团队,意味着了投入、付出和成本;对于团队里的员工来说,也许就是因为我的失误,让他改变了发展方向,也许就会影响他的一生。