文字首发于公众号|左羊公社
在我看来,程序员可划分为三个层次:程序员、工程师和架构师。
普通程序员负责编写代码。他们的核心任务是确保程序能顺利运行、处理业务流程并正确地对数据进行计算。程序员需要掌握编程语言特性,熟悉整个程序的逻辑和处理过程,并了解计算机操作系统的交互调用方式。这样能写出与用户侧交互、数据和业务逻辑处理、计算机系统交互相关的代码,并顺利地串联和拼装用户信息、数据、业务和计算机系统。
有些程序员发现让代码仅运行是不够的,因为这个世界在不断变化。他们需要更多时间维护代码,增加新的需求,扩展原有流程,修改功能,优化性能等。这些程序员开始了解代码不仅要能够运行,还要易读、可扩展、易维护、可重用。他们采用多种技术和方法来提高代码的可读性、可扩展性、可维护性和可重用性。这些有洁癖、有工匠精神、有修养的程序员被称为工程师。
工程师不仅编写代码,更使用工程方法提高编程开发的效率和速度。他们把编程看作工业设计,在将代码模块化交互、拼装和组织上更容易。这能使代码更整齐排列,阅读和维护这些代码就像观看阅兵式一样美妙。
然而,这些工程师发现有些问题就像翘翘板,只要一边上去了,就会有另一边下来了。无论用空间换时间还是用时间换空间,都难以找到同时满足空间和时间要求的"完美设想"。布鲁尔定理中的(AP\CP)三选二也是如此,这个世界没有完美的解决方案,无论采用哪种方案,都有优点和缺点。工程师还发现,引入新技术来解决旧问题时,新技术会带来更多问题。
因此,经验丰富、勇于担责、乐于探索的工程师站了出来,尝试寻找解决这些问题的方法。他们中有些人会基于业务分析(成本、资源、性能之间)提出平衡的方案,有些人则开始设计更高级的技术,还有一些人会设计更灵活的系统。最终,他们成为了架构师,负责将整个系统组织和优化,以便更好地解决问题。