一年前,我因一些原因,工作变动,当时痛下决心,引用了《程序员的呐喊》封面的那句话:
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. Selenium_等待页面加载完毕

    隐式等待 WebDriver driver = new FirefoxDriver(); driver.get("www.baidu.com"); driver.manage(). ...

  2. oracle plsql 无法连接 报 ORA-12560: TNS:protocol adapter error

    ORA-12560: TNS:protocol adapter error 添加一个环境变量,名为TNS_ADMIN,值为 tnsnames.ora 文件所在路径.比如我的本机为:D:/instant ...

  3. jquery基本

    对于jquery属性的访问: //对于bool值的属性,元素标签中如果写了这个属性,attr能够获取到,如果没有写,就获取不到. 如:<input type="checkbox&quo ...

  4. browsersync实现网页实时刷新(修改LESS,JS,HTML时)

    var gulp = require("gulp"), less = require("gulp-less"), browserSync = require(& ...

  5. (转)win7 64 安装mysql-python:_mysql.c(42) : fatal error C1083: Cannot open include file: 'config-win.h': No such file or directory

    原文地址:http://www.cnblogs.com/fnng/p/4115607.html 作者:虫师 今天想在在win7 64位环境下使用python 操作mysql 在安装MySQL-pyth ...

  6. TortoiseSVN 合并操作简明教程

    下列步骤展示了如何将分支A中的修改合并到分支B. 1.在分支B的本地副本目录中选择"合并(Merge)". 2.选择“合并一个版本范围(Merge a range of revis ...

  7. form data和request payload的区别

    HTML <form> 标签的 enctype 属性 在下面的例子中,表单数据会在未编码的情况下进行发送: <form action="form_action.asp&qu ...

  8. nginx-(/etc/init.d/nginx)启动脚本

    #!/bin/bash #nx Startup script for the Nginx HTTP Server # it is v. version. # chkconfig: - # descri ...

  9. 安卓学习之--UI控件用法 单选 按钮 下拉框

    1.单选 .RadioGroup 可将各自不同的RadioButton ,设限于同一个Radio 按钮组,同一个RadioGroup 组里的按钮,只能做出单一选择(单选题). <RadioGro ...

  10. 测试函数用Return 返回值和用函数名返回值的区别

    '*************************************************************************'**模 块 名:工程1 - Form1'**说   ...