我的编程不归路

编程已经成为了我生命中的一部分

我很享受编程或者阅读别人代码过程中带来的快乐。很多人可能会认为“学”编程学到某个阶段就可以毫不费力得阅读所有的代码。但是事实是要真的读懂,尤其是读懂一个大型项目的代码,依然要付出一定的努力。

编程是一段需要不断磨练的不归路

每学一个新的技能,我们都像是蹒跚学步的孩子。最开始的我们总是笨拙的,不过当我们看到一个专家时只看到的是他成功的样子,却忘记了最初他可能和我们一样的笨拙。

今天就来回顾一下我编程道路上蹒跚学步的样子,或许对你有一点启发。

无知的大学

在这里讲大学时候的糗事,不知道会不会被宿舍的哥们暴打。我保证,这绝对是真实的故事。

当年我们进大学的时候,电脑还是个稀罕的奢侈品

当时我啥都不懂,跟着宿舍哥们跑到了中关村攒了人生中第一台电脑。攒机的小哥溜得不要不要的,分分钟就把电脑系统装好。那人尽皆知的草原界面头一次出现在我的眼前。就这么屁颠屁颠抱着电脑回到了宿舍。没错,是抱,还是两个人抱。一个人抱机箱,一个人抱显示器,当时的电脑就是这么大。

买的时候是说为了学习,可是买回来后最大的功效是游戏。此处省略三万八千字。

还是回到编程的话题上来。

你很难想象当时我们作为北邮的学生,编出的第一个程序尽然是这样的。

这件事我记得特别清楚,因为这时我们宿舍老二在我机器上打出的第一个程序。然后还特意让我们老大亲自运行了一把他的大作。

PS:老二现在在北交是(副?)教授

迷茫的工作

毕业之后就走上了编程的道路,正式成为了一名程序员。

虽然我很幸运,毕业就去了一家传说中非常牛逼的企业,但是这家公司的几年时间中我并没有获得一些实质性的成长。

当时我们的项目主要做的是集成性的工作,也就是底层核心的代码由设备商提供,我们需要做的就是调用各种不同的接口,来完成各种逻辑,最后实现用户的需求。

所以在这个过程中,最重要的就是查看各种手册,确认是否能够实现需求,并且验证功能。虽然这也是一个技术活,但是我却觉得不好玩。因为我们根本看不到底层的逻辑是如何实现的,这样对自己的技术能力的成长并没有太大的好处。一旦别人的底层逻辑变化了,接口变化了,我们也要跟着变。

也正是基于这样的原因,我尝试选择新的方向。

执着的开源

进入开源世界是巧合也不是巧合。

早在学校的时候就听说过开源,如果没有记错当年还在学校里见过Richard Stallman来做过讲座。当时觉得一个老大爷,拿着个光盘放头顶还挺神神叨叨的。后来才知道他是开源界的精神领袖。

自己一直都对开源软件有着特别的向往,觉得一群牛人在一起尽然能整出这么大的一个动静,如果有机会自己也一定要参与一下。

很幸运,当年IBM时隔好些年之后又在中国成立开源团队,我就这么走上了开源软件的贼船。

PS:当我离开后不久,这个团队尽然解散了,不禁唏嘘。

故事扯远了,还是说道我编程的经历。在IBM这段日子,是我编程能力大幅提高的时光。当然我要感谢公司,感谢团队,感谢老板能让我参与这样有意义的项目。

在这个过程中,我总结出对一个编程人员成长最为有意义的事情是

独立分析

刚进入开源世界,我确实有点不适应。因为开源世界的特点就是没有文档。之前的工作基本都是分工明确的,我们按照手册和接口说明调用即可。但是在开源软件中,出了代码只有代码。想找个人问,还不一定有人能回答。大神们都在网络上,就算是不排斥你的问题,也得有时间理你。

没办法,只好硬着头皮往下啃。啃一天没结果,就啃两天。两天不行就三天。刚开始的时候确实很懵,就跟老师说的一样。没有过做成的经验,就不知道究竟能不能成。我想很多学了一点编程,开始会写一点代码的,在看到大型项目的时候多少会有点木。因为项目太大,不知道从哪里开始入手。

一开始我也是这样的。有的文件动辄上千行,连头都找不到。后来我慢慢形成了自己的一套方法。今天就先讲一个。这个办法其实也很土,就是拆分。看到庞大的函数,根本分不清这个函数什么功能的时候,我就把函数中被调用的函数列出,先去理解被调用的函数。如果被调用的函数还是不懂,就再进一层去看。这样就形成了一个递归。总会遇到最基本的,能够理解的函数或者定义,然后再反推。这个方法确实土,不过对我来说很管用。在这个过程中,我对代码,对整个项目的理解变得更加深入。

就这么类似于王强一日十字的速度,把整个模块啃了下来。最后啃完后那畅快淋漓,豁然开朗,并不亚于看一本优美小说。

这里我再补充一点,大家很可能会觉得在这段日子中每天都是痛苦的。确实,在没有理清所有细节时心里总会有牵挂。但是我想用陶渊明的一句话来形容可能更为贴切。

好读书,不求甚解;每有会意,便欣然忘食。

虽然这个过程中都处于似懂非懂的状态,但每天都会多懂那么一点点。这种感觉陶渊明先生形容的非常生动。

从此以后我就好像进入了另一个境界。

不知道是我穿透了代码,还是代码穿透了我

回头来看

大致这么回顾,我的编程经历基本上经历了这么三个阶段

  • 几乎是一无所知
  • 一定的使用能力
  • 无师的自学能力

可以看到,大家可能和我一样,在初期对编程是一无所知的。能写出的代码就像那个“傻”一样的醒目。在这里,需要的最少必要知识是一定的语法和简单的运行操作。

而经过一定的学习,掌握了基本的技能,我们就可以胜任日常的工作了。就像文中说的,这里的最少必要知识是对接口文档的理解和运用。

然而要再往下继续走一层则需要付出更多时间和耐心。在这里就是不断的实践、总结、再实践。

记得一位钢琴老师曾经说过,钢琴其实没有大家想象这么难,钢琴的入门相对于其它的乐器可能要更简单一些。但是真的要练好刚琴,要展现钢琴自身的魅力则需要花费更多的时间和耐心。

这点和学习编程我觉得是一模一样的。要成为大师不容易,要弹一首简单的生日快乐并没有想象的那么难。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,442评论 25 707
  • //Clojure入门教程: Clojure – Functional Programming for the J...
    葡萄喃喃呓语阅读 3,616评论 0 7
  • 【辛波斯卡】 我们称它为一粒沙, 但它既不自称为粒,也不自称为沙。 没有名字,它照样过得很好,不管是一般的,独特的...
    溜大姑娘阅读 247评论 1 2
  • 【晚修】靠自己 人生路上遇风雨, 才发现, 路必须自己走, 苦必须自己受; 生活路上有苦有甜, 才发现, 伤必须自...
    千山雪莲阅读 416评论 0 0
  • 这几天被王宝强离婚新闻弄的心里颇不平静,天天有新爆料,忍不住去关注,一开始还能持中立态度,现在随着新爆料,越来越气...
    35f919867dcf阅读 246评论 0 1