# 技术的极限(7): 处理复杂与分层

** 0x01 BigO，以及BugO(n!)和BugO(n)
** 0x02 如何处理特例
** 0x03 富兰克林决策法
** 0x04 那些软件之奇思妙想是如何诞生的？
** 0x05 金字塔原理
** 0x06 越缺乏知识，越反对的厉害
** 0x07 拉波波特法则|Rapoport's Rules
** 0x08 The Tao Of Programming|过时的隐喻

## 0x03 富兰克林决策法

1. Frame the decision as a Yes/No question：把决策看成是一个Yes/No的问答问题
2. List the pros and cons：把一个决策的优缺点都列出来。
3. Assess their importance：给每个点标注重要性值。
4. Assess their probability：给每个点标注可能值。
5. Weight them accordingly：给每个点标注权重。
6. Strike out any offsetting pros and cons：计算优缺点列表的各自加权值。
7. Review and reflect then decide：对每个点的分值做复审。

• How do the Pros and Cons stack up against one another?
• How does the importance of the Pros compare with the importance of the Cons? How does the probability of the Pros compare with the probability of the Cons?
• What is the “mix” of importance and probability?
• What patterns do you see? What do they tell you? What is the overall balance of consequences?
• What are you getting? What are you giving up? Are the trade-offs worth it?
• What are you risking and are you willing to risk it?
• Are there any inconsistencies to be resolved?
• Which factors really matter?
• Are there any overriding factors?
• Who else, if anyone, should you consult?
• When do you have to decide?

## 0x04 那些软件之奇思妙想是如何诞生的？

1. Step №1 Test the waters2019，选择最新潮流中的一个领域
• Trend#1 Artificial Intelligence，人工智能
• Trend#2 Focus on Cybersecurity，加密安全
• Trend#3 Low Code Development，低代码量快速开发平台/工具
• Trend#4 Progressive Web Apps，渐进式Web应用，PC平台的electron ui，微信小程序
• Trend#5 On-demand Software，按需开发
2. Step №2 Focus on a real problem or need，聚焦实际问题和需求
• Personal problems and needs, 个人需求
• External problems，外部需求，群体需求
• Maslow’s hierarchy of needs，马斯洛需求层次，见下一节
3. Step №3 Qualify each problem from the list，限定问题的类别
• Unworkable，不可行，例如在Excel里复杂操作可以完成，但是数据量大不好做，手工操作繁琐类的问题
• Unavoidable，不可避免的，例如ZF要求博客必须有证书，你要么被强制，要么放弃
• Urgent，紧急问题，解决方案不需要最好，能用就可以接受
• Underserved，服务水平差的问题，需要开发更好的软件解决
4. Step №4 List out possible solutions，列出可能的解决方案
• Problem Need, 问题/需求列表
• Solutions, 解决方案列表
• Idea, 它们的交集是Idea
5. Step №5 Narrow down，缩小范围
• Replication，复制已有的模式，引入新的市场
• re-purpose，复用已有的模式，用在别的领域
6. Step №6 Get feedback and dive deeper，获得反馈并深入研究
• 分享你的软件Idea，获得反馈并深入研究
• 但是只有少数人有足够的时间、能力和知识给出靠谱的反馈
7. Step №7 Сome to a decision，作出决定
• 删掉那些不想做的
• 留下那个你想做的，思考人们为什么要为它付费

## 0x06 越缺乏知识，越反对的厉害

Then it went on to ask a series of true-or-false questions about science, ranging from basic issues like whether the core of the Earth is hot or cold to questions on genetics, like "Does a non-genetically modified tomato have genes?"

The results showed the more strongly people reported being opposed to GMOs, the lower their test score.

"We have to get people to recognize gaps in their knowledge before we try to teach them new things and have a meaningful discussion,"

（1）政治正确，结论科学
（2）政治正确，结论不科学
（3）政治不正确，结论科学
（4）政治不正确，结论不科学

（1）需要解释清楚肤色只是众多基因表达中的一个。
（2）需要排除掉那些人们认为你只是在狡辩的地方，针对人们心中认为的“真正的黑人”。
（3）需要解释“肤色基因虽然只是一个方面，但是它是否对其他一堆基因有很强的聚合效应”，也就是说如果从大数据统计的角度来看，是否人们心中“真正的黑人”的基因数据做了聚类之后，肤色基因所在的聚类能明显和种族对应上。
（4）如果存在这种聚合，这种聚合里是否存在和智力相关性。

## 0x07 拉波波特法则|Rapoport's Rules

1. 你应该非常清楚、生动、不偏不倚地重述对手的想法，使得你的对手说：“谢谢你，我刚才要是像你这么表达就好了。”
2. 你应该把对方观点中你所同意的部分都列出来，尤其是那种并非被人们广泛接受了的观点。
3. 你应该提到那些从你对手那里学到东西。
4. 只有完成了以上三点，你才能说一句反驳或批评的话。

How to compose a successful critical commentary:

1. You should attempt to re-express your target’s position so clearly, vividly, and fairly that your target says, "Thanks, I wish I’d thought of putting it that way."
2. You should list any points of agreement (especially if they are not matters of general or widespread agreement).
3. You should mention anything you have learned from your target.
4. Only then are you permitted to say so much as a word of rebuttal or criticism.

## 0x08 The Tao Of Programming|过时的隐喻

• Book 1 -- The Silent Void
• Book 2 -- The Ancient Masters
• Book 3 -- Design
• Book 4 -- Coding
• Book 5 -- Maintenance
• Book 6 -- Management
• Book 7 -- Corporate Wisdom
• Book 8 -- Hardware and Software
• Book 9 -- Epilogue

--end--

posted @ 2019-01-30 19:28  ffl  阅读(1475)  评论(1编辑  收藏