在处理复杂任务时,具备一些理论方面的知识会对设计产生重要影响,比如数据结构方面的知识、了解计算能力的局限性和一些重要的算法。我们没有必要成为无所不知的超级专家,但至少要知道一些问题的潜在解决方案。例如,在给一个给定流统计单一元素的个数时,我们可以在设计上做出权衡(接受一定程度的错误),并结合概率集合的基数估计(cardinality estimation)算法,避免设计出复杂、缓慢、低内存效能的解决方案。