一年前,我因一些原因,工作变动,当时痛下决心,引用了《程序员的呐喊》封面的那句话:
Just stop sucking and become awesome!
一年很快就过去了,最近看了不少大神的博客和Github,也刷了不少Leetcode的题。有感而发。
如何评估一位程序员的技能和水平呢?有太多办法了,但基本上就是项目和算法,更细化一些,可以罗列如下:

  • 对数据结构和算法的掌握和水平, 如各类排序和树算法
  • 对某种底层技术的理解和认识,如TCP/IP
  • 是否对技术有很大的兴趣,如个人项目,博客,自研的类库和软件
  • 项目经历,是否完成过大型系统设计,如海量数据处理经验
  • 对业务是否有自己独特的理解,并如何服务于技术

当然,也要看其他软技能如沟通能力,不过基本上还是看上面这五条。我能占几条呢?大概2.2条的样子。

人和人的能力水平,简直是天上地下,甚至不具备可比性。乃至于,靠一般的努力都无法望其项背!

往上看,看大神的博客和教诲,感受代码看都看不懂的“酸爽”。强者愈强。很多人从中学甚至小学就开始接受编程教育,名校的计算机科班,本硕博每天研究的都是算法理论和优化,之后再工作中又有大量机会去亲身实践。加上这些人既刻苦又聪明,而且那种对问题的兴趣,又极大地加速了他的发展。

强者自然有了更好的平台和工作,接触更牛的人,进而有了更广阔的视野,又进一步强化自身能力,良性循环。

而默默无闻如我者,非科班出身,本科研究生学的都是通信,研究的是信道编码和通信原理,虽然说也是“计算”的某一个分支吧,但这种细分领域的能力和知识迁移起来,是需要不少成本的。大神刷leetcode都那么多遍了,我两年前才知道有这么个东西!一个月前看SICP感觉无比惊艳,之后才知道那本书不过是MIT大一新生的入门教材!

我常常会陷入自己创造的迷宫中沾沾自喜。几年前做的一些项目,当时觉得很赞,到后来才明白那不过是口水代码堆成的不牢靠的土城墙,在时间的腐蚀下慢慢被腐烂。若不是去年研究文本分析tn,接触编译技术,那些概念我抓破脑袋都想不出来。而我开发的爬虫和引以为傲的流技术,不过是SICP里的一个章节而已。

往下看,还有大量初级码农刚走出学校大门,对基本的原理也不甚清楚。不少人编程只是为了养家糊口,连兴趣都谈不上。

有时可怕的不是自己的无能,而是无知。而且是不知道自己无知。觉得自己已经很厉害了,便对别人的工作不care。有多少人很久没看过有深度的技术书籍了,多少人只是在GitHub上star或是fork一个项目,之后就再也没有关注过。

只是,要想进步,谈何容易。有那么多的杂事和其他细节,你努力,别人也在努力。常逛博客或是知乎,会有一种错觉,大神写得东西非常精彩,拍案叫绝。但是只要你点击了关闭按钮,文章里说的东西,就和你没有半毛钱关系了:自己该怎样还怎样。谁都能说出一堆高端名词,分布式,大数据,人工智能,大家都是键盘侠。可是,真正去写个代码啊,不少人就开始抓耳挠腮了。之后那句名言,我也就不需要引用了吧。

只看文章不写代码,就会出现典型的“能力跟不上理想”,每天谈的都是FLAG又出了什么新东西。只写代码不学习,就会陷入自己的世界。忙时晕头转向,闲时不知所措,时间就这么哗啦啦的过去了。

很多人太缺乏专注力,这种专注不是针对他感兴趣的那些事情,而是他不感兴趣或是感到困难的事情。某些宝藏就在视野之外,我们却草草扫了一眼,而忽视了它。比如我,看了那本神作《具体数学》,我深知看完之后我的技能会突飞猛进,然而我却依然在几章之后默默地放弃了它,兵败如山倒。

我之前对“训练”有偏见,觉得我每天都在编程,干嘛还要花那么多时间去刷题呢?这不是浪费时间吗?后来才意识到,开了十年的车,是一位好司机,却不是好车手。想要让技能更上一层楼,就必须对其进行专门的训练。

是啊,我做了一年自由的工作,收获了什么呢?我庆幸自己重新开始更新技术博客,开始更新GitHub;我庆幸自己从C#和Windows的泥潭中跳了出来,拥抱了开源;我庆幸自己学了python,写了tnpy和etlpy。如果没有这些改变,恐怕生活会更加黯淡。

我后悔自己没做什么呢?依然不够开放和专注。对核心和高难度的技术(比如机器学习),没有深入地推导公式而只知皮毛,无法让自己冷静下来认真思考;没有仔细去做leetcode和刷题;没有让更多的代码接受大众的审阅。

人是有局限的,振臂一呼就拿下山头的英雄主义,明显不适应于对智力要求较高的学习任务。我敢打包票,看那本《具体数学》,绝大多数人两个小时以后就看不下去哈欠连连了。如何让自己坚持下来简直也是一门艺术,大部分人,对自己根本不够狠,下不了狠手,更别说想要有多大的提高了。看书,做题,编程,写博客交替进行,效果也许会好很多。

这一年中,我肯定是进步的,但我深深地感觉到,自己学习,每天感叹别人的博客,随手翻一翻书本,再随便敲敲代码是绝对不行的。编程是一种社会活动,是“任务导向”的,需要有团队,有人带,并且包含持续的集成和输出。

这篇文章,权当是我这一年在技术方面的一个简单的总结吧。我期待之后的我,能接触到更好的团队和环境,更踏实稳定的技术,不求成为大神,让自己尽量awesome起来。

Stop sucking,Become awesome.这一年我做到了么的更多相关文章

  1. (转)LSTM NEURAL NETWORK FOR TIME SERIES PREDICTION

    LSTM NEURAL NETWORK FOR TIME SERIES PREDICTION Wed 21st Dec 2016   Neural Networks these days are th ...

  2. <老友记>学习笔记

    这是六个人的故事,从不服输而又有强烈控制欲的monica,未经世事的千金大小姐rachel,正直又专情的ross,幽默风趣的chandle,古怪迷人的phoebe,花心天真的joey——六个好友之间的 ...

  3. CodeForces 173B Chamber of Secrets spfa

    Chamber of Secrets 题目连接: http://codeforces.com/problemset/problem/173/B Description "The Chambe ...

  4. python瓦登尔湖词频统计

    #瓦登尔湖词频统计: import string path = 'D:/python3/Walden.txt' with open(path,'r',encoding= 'utf-8') as tex ...

  5. A Game of Thrones(15) - Sansa

    Eddard Stark had left before dawn, Septa Mordane informed Sansa as they broke their fast. “The king ...

  6. A Game of Thrones(2) - Catelyn

    Catelyn had never liked this godswood(神木林). She had been born a Tully, at Riverrun far to the south, ...

  7. English Learning - Vampire bats

    " Vampire bats are very adaptable." Bambi said. And when their roosts are disrupted or the ...

  8. 程序员大牛 Jeff Atwood 的两本中文书

    程序员大牛,StackOverflow.com创始人之一--Jeff Atwood 英文博客:http://blog.codinghorror.com <高效能程序员的修炼>,人民邮电出版 ...

  9. 程序猿大牛 Jeff Atwood 的两本中文书

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/happydeer/article/details/17094271 watermark/2/text ...

随机推荐

  1. 怎么将java web 项目导入idea 中

    1.将 java web 项目导 入idea 中, 显示 然后进行 Configure 配置. 2. 点击 open module settings. 3. 4. 选择jar包. 5. 6. 配置to ...

  2. STM32之DMA+ADC

    借用小甲鱼的经典:各位互联网的广大网友们.大家早上中午晚上好..(打下小广告,因为小甲鱼的视频真的很不错).每次看小甲鱼的视频自学都是比较轻松愉快的..我在想,如果小甲鱼出STM32的视频,我会一集不 ...

  3. Java的四种引用方式

    一.引用基本概念 从JDK1.2版本开始,把对象的引用分为四种级别,从而使程序能更加灵活的控制对象的生命周期.这四种级别由高到低依次为:强引用.软引用.弱引用.虚引用. 1.强引用(StrongRef ...

  4. MLlib决策树与集成树

    决策树是一种常见的分类与回归机器学习算法,由于其模型表达性好,便于理解,并能取得较好的效果,而受到广泛的应用.下图是一个简单的决策树,决策树每个非叶子节点包含一个条件,对于具有连续值的特征,该条件为一 ...

  5. Win10 下安装 NodeJS

    1,右键点击底部导航栏win(开始)弹出,使用  命令提示符(管理员A) 2,输入命令,进入安装文件目录,输入  msiexec/package node-v4.4.4-x64.msi ----弹出安 ...

  6. Ubuntu下安装mod_python报错(GIT错误)

    Ubuntu下安装mod_python3.4.1版本报出如下错误: writing byte-compilation script '/tmp/tmpE91VXZ.py' /usr/bin/pytho ...

  7. iOS 按钮上的标题设置向左向右对齐的方法

    Button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;//左对齐(UIControlContentHo ...

  8. Python的字节编译

    1.什么是Python的.pyc文件 在python中 .pyc文件是指以.pyc为后缀名的这一类文件,在我们的python的安装目录里,找到模块所在的目录Lib会看到很多以.py结尾的模块文件,与之 ...

  9. Jquery 仿 android Toast效果

    JS代码如下: /** * 模仿android里面的Toast效果,主要是用于在不打断程序正常执行的情况下显示提示数据 * @param config * @return */var Toast = ...

  10. 【译】.NET中六个重要的概念:栈、堆、值类型、引用类型、装箱和拆箱

    为何要翻译 一来是为了感受国外优秀技术社区知名博主的高质量文章,二来是为了复习对.NET技术的基础拾遗达到温故知新的效果,最后也是为了锻炼一下自己的英文读写能力.因为是首次翻译英文文章(哎,原谅我这个 ...