软件技术中的道与术

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yjp19871013/article/details/85011949

说起专业基础课,编程语言和各种库和框架在软件开发中的地位,大家可能会有不同的看法,关于深入学习什么,也存在着各式各样的看法。有的人认为,只要熟悉一门编程语言,然后深入学习这门语言实现的各种框架,就可以做好相关领域的开发;还有一些人认为,我需要广泛的学习各种编程语言,做一名语言专家,这就好比是编程领域的翻译;也有深钻专业基础课和各类算法的人,这类人内功深厚。总之,每个人对自己喜欢和关注的领域可能都不同。

软件技术的道也就是专业基础,是软件修习之路的内功心法,软件技术道的理解越深刻,配之以合适的术,软件开发功底自然不俗。就好比内功深厚之人,只是普通的拳法,一样能克敌制胜。但是学习软件技术的道很枯燥,坚持下来的人寥寥无几。

软件技术的术,就是我们的库和框架,这些是前人知识的概括和总结,是有体系的武林秘籍,掌握术可以让我们利用已有的经验解决我们的问题,提高开发的效率。

至于编程语言,不妨将其认为是编写武林秘籍的语言,同样的术,可能会有不同语言的版本,差别仅在于这门语言是否能够简洁的描述术,能否让术更快地被学习和接受。

如果我们是实用派,可以多花些精力学习术,术的掌握能够让软件开发的门槛降低,也就是让大家更快的步入江湖,但是在江湖中闯荡多日后,单纯掌握术,会让人感到貌似自己什么都能做到,但是又非常无力——我们有很多的招式用来躲避对手的杀招,在对手疏忽时克敌制胜,但是却永远不敢当面对质,因为我们内功不够深厚,遇到强大的对手我们无力招架。

内功深厚之人,非常善于创造术,任何招式在他看来都是相同的,他们就如扫地神僧,淡泊名利,只期望不断追求技术上的飞跃,进而普度众生。

软件技术的道和术最好是双修为好,这样相辅相成,相得益彰。正如前面写到,内功的高低直接决定了同样的术发挥作用的高低,当你使用别人的术时,明白背后的原因,你会扬长避短,在同样类型的术上也能分出优劣。

那么,软件行业中的道和术分别有哪些呢?

道包括各类原理和算法,各种编程思想,成熟的架构方案等等,这些内容不会因为时代的发展而改变,是客观存在的规律和最佳实践方法,比如操作系统原理中的PV操作,对于不同的操作系统和编程语言,机制是一样的,只是接口不同;再比如TCP/IP协议栈,作为现代网络的基础协议,是不会改变的,无论HTTP还是FTP,只是其上的应用层协议,底层都离不开TCP/IP协议栈,而作为访问协议栈的手段,socket也可以算作是道的一种,不同的实现只是在接口,易用性以及操作的粒度上存在差别。道的例子比比皆是,专业基础课中包含的基本都属于道。术主要是各种库和框架,一般都是具化到某种编程语言或者某种平台的技术,例如Java Web编程,Linux应用程序设计等等。

但是在熟悉术的过程中,我们完全可以结合道的学习,从而理论联系实际。例如Java Web编程我们学会了使用Servlet,JSP,SSH,SSM等等各种技术,但是我们掌握这些技术是否就够了?下一步我们应该去想,为什么这些框架被广泛使用?它们到底有什么好处?或者至少他们在哪些方面做得好?我们可能就会想到,这些都是用Java编写的用来简化或者优化Web开发的,接下来我们就应该去想想,Web开发到底有哪些规则和理念,学习完这些,或许做Web开发已经可以不局限于Java一种编程语言了。而更进一步,我们可以去想想,为什么Web开发需要这些规则和理念,是否和HTTP有关,那就去了解一下HTTP....按照这样的思路,通过修习术,也能够带动我们道的提升。

软件开发是一项充满挑战的工作,需要我们不断在道和术两方面提升自己。我是从道的修习开始的,之后发现道太过晦涩,就去学了一些术,之后从术中又学习了一些道,借机又回到了道的学习......可以说每一轮修行,都让自己受益良多。大家可以去尝试一下。最后想说几个不要,希望对大家有所帮助:

不要被术束缚了你创造术的能力;

不要让你最熟悉的编程语言成为了你学习其它编程语言中思想的绊脚石;

不要被商业的风向影响了你追逐技术的步伐;

不要觉得技术上有比你强大的人你就不可能比他更强大;

不要在自己技术强大的时候就忘记了当初小白的自己;

不要忘记帮助过自己的人;

不要以技术作为评判人的标准....

猜你喜欢

转载自blog.csdn.net/yjp19871013/article/details/85011949