软件开发活动是把需求转换为服务的过程,这个服务的目的是解决某一类问题,它可以是一个方案,也可能是一个APP,或者是一个玩具,等等。
软件开发活动的核心资产是人的大脑,经过大脑的认知和消化,才能有所产出,即使是C(Ctrl+C)V(Ctrl+V)党,所以要想开发出高质量的软件,需要的是人才而不是人力。
对于参与软件开发活动的开发人员来讲,要认知到自身在软件开发活动中的站位,设计出简单而非简陋的框架,编写出简洁而非简陋的代码。
以复杂性为耻
软件开发活动过程中,最经常听到的一个词是抽象,抽象解决的就是复杂性的问题。
我们反过来先看看,抽象的反面就是具象。具象本身并没有错,但是基于具象进行软件设计往往会有问题。
在软件开发活动的初始阶段,基于具象的设计并没有错,但是随着开发活动的开展,基于具象的设计往往会陷入为了解决问题而引入更多的具象设计,带来灾难性的连锁反应,从而引入无法理解的复杂性。
软件开发活动需要不断的反思和重构,从而保证抽象性,为长远做打算。
软件开发人员应该以复杂性为耻,一段复杂的代码可能会花费大量的努力,但找对努力的方向更重要。
深度思考
抽象的过程实际上是思考的过程,软件开发过程的核心仍然是思考,思考,再思考。
业界统计,程序员日均代码行数也就几十行,再多也不足百行,软件开发人员的工作最终体现在编码上,但更多的时间是在沟通和思考。
《重新定义公司》
如果雇用员工只是为了让他们工作,那么这种钳制信息的传播方式可能还能有效。
但在互联网时代,我们雇用员工是让他们进行思考的。
更深层次的思考可以带来对问题的更多理解,通过 思考 → coding → 思考 → ... 的反复迭代,让设计更简洁,更抽象。
合于“道”
-
理解机器
-
程序语言设计的设计本身就是为了解决与机器沟通的问题,使用的仍然是人类的思维表达,用人的思维方式来理解机器。
-
-
站在前人的肩膀上
-
牛顿说过:“如果说我比别人(笛卡尔)看得更远,那是因为我站在巨人的肩膀上”,软件设计也是这样。
-
-
选择合适的刀
-
语言多种多样,选择趁手的;模式,算法选择合适的
-
-
自然
-
一生二,二生三,三生万物,找到那个“一”
-
(↓ - 有些内容只在小龙家发,可关注同名“趣Python”号,谢谢 - ↓)