一入软件开发深似海,老司机有几点忠告
作者:华为云专家| 人民副首席码仔 上世纪60年代爆发的软件危机催生了软件工程,人们寄希望于借助工程化的手段管理、设计、构建和维护软件,自此,聪明绝顶的工程师便在追求更美好软件的漫漫长路上艰苦求索。 开发语言经历了汇编、C、C++、Java、Erlang、Python;编程范式涵盖了面向过程(POP)、面向对象(OOP)、泛型(GP)、函数式(FP);软件架构从单机到分布式到云原生,包括巨石,库组件模块服务,分层,微服务,MVC/ServiceMesh/Serverless等;而软件工程思想和方法论则包括以生命周期管理为核心注重工序的瀑布模型(Waterfall Model),以需求进化为核心注重迭代渐进的敏捷开发(Agile Development),以边界划分和控制为核心注重领域建模的领域驱动设计(DDD:Domain Driven Design)。 世界是缤纷复杂的,要把真实世界映射到虚拟软件注定不会是一件容易的事,软件开发是权衡抉择的艺术,譬如快速交付和安全生产常常背道而驰,开发效率和运行效率总是难以一致。 所以在软件发展的历史长河中,人们发明一种方法解决一个问题,而几乎总是会引入另一个问题,软件工程师不得不面对混沌不堪的世界。 面向过程(C)认为一切皆过程,现实世界都可以封装为一个个过程,通过过程串联和编排模拟世界。但随着软件被大规模用于解决复杂的商业问题