作为一名程序员或技术人,总会碰到这样的场景:在一些技术评审会上,和其他程序员就技术方案产生分歧与争论。如果你是一名架构师或技术 Leader,站在技术决策者的立场和角度,该如何去解决分歧,做出决策呢?
这背后,有什么通用的方法和原则吗?
绝对
曾几何时,我以为技术是客观的,有绝对正确与否的标准判断。
在学校我刚开始学习编程技术时,捧着一本数据库教材,它在述说着经典的关系数据库表设计原则:第一、第二、第三范式。后来,我参加工作,那时的企业应用软件系统几乎都是以数据库为核心构建的,严格遵守范式定义的表结构。所以,当时觉得所有不符合范式设计的应用肯定都是错的,直到后来进入大规模的分布式领域,碰到了反范式设计。
也还是在学校做课程设计时,一起学习的同学总跟我讨论设计模式。一边写代码,一边研究这个代码到底符不符合某种模式,似乎没有套进某种模式中的代码就像没有拿到准生证的婴儿,带有某种天生的错误。直到后来,我碰到了反模式设计。
刚工作不久,同事和我讨论当用户删除自己的数据时,我们到底应不应该删掉它?我那时觉得理所应当写个 Delete 的 SQL 语句把它删掉。因为当时是这么想的:既然用户都不要他的数据了,我们还把它保留下来做什么呢?不是浪费资源嘛,而且服务器存储资源还算挺贵的。