当前位置: 华文星空 > 知识

你的编程能力从什么时候开始突飞猛进?

2019-11-17知识

在我的码农生涯中,一共有2个节点,感到自己有一种技术上「突飞猛进」的感觉。

第一个节点,发生在我写了一年代码的时候。触发点是读了两本书。

那时候刚刚转行一年,熟悉了同事,大致理解了公司产品的技术栈,知道整个流程是什么样的。按我现在的角度来看,当年的水平也就是个过得去的实习生(然而当时已经全职了……)。

我全心全意地想提高技术水平,然而总不得要领,也反思为什么自己对于技术的理解深度和同事们有那么大的差距。在熟悉了Python语法后,我所会的其实仅仅是将自然语言和逻辑翻译成代码,然而并不能从计算机的角度去理解代码执行的原理,当然更无从理解性能优化之类更深奥的事情。

那时候带我的数据工程师,手边经常放着一本【编写高质量代码:改善Python程序的91个建议】,我就有样学样买了一本,并且老老实实用上班的空隙时间+下班的休息时间,缓慢地啃完了整本书。再后来,觉得意犹未尽,又买了同系列的【Effective Python:编写高质量python代码的59个有效方法】,用同样的方法缓慢而持续的啃完。

这两本书讲了很多巧妙的方法, 让我搞懂了同事代码中很多写法的具体原因和目的,同时自己的代码也在加持下变得更加简洁和规范起来。 从这时开始,我才开始学习代码之下潜藏的更多计算机原理,逐渐能够从计算机而非人类的角度去理解代码。

打个比方。 算法、数据结构这些硬功夫像【九阴真经】,学会以后妙处无穷,耗时很长。上面这两本书比较像【九阴白骨爪】,可以速成,憾之深度有限。 但对于刚刚接触软件工程不久的人来说,通读这两本书,确实可以有功力大增的感觉。所以我强烈推荐,无论新老工程师,都要读一读这两本,起码要做一个 Pythonic 的程序员。

第二个节点,是我第一次独力写完并维护公司产品的核心服务。

有一天CTO突然把我和另一位前端负责人叫到一起开了个3人小会,讲了一下要写一个新的后端数据读写服务。这个服务非常核心,对性能和健壮性都有很高要求。

当时会议的情况我记忆至今:CTO和前端负责人你一言我一语地说着架构,我在旁边听天书,都是没见过的词。聊到最后,CTO问我一句,「你能听懂么?」

我像美剧【硅谷】里面的Dinesh一样……

我是右边那个……

不过赶鸭子上架,用了大半年的时间写完并打磨这个组件,最后好歹完成了一个靠谱的东西(在早期还有另一个大牛同事帮我搭了脚手架,非常感激)。这也是我码农生涯中完成的最重要的东西。开发这个组件遇到无数知识盲点、踩了无数坑,数据库、运维监控、通讯协议、性能调优、单元测试……这些全折腾了一遍,感觉像读了个加速版CS本科。

做完这个项目,我的编程水平终于从一个实习生无限逼近于工业级了。回头看看,像做梦一样,居然这么熬着熬着就成为同事口中的「谷老师」了。 有些事情,还真的要靠时间来打磨。

在毕业多年后开始学习写代码,让我理解了很多事情,不仅仅是计算机,也包括了「如何把事情做好」的方法。

「突飞猛进」往往是自然发生的。 你在某个夜晚苦熬一个知识点时,不会觉得自己「突飞猛进」;只有在多年后某日熟练的给别人讲解这个知识点后,内心才会小小的波动一下,猛然忆起当年深夜中的青灯一盏。

总结一下:用力地啃好书。专心地做好项目。剩下的,时间会帮你搞定。