今天从朋友那里听到一个真实的故事:一个男生,凭自己的努力,在深圳买了房子,成了家也有了小孩,事业有成,家庭幸福。然而突然有一天,他们要离婚了,原因是那个男生一直以来都很有追求,为了培养好小孩,她让妻子离职成为了全职太太。这样生活的重担都压在他一人身上,而他自己为了升职,努力讨好领导,多次和各种领导出入高档场所消费,然后自己买单。几年下来,他在家人不知情的情况下把积蓄全部花完,还借了一屁股债,升职遥遥无期,生活也难于持续下去,他的妻子也因此提出离婚。而他却认为自己都是为了事业,为了家人,有什么错?
对于这种事情,可能很多人第一反应会觉得这个男的太傻。而仔细想想并不是傻那么简单:对于每一个没背景没基础来深圳打拼的人,做好工作本身就不容易了,再加上家庭,小孩的因素,事情会更复杂。而一旦到了特定阶段,你又不得不去面对这些事,逃是逃不掉的。这时候就需要强大的生活智慧了,怎么去平衡,怎么去取舍。而这个智慧的核心,就是系统性的去思考整个问题:我的人生目标是什么?构成我的人生目标的要素有哪些?他们的优先级怎样?这些要素会不会有关联性,会不会互相影响等等......只有系统性的考虑清楚了这些要素,才能在遇到问题时做取舍。故事中的男生只考虑到了事业,没考虑为了事业做的这些行为会对家庭带来哪些影响,并且我认为在自身条件不具备的前提下,直接让妻子做全职太太的决定也是值得商榷的,虽然这确实有助于孩子成长,但是得充分考虑实际情况,不能顾此失彼。
我们在设计系统和学习知识的时候也是一样,系统往往是复杂的,各种要素互相关联,互相影响,有时需要取舍平衡,有时需要明白前因后果。
设计系统时,我们不能仅仅盯着其中的某个点,需要把他代入到实际场景中去思考,它解决的是什么问题,和它配合使用的有哪些其他技术,他在整个运用场景和需要解决的问题中出于什么地位。比如我们要设计一个高性能高可用的分布式系统,可能会用到Redis缓存,我们不能仅仅去看Redis文档,要充分理解整个分布式系统的业务流程,Redis是解决其中的那部分需求,这个需求是不是一定要用Redis缓存,可不可以通过业务设计去解决等等。
在学习分布式架构设计的时候,我们要同时学习缓存,消息队列,锁,分布式事务等一系列知识,再结合这些技术的发展史等,互相借鉴,融汇贯通,在大脑中形成完成的知识结构,形成系统性知识体系。