生活中的三件首要任务_软件开发中的首要原则思考

生活中的三件首要任务

First principle thinking is the scientific questioning of various preconceived statements, which are generally assumed to be scientific. It does not assume preconceptions and biasness in its approach. It allows one to construct a solution bottoms-up, starting with the fundamental pieces.

第一原理思考是对各种先入为主的陈述的科学质疑,这些陈述通常被认为是科学的。 它在方法上不假定先入为主和偏见。 它允许人们从基础部分开始,自底向上构建解决方案。

For instance, there is a common conception that most people cannot afford electric cars as they are expensive. First principle thinking refutes this notion as battery of electric cars can be made from cost efficient resources.

例如,有一个普遍的观念,即大多数人买不起电动汽车,因为它们很昂贵。 第一原理的思想驳斥了这个概念,因为电动汽车的电池可以由具有成本效益的资源制成。

Likewise, many budding entrepreneurs tend to believe that all the best start up ideas are taken. First principle challenges this biasness in concrete terms to give it a wider dimension. Many of the products that we hail as innovative today actually piggybacked on existing ideas.

同样,许多崭露头角的企业家倾向于相信所有最好的创业想法都会被采纳。 第一原则从具体的角度挑战了这种偏见,以使其具有更大的范围。 我们今天称赞为创新的许多产品实际上都背负着现有的想法。

The line of reasoning must be to “find the missing pieces” in the market to make an idea work.

推理的路线必须是“找到市场上缺失的部分”以使想法起作用。

What about first principle thinking in software engineering? The short answer is that we practice it often but in bits and pieces!

那么软件工程中的第一原理思考呢? 简短的答案是我们经常练习,但要一点一点地练习!

Modelling a complex problem in software is challenging. Software engineers have used Object oriented programming since 1960s. And guess what, first principle thinking in software development is based on object orientation. This object orientation encompasses the aspects of encapsulation, abstraction etc help us model parts of the real world. Other programming paradigms like functional and reactive programming also help us break a niche problem into simple building blocks.

在软件中对复杂问题进行建模具有挑战性。 自1960年代以来,软件工程师就一直使用面向对象的编程。 并猜测一下,软件开发中的首要原理思考是基于面向对象的。 这种面向对象的方法包含了封装,抽象等方面,可帮助我们对现实世界的各个部分进行建模。 其他编程范例,例如函数式和响应式编程,也有助于我们将细分问题分解为简单的构建块。

Widely used machine learning and data mining algorithms have strong roots in Mathematics viz algebra, probability and optimisation. Although first principle thinking has its merits, software engineers have not fully benefitted from it for various reasons.

广泛使用的机器学习和数据挖掘算法源于数学,即代数,概率和优化。 尽管第一原理思考有其优点,但是软件工程师由于各种原因并没有从中充分受益。

We are habituated to relating problems to something that we may have solved in the past. Software engineers tend to spend more time writing code, fixing bugs and less time on “think-time”.

我们习惯于将问题与过去可能已经解决的问题联系起来。 软件工程师倾向于花费更多的时间来编写代码,修正错误,并减少“思考时间”上的时间。

Further, software systems employ well established architectural and design patterns which significantly reduces time-to-market. Libraries, frameworks and cloud-based solutions have been well designed to hide the internal complexities. All that’s needed is to utilize the right patterns, tools and software at the right places. Reasoning by analogy is fast, simple and ready to deploy!

此外,软件系统采用了完善的架构和设计模式,从而大大缩短了上市时间。 库,框架和基于云的解决方案经过精心设计,可以掩盖内部的复杂性。 所需要的只是在正确的位置使用正确的模式,工具和软件。 类推推理是快速,简单并且可以部署的!

Learning by example makes us prone to accept the status-quo and inhibits personal growth. So, how do we practice this line of thinking in software domain?

以身作则学习使我们倾向于接受现状并抑制个人成长。 那么,我们如何在软件领域实践这种思路?

Many software companies hire engineers through technical interviews wherein candidates are asked to find suitable data structures and algorithms and design systems. Questions are designed to test candidates’ approach to “First principle thinking”. Solution starts from a broad purview, digging all the way down, and at each step, various trade-offs are discussed.

许多软件公司通过技术面试聘用工程师,要求应聘者寻找合适的数据结构,算法和设计系统。 设计问题以测试候选人的“第一性思维”方法。 解决方案从广泛的角度出发,一直深入到每一步,并讨论了各种取舍。

Peer discussions and design review meetings can effectively help us reason about the design choices and the associated trade-offs. Thought diversity in a team and the ability to dive deep will set an engineering team for success.

同行讨论和设计评审会议可以有效地帮助我们就设计选择和相关的权衡取舍。 团队中思想的多样性和深入研究的能力将为工程团队带来成功。

Root cause analysis (RCA) is another methodology wherein engineering teams have tried to reason about the cause of failure.

根本原因分析(RCA)是另一种方法,其中工程团队试图推理出故障原因。

The 5 Whys unravel the mystery layer by layer.

《 5个理由》逐层揭开神秘面纱。

However, there is a certain irony that exists. At places, we have blindly accepted and followed “First principle thinking” hidden in various disguises. And at other places, we overlook critical thinking in pursuit of economic goals. Layers of abstraction and pre-packaged software, lack of time for investigation and research, and information overload have not helped.

但是,存在一定的讽刺意味。 在某些地方,我们盲目地接受并遵循了隐藏在各种伪装中的“第一原理思考”。 在其他地方,我们忽略了追求经济目标的批判性思维。 抽象层和预包装软件,缺乏调查和研究时间以及信息过载都无济于事。

First principle thinking is about human curiosity creating “atomic” ideas, leading to creativity and innovation. To end it poetically, we must pause and smell the roses, ask the basic questions and simplify things!

第一性原则思考是关于人类的好奇心创造“原子”的思想,从而导致创造力和创新。 为了诗意地结束它,我们必须停下来闻一闻玫瑰花,问一些基本问题并简化事情!

翻译自: https://medium.com/rupeek-blog/first-principle-thinking-in-software-development-2751d883862c

生活中的三件首要任务

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值