手机版 | 网站导航
首页 > 职场励志 > 数控编程 编程培训班 > 【编程猫】我的编程之路

【编程猫】我的编程之路

职场励志 | 2015-04-29 | 阅读:
【www.gxlzold.com--职场励志】


题图:from Pinterest


上次 MacTalk 的池老师写了一篇「编程之路」{阅读原文},让我也不仅回忆了一下我的「编程之路」。细想起来,应该是非典型的,但是可能也不乏同路人。写出来,当留给自己吧。


本科:理论知识和汇编语言


我接触编程其实很晚,是大学的时候。那时候其实喜欢数学,少年班可以自由选专业,当时差点选了数学,然而不太喜欢寝室另一个铁定学数学的妹子,我又是那种不喜欢一个人有多远就躲多远的那种,所以干脆选了计算机。加上当时班上选计算机的女生就我一个,另几个男生都是特别投缘的几个哥们儿,所以很开心地就去学计算机了。另外那时候校园 BBS 正火,我也是玩的不亦乐乎,觉得学计算机至少上网的机会多很多(当时是那么觉得的)。所以学计算机这事就这么愉快地决定了。


等到真的开始上专业课,发现自己其实理论很强、动手却比较弱。所有专业课里面的理论课,像数据结构、算法、数理逻辑、编译原理、体系结构什么的几乎都是满分。但是每门课的大作业和要动手搭系统的部分,都有点无从下手,做的也慢,也不感兴趣。好在当时人缘好,上机作业总有人 “帮忙”,加上当时大学对动手能力要求也并不算很高(现在想起来)。所以也是混成个假学霸的样子。


本科的毕业设计是要进实验室做东西的。当时稀里糊涂怎么就进了一个体系结构的实验室,做嵌入式系统的指令集设计。需要写一些汇编,跑一些实验。但是并不需要做大的软件工程。所以当时感觉自己还是理论远远高于实践(总想起天龙八部里面的王语嫣那种人,说啥都知道点,就是自己做不出来。)


其实本科阶段,真的就一个字:混。


硕士阶段:各种底层系统、编译器、函数式语言


科大申请出国就像当时很多学校的同学没事考个四六级证书一样,每个人都不用太去想,跟着大环境就开始折腾托福、GRE。当时你要问我为什么出国,不过是因为觉得周围小伙伴都申请的热火朝天,自己也不能落后。


稀里糊涂的,居然也就被 Rice 录取了。按博士入学的。但是美国很多研究生院在拿博士学位前是需要拿个硕士学位的。所以这里会有一个硕士阶段。


我的导师是做程序语言设计的,也就意味着成天和编译器、解释器、语法器打交道。而且他的方向是函数式语言(Functional Programming Language)。主要用的是 OCaml。


美国硕士阶段需要重修几乎所有的专业课。而且对动手能力的要求极高。


所以硕士那三年,我差点没死过去。


理论部分完全没有问题。而所有的大作业、大项目,一开始做起来,可能要花别人两三倍的时间。加上本来课业就重,还有科研项目要做。因为拿的全额奖学金,还有很大的心理压力。总之当时的感觉每一天都在 Push 自己的极限。好在那时候是真的年轻身体好,一天平均睡四五个小时也能熬的过来。几乎没有任何的课余时间,寝室楼、系楼两点一线。大学那种轻松的状态一去不复返。感觉每一天,都是当三天来用的。


好在也活过来了,不过这三年是我真的 “会” 写程序的开始。可以自己一个人从头到尾搭各种简单的系统:网络相关的、算法相关的、分布式相关的……尤其是编译器相关的。但是大部分做的还是比较偏底层的。


实习:Matlab、Controller、Simulator、C++


读硕士阶段的暑假会去大公司做实习生。当时因为在 Houston,所以两次实习去了同一家石油公司:Schlumberger。做的项目是给井底的机器人写控制算法。因为硬件很贵,出不得错,所以每个程序会在 Matlab 上用 Simulator 先做各种测试。就是那个时候把 Matlab 用的纯熟,也了解了一些大公司的软件工程和开发流程。对一些软硬件协同设计也有了更进一步的了解。


博士阶段:数据分析、数据建模、Python、C++


我读硕士阶段的导师后来因为个人原因离开了 Rice。所以我跟了另一个做 BioInfomatics 的导师继续我的博士阶段。他主要做的是 DNA Sequenece 和 蛋白质网络相关的研究。因此我的课业很大程序上就是大数据建模和数据分析。也会用到一定的机器学习,但是主要还是无监督算法。因为数据处理需要采集和预处理,所以当时每天要写很多的 Python 程序。而实际的数据建模和分析因为数据量太大,一般语言性能不够好,所以使用的 C++。


入职初期:Web Server、Search Backend、Ruby、Java


真正开始工作后,我的文章里提的比较多了,做过搜索和支付,主要用 Ruby 和 Java。


其实最开始的时候心里很虚,因为觉得自己碰过的东西其实和互联网没什么关系,却突然进了互联网的领域。总感觉自己什么都不会。开始的时候也确实是什么都不会。所以那个时候每天都压力都很大,每天也加班,因为和别人差距太大了。不过可能毕竟很多计算机技术相关的知识是相通的,慢慢地似乎发现很多以前了解的知识和学到的技巧,还是可以应用到解决问题中的。


说着轻松,其实也是经历了很长时间很有挫败感的阶段,才慢慢好起来。


所以呢?


有人问过我:“你觉得学 XXX 有没有用?” 这叫我怎么说?我自己就学了一堆 “没用” 的东西啊。我不会的东西很多。我会、但是用不上的东西也很多。


花了这么多年,才认识到这一点。最大的收获,不过是现在可以坦然面对工作上很多不会的东西。很多用不上的东西,了解个大概也就放下了,因为精力实在有限。工作真的需要的,那就去学呗。毕竟,我会的,有用的东西并不多。




经常后台有留言让推荐好的技术公众号,我订阅的不多,所以又去在朋友圈收集了一下,下面一些,大家可以自行订阅评估下。放在前面的,是我也觉得不错的,后面的,是朋友推荐的。喜欢的话,以后再荐。

    技术人的博客一:的哥哥们——科技互联网类公众号推荐

    技术人的博客二:技术圈最值得关注的大牛自媒体推荐

    InfoQ

    小道消息

    MacTalk

    二爷鉴书

    StuQ

    jnby1978

    老王卖瓜

    程序人生

    余晟以为

    待字闺中

    神秘的程序员们

    歪理邪说

    keso怎么看

    高可用架构

    中生代技术

    架构师之路

    移动开发前线

    iOS 开发

    码工猴哥

    硅谷周边

    程序员的那些事

    GrowingIO

    ImportNew

    RedHadoop顶级程序员

    Python开发者

    CPP开发者

    机器之心

    Hadoop123

    测试架构师

    美团点评技术团队(meituantech)



    本文来源:http://www.gxlzold.com/zhichanglizhi/17054/