君子不器
一直以来都有在思考自己在软件/算法开发的道路上应该怎么走下去,已经学习了很多的内容,也参与了很多项目的开发,但是总感觉有更多的知识点、更多的项目难题等着我去完成。工作压力越来越大,也在渐渐的磨灭自己对于编程的热情。
前几天跑步的时候突然想到一句话:君子不器,随后联想到器、术、法的概念,刚好能够跟自己对于知识、技能和能力的理解结合起来。
君子不器
《论语·为政》,子曰:“君子不器”。
百度百科释义:君子不应拘泥于手段而不思考其背后的目的。君子心怀天下,不像器具那样,作用仅仅限于某一方面。器者,形也。有形即有度,有度必满盈。故君子之思不器,君子之行不器,君子之量不器。
何为君子
参考百度百科,最开始出现在先秦典籍中,多指“君王之子”,着重强调地位的崇高。而后“君子”一词被赋予了道德的含义,历代儒客文人将以君子之道自勉作为行为规范。
何为器
《易经·系辞》:形而上者谓之道,形而下者谓之器。
器、术、法
参考知乎,这是中国哲学概念:道、法、术、器、势、志。
- 法:法律/制度/方法;
- 术:行为与技巧;
- 器:工具。
个人理解
- 器对应着编程语言和工具;
- 术对应着编程操作技能;
- 法对应着编程解决方案。
器、术、法是一个递进关系:学习使用足够多的语言和工具,才能够实现某一个操作技能,才能够完成整体解决方案。它又是一个平行关系:每一个功能仅仅对应着某一些语法和操作,只需要一种写法就可以写出“回”字。
编程是一件非常严谨的工作,它强调语言、语法、规范。不同的语言拥有各自的语法、不同的工具也强调各自的使用规范,在工作过程中,需要给出明确的接口和功能。深入到编程实践过程中,需要考虑不同语言的命名原则,不同操作的最佳范式,接口的扩展性和鲁棒性。不仅仅需要考虑功能的实现,还应该编写相应的文档和测试、版本管理的操作和CI/CD的实现。另一方面编程也可以是一件非常不严谨的工作。每个功能都可以有多种实现方式,不需要多么考虑语法,也不需要多么考虑后续优化,更不在意工程的完备,只需要对外能够给出需要的表现就可以了。
软件开发小到可以是一份个人作业,大到可以是一门集体工作。不管是个人还是集体项目,功能点越多,功能实现越复杂,就愈加的依赖于更好的架构设计、可扩展的功能实现和更鲁棒的语言编写。
君子不器只是说不应该局限于语言工具的使用,不代表不应该对于语言工具的熟练学习和掌握。从结果来看,器、术、法是一个正向递进关系;但是从过程来看,它更应该是一个逆向递进关系:法、术、器。只有在拥有更开阔的工作视野、更明确的功能需求情况下,才能够更好的去选择要学习和实践的语言和工具。
相关阅读
在网上查阅相关资料的时候,竟然发现了好多类似的文章 ~~~。原来这个世界上有这么多人也有过类似的思考!!!世界这么大,更应该去看看