# 如何决定什么时候使用奇妙的计算机科学

有这样一些，例如算法，数据结构，数学，还有其他极客范的大多数程序员知道但很少使用的东西。实践中，这种奇妙的东西太复杂了，通常是不需要的。例如，当你花费大多数时间在低效的数据库调用上时，提高算法是没有什么用的。不幸的大量编程由让系统相互交流以及使用非常简单的数据结构去构建漂亮的用户界面组成。

高科技什么时候是合适的科技？你什么时候应当打开一本书去找一些东西而非一个毫秒级算法？做这些有时候是有用的，但这需要被小心评估。

对于潜在的计算机技术三个最重要的考虑是：

* 它是否充分封装所以其他低级系统风险和复杂度过量增加以及维护代价很低？
* 好处是否是令人惊奇的（例如，成熟系统的两倍或新系统的十倍？）
* 你能够高效测试和评估它吗？

如果一个充分独立算法使用了些许奇妙的可以减少硬件消耗或增加整个系统的两倍性能表现的算法，不考虑它可能是有罪的。争论这样一个方法的一个关键是，证明风险确实是相当的低，因为目标技术可能被充分研究过了，唯一的话题是集成的风险。在这里一个程序员的经验和评估能够真的协同奇妙的算法让集成变得容易。

Next [如何与非工程师交谈](https://braydie.gitbook.io/how-to-be-a-programmer/zh/2-intermediate/judgment/08-how-to-talk-to-non-engineers)
