软件教书匠金旭亮
24-10-08 08:39 微博认证:北京理工大学计算机学院教师 金旭亮 头条文章作者

有人问:“为什么学编程那么难?”

其实他把两件事物给弄混了,一个是编程技能,另一个是具体编程技术。

编程本质上是一种技能,一种针对特定问题设计出解决方案,并将这一方案落地的专业能力。想在这块达到较高的水平,这个是需要长期训练的。

一方面要有针对性地刻意练习,比如,学习与掌握科学的系统分析与设计方法;掌握成熟的针对特定场景的技术方案; 另一方面,则需要大量的开发实践,尤其是参与完整的项目实践。

“兵来将挡”、“水来土掩”地解决在实践过程遇到的层出不穷的各种问题,在解决各种问题的过程中逐步提升自己的专业技能,这块,没有捷径。

还有一点,“编程”这词容易引发误导,让人以为编程就是写代码,如果换为“开发”这词,可能更为合适与贴切,“编程难”,其实是“开发难”。

再说说编程技术,具体编程技术的学习难度,差异可以很大。简单的技术,几个小时、几天就可以掌握,复杂的技术,需要具备N多前置知识与技能,可能需要以月甚至年为单位的时间投入。

所以觉得“编程难”,请明确一下是在哪个地方遇到了困难。

通常来说,“编程技能”这块的困难,本质源于现实事物与问题的复杂性,软件是要为解决现实问题服务的,遇到的问题越复杂,解决起来难度就越高,找到可行的技术方案就越困难。

比如,某个网络服务程序,出现“灵异现象”,每隔半个月就必须重启一次,为啥?又比如某系统被黑客攻破了,如何找到系统漏洞并补上?诸如此类的问题,要解决都蛮难的。

掌握具体编程技术的困难,多半来源于掌握这项技术必备的前提没掌握,比如,不具备相应的数学基础(比如连概率统计都不懂),就去学一些特定领域的技术(比如各种AI框架),那自然是学不会的。

再举个典型例子,面向对象都不懂,Spring Boot也没学明白,直接上手学Spring Cloud微服务,这是想“一步登天”,也不可能的。

这里的应对之策很简单,把前置知识或技术掌握好,扫清学习障碍,再去学这个技术,通常就“水到渠成”,这事就不难了。

发布于 北京