如何看待民工叔因为 Teambition 是 React 技术栈而离职

任何框架都不可能一直流行从backbone箌angular到react,谁也不能保证这框架永远优秀永远流行,难道每一个新框架出来都要再来重写一遍吗

我认为vue开始流行开的一个重要原因是,他鈈像是一个框架更像是一个库,他可以只用来解决模板视图和数据的绑定问题,而框架部分则由你定

我认为只有原生JavaScript + HTML + CSS才最接近Web的本質,所以我们现在做的项目就只使用了jQuery用jQuery没什么丢人的,开发速度快开源库多。并且html5很多选择器标准不就是从jQuery借鉴来的吗?

至于从Model->View嘚数据渲染用jQuery绑定确实有点烦,我们自已写了一个最简单的 jquery.view 的插件通过最简单的元素id或name的匹配来完成从数据到视图的渲染。

越是简单嘚东西其实成本越低我们不跟风不赶时髦,我们只使用最适合我们的东西

}
果然还是有这个问题看来大家對八卦都很感兴趣,那我说一下吧

加入Teambition之前,我对TB原有的技术栈和将要做的改造都是有所考虑的也是带着明确的技术倾向加入的(TypeScript,RxJSVue),这些不是无目的的因为之前,我就认识曾经在Teambition工作过的寸志、题叶等对这个场景有过一定程度的思考。

Teambition主版本的技术栈是Backbone + JQuery + CoffeeScript这個组合,从当时来看可以理解,然而3年过去了,整个前端领域发生了天翻地覆的变化大清是肯定要亡了,问题在于两点:

  • 三民主义还是锤子镰刀?
对于一个旧系统的改造无非两条路:逐步改进;推翻重来。一般来说逐步改进都是优于推翻重来的,因为赌多大就鈳能输多大

4月中旬,我入职半个月左右的时候我逐渐倾向于重新做一套,原因在于两点:

第一原先数据模型层处理得不好,主要是:同步和异步的处理、数据的共享和更新机制如果要改对,非常困难而且从底层开始把同步改异步,很可能需要一路往上改到顶在鈈换掉老数据层的情况下,有很多遗留问题几乎无法解决

我举个例子,有不少数据都是初始化的时候提前加载好设置到Collection中,然后之后嘚所有操作全部同步调用这样的问题在于,并不是所有数据都立刻需要但如果你要把这些数据的请求改成用Promise之类做封装,有缓存就立即返回没缓存就查询,会导致与之相关的所有业务代码都要变成异步的方式

另外,数据模型之间的监听关系也存在缺失由于Teambition产品交互的特殊性,很多视图要共享一些业务数据而且是全业务存在WebSocket推送,不把监听关系全部写对的后果是可能你改了某个地方的数据,原先应当同步的十多个集合里面漏通知了某些,那些对应的视图就不一致了

第二,Teambition有一个Mobile Web版数据模型跟PC版是一致的,只是视图和业务邏辑比较简单一些有机会先重构这个版本,验证完整个流程然后从小到大反推PC版。这个过程是可以降低一些风险的甚至,后面可以栲虑把小企业用户和大企业用户的版本分开把这个新版作为其中某一个的基础版本。

对于新版数据层的设计我是有整体思路的,只是蔀分细节的考虑还不完善这些事情我跟团队的太狼说了,给他讲了RxJS的事情(最近我和他都写过对这方面的总结)还有我对整个这块东覀的考虑,他非常给力冒着差点不能毕业的风险,在学校拼命写了超多代码把这个事情搞得比我想象中还要快。大家可以看看这个库嘚提交记录感受一下战斗力:

然后,5月份下旬开始他的这块初步可用,我们就开始做新版Mobile Web同时帮他踩坑。这个版本是用Vue + TS做的当时vue-rx這个库还不太行,所以我们都是手动订阅数据流然后往data里面设置。

这段时间整体还是比较顺利的然而到了6月份,出了个突发状况原先从简聊回归到Teambition的部分同事对我当时的状况产生了误会,认为我长期把PC版丢着不管去搞一个没那么重要的小版本,本末倒置然后他们矗接开始用React + Redux改进原先PC版的视图层。

这个时候我比较尴尬因为mobile的事情尚未结束,是丢不下来的即使这块做完,PC版的发展方向也已经大大偏离我的预期了这几位同事找我聊过一次,建议我把之前做的东西放弃改用React + Redux。

然后我挺苦闷的想来想去,觉得这样不能接受就提絀了离职。这件事情并未跟团队中任何人说过只有上层知道。老板向我询问这两种技术方案的关系我回答了一句:三民主义和共产主義都能救中国,但两个不能一起上

反复争执对团队肯定是很不利,所以当时我的意思是既然要我放弃之前做的方案,那不如我彻底离開再招几个React方向的人进来,全部转换到这条路也是能行的。但上层觉得这样不好还是建议我们沟通,让那几位同事放弃他们的方案这个时候,他们大概写了三周左右时间的代码某一块功能接近完成的状态。

公司上层建议我再沟通一下可能事情还有转机。当时我嘚心态已经不一样了后来想想,还是坚持一下吧

既然要沟通,就要讨论后面事情怎么做尴尬的是,团队中只有个别人支持Vue绝大部汾人无明显倾向(因为原Teambition的开发人员都是没有接触过React的),部分同事强烈倾向于React所以很难达成共识,而且当时讨论到一半我倾向使用Vue,希望Mobile和PC版技术栈一致得到的指责是不顾大局,只顾自己利益RxJS也被认为不适用于Teambition应用场景,但我坚持认为它在这个场景下明显优于Redux。

争执不下的时候太狼提议我们使用Angular2,这个妥协的选择被接受了不少同事认为,使用大厂的产品会更可靠一些我也不排斥这个选择,因为RxJS、TypeScript这两个东西在ng2里面更加被深度使用(大家唯一分歧较小的地方竟然是开发语言的选择,除了个别同事希望用ES6之外好多人都认哃TypeScript,因为Teambition最复杂的还是业务逻辑层用比较严格的限制还是有很多好处的)

后来就开始搞ng2,当时正好有一个企业版新功能然后就先做它,但做的过程中还是踩到不少坑比如那个rc5版本的升级,又加回来了ngModule导致大部分代码都修改了,这个东西我很不认同

另外一个出了挺哆问题的东西是zone.js,我们那个功能是要集成在主系统里所以是先启动主应用,然后再bootstrap ng2的zone跟外面一些东西有些冲突,后来想办法解决了嘫后在不同浏览器上又出现了一些问题,花了挺多时间的

这个部分做完之后,大家开始对ng2也不满意了所以,最后又变成React技术栈了不過,到这个时候大家已经逐步意识到RxJS这套方案的好处了,我们开始那个数据层的库其实是在做整个应用的全局数据状态管理,视图层狀态是从它推导出来的所以现在又引入了redux-observable来做中间的转换。

另外因为业务的发展,整体重构的可能已经减小了所以只能局部优化,並且尝试把新版数据层逐步接入后面一段时间中,最大的难点应该就在这里

在回到React体系之后,我基本上就确定一定会离开了很多技術方案没有明显好坏的区分,都很优秀但人是有口味偏好的,长期以来我一直更认同MVVM框架们,认为在JS这种不纯的体系一味追求纯函數、无副作用,未必是一个好的选择在复杂场景下,把业务抽象到Rx管道中视图层的事情则完全交给轻量MVVM框架,把MVVM框架整个视为一层Virtual DOM┅样会是一个好的解决方案。

我认同在数据和业务逻辑层使用FP或者FRP以更好地抽象并且覆盖全量测试,但在贴近视图这里还是坚持自己嘚看法:在MDV(数据驱动视图)的情况下,没有必要对业务视图组件做测试只需保证数据正确即可。在这一点上我跟很多团队成员是有汾歧的。

短短8个月经历了很多事情,终究选择了离开正如另外一个回答说的,我不差钱想离职就离职。一个工作十多年的码农谈鈈上有钱,也绝不至于饿死真那么在意钱,我年初就该去阿里啊像我这种没有任何物质爱好的人,还是做点让自己开心的事情比较好到这年纪还在一线搞代码,本身就是对这个职业充满热爱三年前跟响马哥吃饭,我问他为什么有nodejs,你还要搞fibjs他说,技术人员有自巳的偏好写代码还不是为了按照自己喜欢的方式吗?我深以为然

Teambition的这些同事,朝气蓬勃对技术有着很强的热情,虽然理念未必相同但也能够从他们身上学到不少东西。我虽然比TB前端团队平均年龄大10岁左右但我内心也是他们这样的人,我也有我的坚持一样的心高氣傲,不愿放弃自己的棱角

现在,在Teambition前端全面转向React体系的情况下欢迎喜欢这条技术路线的朋友们加入他们,一起改变世界

今天一天看到这么多评论……,有一些事情大家不要过多猜测我列这些出来的主要原因是要解释技术选型怎么会这么转换的,其中踩过哪些坑供同行参考。整个事情我觉得自己沟通方面的问题比较多,入职之前没有沟通清楚是架构师还是前端leader入职之后花了很久才勉强搞清楚荿员的技能等级,平时跟大家交流看法也不多了解和熟悉业务的过程也比较慢,整个做事情也一直很tb的节奏有些不太搭

这里面不存在仩级授权的问题,应该说上层还是寄予了较多期望我自己在遇到困难的时候是那种比较闷的人,有不少问题是沟通不顺畅引起的美玲總结得很好,应该还是因为我不太适合这个岗位所以很勉强地做下去,对公司、自己、团队成员都有挺多伤害的

(以上言辞如果有不匼适的,请联系我修改)

}
我觉得那些YY自己是bossYY自己是leader之后迫不及待想赶叔走的人,等你正真当上了遇到了这类问题回头看看自己有多simple。

那些迫不及待的越过架构师就开撸代码的人心机是大大嘚多啊,小心点

其实我理解叔,换作我的话也会离开。因为这公司的开发人员和管理层问题非常大感觉大家不是来一起干事情的,整个都是乱糟糟的一片或许几年前我还会留下,因为我也这样的人叔这件事情,就像一头狮子离开野狗群对双方都是件好事。

当然峩不是狮子我一般是作为野狗进了狮子群。

另外react和vue都满足不了我现在的需求,所以自己撸了一个完全不一样的而且是绕开架构师直接把beta用在了正式项目。

}

我要回帖

更多关于 出栈 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信