面对人、组织的问题时,想想如果这是在写程式的话,可以怎么处理?
拆分工作与并行
在软件开发中有并行(concurrency)和平行(parallel)的概念。善用这两个可以带来更有效率的工作表现;就像如果能妥善分派工作,将每个工作拆成相对独立的的任务,同时交付给多个人去处理,就能够在更短的时间内完成更多的事项。
权责与分工
在软件开发中有分层(layer)的概念,每个 layer 内只负责和管理好自己应该知道的事,如此可以减少程式耦合、让程式更好维护与管理;就像组织中,并不是所有部门都需要知道所有的讯息,更有效率的做法应该是每个部门只需知道和自己相关的资讯,并把自己部门内的事项负责好后,再交派给其他部门做处理。
不变的就是总是会改变
软件的世界变化很快,不论是架构、框架、语言,都以非常快速的方式在成长。即时你今天真的设计出了一个完美的系统架构,它也很有可能在几个月后,或几年后被推翻,而且很有可能推翻的人还是你自己。因为随着时间的改变,人的想法会改变、使用者会改变、需求会改变、能够拿来解决问题的工具也会改变。最重要的不是想出什么是完美的做法、而是写出最有弹性、能够适应未来改变的程式。