君子不器

一直以来都有在思考自己在软件/算法开发的道路上应该怎么走下去,已经学习了很多的内容,也参与了很多项目的开发,但是总感觉有更多的知识点、更多的项目难题等着我去完成。工作压力越来越大,也在渐渐的磨灭自己对于编程的热情。

前几天跑步的时候突然想到一句话:君子不器,随后联想到器、术、法的概念,刚好能够跟自己对于知识、技能和能力的理解结合起来。

君子不器

《论语·为政》,子曰:“君子不器”。

百度百科释义:君子不应拘泥于手段而不思考其背后的目的。君子心怀天下,不像器具那样,作用仅仅限于某一方面。器者,形也。有形即有度,有度必满盈。故君子之思不器,君子之行不器,君子之量不器。

何为君子

参考百度百科,最开始出现在先秦典籍中,多指“君王之子”,着重强调地位的崇高。而后“君子”一词被赋予了道德的含义,历代儒客文人将以君子之道自勉作为行为规范。

何为器

《易经·系辞》:形而上者谓之道,形而下者谓之器。

器、术、法

参考知乎,这是中国哲学概念:道、法、术、器、势、志。

  1. 法:法律/制度/方法;
  2. 术:行为与技巧;
  3. 器:工具。

个人理解

  1. 器对应着编程语言和工具;
  2. 术对应着编程操作技能;
  3. 法对应着编程解决方案。

器、术、法是一个递进关系:学习使用足够多的语言和工具,才能够实现某一个操作技能,才能够完成整体解决方案。它又是一个平行关系:每一个功能仅仅对应着某一些语法和操作,只需要一种写法就可以写出“回”字。

编程是一件非常严谨的工作,它强调语言、语法、规范。不同的语言拥有各自的语法、不同的工具也强调各自的使用规范,在工作过程中,需要给出明确的接口和功能。深入到编程实践过程中,需要考虑不同语言的命名原则,不同操作的最佳范式,接口的扩展性和鲁棒性。不仅仅需要考虑功能的实现,还应该编写相应的文档和测试、版本管理的操作和CI/CD的实现。另一方面编程也可以是一件非常不严谨的工作。每个功能都可以有多种实现方式,不需要多么考虑语法,也不需要多么考虑后续优化,更不在意工程的完备,只需要对外能够给出需要的表现就可以了。

软件开发小到可以是一份个人作业,大到可以是一门集体工作。不管是个人还是集体项目,功能点越多,功能实现越复杂,就愈加的依赖于更好的架构设计、可扩展的功能实现和更鲁棒的语言编写。

君子不器只是说不应该局限于语言工具的使用,不代表不应该对于语言工具的熟练学习和掌握。从结果来看,器、术、法是一个正向递进关系;但是从过程来看,它更应该是一个逆向递进关系:法、术、器。只有在拥有更开阔的工作视野、更明确的功能需求情况下,才能够更好的去选择要学习和实践的语言和工具。

相关阅读

在网上查阅相关资料的时候,竟然发现了好多类似的文章 ~~~。原来这个世界上有这么多人也有过类似的思考!!!世界这么大,更应该去看看