个人觉得今天这份思考很重要,比纯技术干货还重要,作为leader如果没有一个好的管理模式,作为员工如果不能掌握一个对的协作方法,作为社会的一份子如果不能掌握沟通的技巧,再好的技术也无济于事。最终在团队中只会是那个骂天骂地的人。
做了分布式也有几年了,之前的都是集中式的SSH/SSM+jsp/html+JQ项目。前后端都需要自己写。
但是自从做了前后端分离的项目,后台开发人员专注于后台接口开发,前端也从原来自己做变成了和其他人合作。按需求进度成本3要素来说,需求进度不变,成本翻倍,应该更能保质保量的完成开发任务,但是事实却是团队效率反而大打折扣。
我做过后台接口,写过vue,做过flutter,写过架构,也带过团队,从各个角度都分析过这件事。
前后端分离后职责不清
我理解前后端分离虽然将技术和开发人员解耦,但根本的职责没变;后台负责业务逻辑前端负责交互和样式处理。但现在很多人都想着各种办法将业务逻辑往前端放了。后台只负责一个CRUD。我觉得这是极不可取的一点,可以适当的将一些简单逻辑放到前台来写。
后台开发能力不足/偷懒
后台写代码时应该遵循高内聚低耦合的原则,尽可能的使接口具有单一职责而不是根据参数来变换接口功能。应该让前端做到几乎无脑的调用。更多的精力放在页面表单校验、系统交互、css等上面。比如举个简单例子,逻辑删除和物理删除,底层service我会写一个方法是用一个bool参数来判断,但是暴露接口我会拆分成两个。
当然这可能只有一个参数不同,如果是20个参数,A要传1 3 5 ,B要传1 6 9 11 20 。C接口传 5 15 20。我要是这个前端我就疯了。很可能这里多一个参数,那边少一个。
其实对于后端来说,根据业务,将接口的入参DTO拆分成几个不同DTO很容易,不过就是复制粘贴删除多余属性。而这对于前端的便利不言而喻。
根本问题-沟通
还有一个根本问题就是前后端沟通太少;现在有很多异地协作确实不太方便沟通;但是我见过同一个办公室的还要靠企业微信这种方式沟通,效率真的太低了。直接说句话很简单的事。
还有沟通不及时,有时后台给的接口不舒服;有时期端要的值本来有,再做处理成本太高,不如前端自己处理一下来的快;俩人谁也不说都在勉强做,最后越写越难越写越复杂。不仅代码效率低,个人的产出也低。可能还做了无谓的加班。所以沟通真的很重要。