一年前,我因一些原因,工作变动,当时痛下决心,引用了《程序员的呐喊》封面的那句话:
Just stop sucking and become awesome!
一年很快就过去了,最近看了不少大神的博客和Github,也刷了不少Leetcode的题。有感而发。
如何评估一位程序员的技能和水平呢?有太多办法了,但基本上就是项目和算法,更细化一些,可以罗列如下:
当然,也要看其他软技能如沟通能力,不过基本上还是看上面这五条。我能占几条呢?大概2.2条的样子。
人和人的能力水平,简直是天上地下,甚至不具备可比性。乃至于,靠一般的努力都无法望其项背!
往上看,看大神的博客和教诲,感受代码看都看不懂的“酸爽”。强者愈强。很多人从中学甚至小学就开始接受编程教育,名校的计算机科班,本硕博每天研究的都是算法理论和优化,之后再工作中又有大量机会去亲身实践。加上这些人既刻苦又聪明,而且那种对问题的兴趣,又极大地加速了他的发展。
强者自然有了更好的平台和工作,接触更牛的人,进而有了更广阔的视野,又进一步强化自身能力,良性循环。
而默默无闻如我者,非科班出身,本科研究生学的都是通信,研究的是信道编码和通信原理,虽然说也是“计算”的某一个分支吧,但这种细分领域的能力和知识迁移起来,是需要不少成本的。大神刷leetcode都那么多遍了,我两年前才知道有这么个东西!一个月前看SICP感觉无比惊艳,之后才知道那本书不过是MIT大一新生的入门教材!
我常常会陷入自己创造的迷宫中沾沾自喜。几年前做的一些项目,当时觉得很赞,到后来才明白那不过是口水代码堆成的不牢靠的土城墙,在时间的腐蚀下慢慢被腐烂。若不是去年研究文本分析tn,接触编译技术,那些概念我抓破脑袋都想不出来。而我开发的爬虫和引以为傲的流技术,不过是SICP里的一个章节而已。
往下看,还有大量初级码农刚走出学校大门,对基本的原理也不甚清楚。不少人编程只是为了养家糊口,连兴趣都谈不上。
有时可怕的不是自己的无能,而是无知。而且是不知道自己无知。觉得自己已经很厉害了,便对别人的工作不care。有多少人很久没看过有深度的技术书籍了,多少人只是在GitHub上star或是fork一个项目,之后就再也没有关注过。
只是,要想进步,谈何容易。有那么多的杂事和其他细节,你努力,别人也在努力。常逛博客或是知乎,会有一种错觉,大神写得东西非常精彩,拍案叫绝。但是只要你点击了关闭按钮,文章里说的东西,就和你没有半毛钱关系了:自己该怎样还怎样。谁都能说出一堆高端名词,分布式,大数据,人工智能,大家都是键盘侠。可是,真正去写个代码啊,不少人就开始抓耳挠腮了。之后那句名言,我也就不需要引用了吧。
只看文章不写代码,就会出现典型的“能力跟不上理想”,每天谈的都是FLAG又出了什么新东西。只写代码不学习,就会陷入自己的世界。忙时晕头转向,闲时不知所措,时间就这么哗啦啦的过去了。
很多人太缺乏专注力,这种专注不是针对他感兴趣的那些事情,而是他不感兴趣或是感到困难的事情。某些宝藏就在视野之外,我们却草草扫了一眼,而忽视了它。比如我,看了那本神作《具体数学》,我深知看完之后我的技能会突飞猛进,然而我却依然在几章之后默默地放弃了它,兵败如山倒。
我之前对“训练”有偏见,觉得我每天都在编程,干嘛还要花那么多时间去刷题呢?这不是浪费时间吗?后来才意识到,开了十年的车,是一位好司机,却不是好车手。想要让技能更上一层楼,就必须对其进行专门的训练。
是啊,我做了一年自由的工作,收获了什么呢?我庆幸自己重新开始更新技术博客,开始更新GitHub;我庆幸自己从C#和Windows的泥潭中跳了出来,拥抱了开源;我庆幸自己学了python,写了tnpy和etlpy。如果没有这些改变,恐怕生活会更加黯淡。
我后悔自己没做什么呢?依然不够开放和专注。对核心和高难度的技术(比如机器学习),没有深入地推导公式而只知皮毛,无法让自己冷静下来认真思考;没有仔细去做leetcode和刷题;没有让更多的代码接受大众的审阅。
人是有局限的,振臂一呼就拿下山头的英雄主义,明显不适应于对智力要求较高的学习任务。我敢打包票,看那本《具体数学》,绝大多数人两个小时以后就看不下去哈欠连连了。如何让自己坚持下来简直也是一门艺术,大部分人,对自己根本不够狠,下不了狠手,更别说想要有多大的提高了。看书,做题,编程,写博客交替进行,效果也许会好很多。
这一年中,我肯定是进步的,但我深深地感觉到,自己学习,每天感叹别人的博客,随手翻一翻书本,再随便敲敲代码是绝对不行的。编程是一种社会活动,是“任务导向”的,需要有团队,有人带,并且包含持续的集成和输出。
这篇文章,权当是我这一年在技术方面的一个简单的总结吧。我期待之后的我,能接触到更好的团队和环境,更踏实稳定的技术,不求成为大神,让自己尽量awesome起来。