转载

关注技术更新,基于怎样的应用策略

熵,是混乱和无序的度量,无序的变化远远高于有序。熵的关键在于熵值会随着时间推移而增加。也就是说,一切事物会从有序趋向无序。

生命、思想以及人类奋斗的最终目的:创造能量和信息克服熵的浪潮并开辟有利秩序的庇护所

​ ---------------- 史蒂文·平克,心理学家、认知科学家

技术总是进行着这样一种循环,为解决老问题去采用新技术,新技术又引发新问题,新问题的解决又要诉诸更新的技术。

​ ---------------- 摘录 《技术的本质》

软件技术当然也逃不出这个循环,随着新的思想、新的方法出现,技术在不断升级更新。如果从业人员仅仅满足于黑盒式使用,对技术的换代更新目不暇接,心累身累学不过来,也就避免不了被时间淘汰。

再摘录一段关于基因和环境选择的文字如下:

基因有遗传和突变,突变有线性突变也有离散突变,环境对突变进行优胜劣汰的选择。

​ ---------------- 摘录《适者降临》

生物进化和自然淘汰是个复杂的过程,基因有显性和隐性的区别,在影响可观察的表征性状上也比较复杂,涉及到多组碱基对的相互作用。但在无穷多的的组合中为何出现了“特定”的突变至今是个难解之谜(这个“特定”是相对现在的人类而言)。

既然变化是万物宿命,那咱就谈谈应对的方法和策略。面对变化一般有两种并不相互排斥的策略(说到变化,那就无可避免的要谈《易经》,这里只列个条目),

一种是,天行健,自强不息;有能力在清晰的自我认知上,不断创造出适合自己需求的解决方案。这是技术驱动的最佳引领表现。

另一种是,地势坤,厚德载物;努力认清自己的需求,客观看待所处阶段,因势利导,在选型和微创新方面,组合出自己的解决方案。在量变到质变的技术积累过程中前行。

二、软件认知范围内的考量

从技术架构实现与防腐的角度,创造和重构的区别是有无基础,随软件产品发布后使用时间的推移,不可避免有功能的增、删、改,这符合产品的生命周期。架构本身就是基于当时需求认知上(这个需求是会变化的),利弊权衡的结果,自然也就有了适应性表现上的利弊。新技术的应用推动产品进化,客观需求也在选择新技术的应用(通过选择产品和产品的功能)。软件开发和重构有一套方法论,在这里不做深入讨论。

从系统的角度,有具体问题,就有系统问题的。从人类目前所认知的解决方式来说,复杂(局部组合而成的规模表现) = 系统(分解后的组合)+ 具体(分解后的局部),当中也就涉及到架构问题。架构和系统是形式和内容的关系,没有架构设计也可以形成系统(自上而下是设计,自下而上是进化),只是规模的大小、进化时间的长短有区别而已,架构的形式也就带来了系统问题。新的方式和技术使用,可以改善架构本身的问题。

从工程的角度,开发的效率和质量,一直都是软件工程中要不断改善的部分,基于质量的效率是我们追去的目标。比如:提高自动化比重、抽象整合公用类库、规范形式和过程、知识分享和总结等都能提高人效的方法。新的方式和技术使用,能够起到如虎添翼的作用。

从团队组织和管理的角度,减少沟通成本和缩短反馈和改善的循环;这个要用比较的方式,才能看出其中的价值。按SDLC(Software Development Life Cycle 软件开发生命周期)的说法,软件开发划分为六个阶段:问题定义和规划、需求分析、软件设计、程序编码、软件测试、运行维护。从瀑布式开发到敏捷开发,我们都是在一个目标的指引下串联这几个过程。这个目标可以理解为交付产品,也可以是交付功能。产品分解为功能,功能按优先级排序,然后按过程进行开发。这个过程中反馈和改善的循环是可以在组织和管理的方式上给予优化的,比如:基于功能来组织人员,让各阶段中参与的人员都尽量早的参与到整个过程中,减少沟通和流程的成本。至于如何按自身情况去组织和管理,这是方法论的问题,这里不多做讨论。

原文  https://juejin.im/post/5cd3d96c51882535786bc432
正文到此结束
Loading...