从0开始学编程,方法真的对了吗?

至今约10年的工作经历 。刚毕业的头两年,是在工控领域做自动化工程师,用PLC编程 。之后,兴趣使然,做了软件工程师,用JAVA编程 。曾在互联网公司担任过技术专家,管理过技术团队 。随后又在创业公司做过架构师、技术总监等职位 。
不能说经验太丰富,多少也可以提供一些视角,供大家参考 。
关键词一:解决问题
很多零基础学编程的文章,都列出了“劝退清单”,要入门就得学这些:数据结构、算法、Java、Spring、MySQL、缓存、消息队列、数仓、分布式,极其各个细项,一大堆东西 。别说零基础,十年基础看得也要慌 。我认为如果一个人不出于解决实际问题,而整日看一些概念的技术书,是一个非常不人道的做法 。
当然,当代程序员不得不看,因为厂里招人就是这个要求 。一旦内卷,那大家都没法好好生活 。这是现状,没有办法,我们也许只能接受,但是我希望的,在你接受现状的时候,你也要眼里有光 。编程到底是一个应用性很强的学科,它的目的在于“解决问题”!自己念三遍吧 。
如果你看完这篇文章,甚至于我假使写了无数篇文章后,只想让你记住的四个字,那么就是“解决问题” 。
比方你大学前端后端人工智能统统都学了,靠年轻之力记住了非常多的细节,你面试通过了,随后你做的是后端工程师 。那么,基本上你可以忘掉所有前端知识,只要记得那是在展示,即可 。这是在做什么?是在基于抽象层级地学习 。我们总说要搞明白抽象层级,基于接口编程,迁移到学习中,也是一样的 。你要相信你的接口,相信自己不用去深入跨领域的每一个细节,相信不用去搞明白底层的每一个细节,也能解决你的实际问题 。
有个理论叫SOC——Separation Of Concern,关注点分离 。运用到编程中,一个具体场景就是不要让子程序的变量超过7个,为什么,因为人的短期记忆,就是只能处理7±2的概念数,一旦超过,你会极不舒适,你不舒适老板无所谓,但如果出了差错你就完了 。刚入行的时候经常看到有人写几百行的方法,写完之后我看他人也不大好了,你要问他这是在写啥,教教我,他脾气也会变得很不好,这也就算了,他还想显得自己挺懂,这就很难相处 。
另外,我是一个平常心看待中间件的人,认为这也是另一种业务开发,不过它们的业务是某个中间件罢了 。我们可以“去心中神”,不是做了某个底层领域就一定很厉害 。事实上,每个领域的专家都厉害,每个领域的菜鸟都不厉害 。我更喜欢这样的工程师,知道世上新出了某些技术,随后使用好这些技术,解决了某些实际的业务问题 。至于要多么地深入这个工具的底层,就取决于场景是否需要 。我们都知道不断有新技术出现和淘汰,但又万变不离其宗 。
我自己来到创业公司后还有个感悟,中间件团队一定不是中小厂的必备,甚至在资源有限的情况下,往中间件多投入一分都是错误的选择 。因为你投入小了不会有成效,投入多了没这个资源 。那怎么办,缓存,队列,都要用啊?答案很简单,买 。现在各种云服务非常多,他们提供的服务也远比一些二线互联网公司自建的中间件团队要稳定 。在当代,如果仍在坚持自建IDC机房,那很可能都过不了等保审计 。比如这个问题——你如何容灾备份 。
说了以上这些,就是希望你重视“解决问题”,解决问题是需要有“场景”的,而非闭门造车的 。这是我们的第一个“关键词” 。
关键词二:完整理解 。
我们已经知道了要学什么,是有一个限定范围的 。但是我们依然需要具备对问题的“完整理解” 。
也许你会问,那这不是矛盾了吗?刚才还说要有限定的学习和理解,怎么现在又要“完整理解”了,这不就是啥都要学吗?
不是的,打个比方,公司的CEO知道基层员工在做啥吗?大概率是不知道的,但是影响他管理好这个公司吗,不影响的 。
我给出的编程领域的“完整理解”,是需要你知道这一点——编程所做的一切,都是关于信息及对信息的处理 。
拿一个公司技术团队的标配来说,包含前端工程师、后端工程师、算法工程师、测试工程师 。这些岗位,拿到的是同一批“信息”,但是大家对这些“信息”的“处理”不同 。前端负责信息的展示,后端负责信息的逻辑,算法负责信息的洞察,测试负责检查大家的工作 。


推荐阅读