程序员的自我修养: 我写代码这五年
- 【程序熊的自我修养】我写代码这五年。谨以此文,纪念我过去五年的技术之路,感谢陪伴我这五年的家人,感谢所有陪我一起打拼过的战友,感谢所有阅读过我文章的陌生人。
程序员的自我修养:我写代码这五年
五年里最忙的时候需要兼顾两个公司的团队,还有论文和自己待出版的书,最多的时候直接负责过二十多人的技术团队。不过从写博客以后虽然也是断断续续,但总算坚持了下来。一年多里写了两百多篇博文,各渠道总阅读量超两百万(估算)。我的成绩不值一提,我唯一觉得让我骄傲的是我比五年前的自己会更加成熟与稳健,做成了一些我希望自己去做的事情。感谢批判我的人让我及时发现自己的不足与失误,校准方向;感谢支持我的人给我不断前行的动力。五年里陪着爱人走过几个国家,看过一些风景,
在对待所谓成功与经验的态度上,我是蛮欣赏勃学的态度,认清自己的同时不去盲目崇拜,不以物喜,不以己悲,。笔者在回顾自我的道路时,我觉得最大的特点会是可行的,当然也是因为我尚在起点左近吧。我没有天赋过人,当年七个月早产出生,差一点就不能跟这个世界说你好。从小略显愚笨,弱于常人,就像笔者对于数学心有畏惧,这么些年一直没学好算法结构与机器学习。笔者也没有过人的毅力与执着的态度,到现在也没能真正的好好锻炼过,也没能如预期般学完一个课程或者看完一本书。更多的时候我是想着怎么跟自己妥协,寻找到真正能够完成的,精神与肉体上都能接受的方案。
贯穿笔者整个系列的方法论,概括而来就是王阳明的知行合一,心学博大精深,我也是以自己的方式与实践尝试去理解。知行合一最简单粗暴的理解就是认知与实践的相统一,不过借用韩寒的一句话,读过很多道理,却仍然过不好这一生。现代社会我们每天或多或少的都会被灌入一些鸡汤,但是那些明明很有道理的道理却是如此的难于贯彻。我自身的自制力本就不强,因此更多的思考会立足于可行性,不过做太多超乎我执行力之外的规划,梦想总是要有的,但尽可能的让它能够实现。
高屋建瓴的技术知识体系
在物理学科中放射性元素有所谓半衰期的概念,即某种特定物质的浓度经过某种反应降低到剩下初始时一半所消耗的时间。
Stay Hungry,Avoid Foolish
睁眼看世界。心有多大,世界就有多大。井底之蛙
笔者不喜欢别人称呼大牛或者类似的头衔,在我看到的世界里不过是刚刚上路的初学者,尚有山高水长,千难万险,若现在就称大牛,真是汗颜。
知识的半衰期
从系统化学习到碎片化学习、从阶段性学习到终身学习、从专业学习到通才学习。孔子曰,三人行,必有我师焉。技术中所谓的术道之分,本文提及的《人类简史》与《未来简史》,都是文学家编著的,但是其中提及的人类社会的衍化都是基于人工智能、大数据、云计算这些很技术的名词。
术业有专攻,专才能有,通才难得。
从指向性学习到跨界式学习从小学到大学的学习模式,所有的课程都是提前设置和规划好的,是一种序列式的指向性学习。而大学毕业以后,其实就进入了自我教育的阶段,因为工作的原因,我们不得不进行跳跃式学习。这个时候学习知识就不能太具有指向性,也就是一个知识只用来解决一个问题,而是要对知识进行跨界的迁移。回顾下我们的程序员的知识, 我是在大学里开始学习计算机知识的, 学习的操作系统原理, 算法和数据结构等这类知识的半衰期也是比较长的, 也是我们后面的跨界式学习的基础, 所以在大学里学习一定要打好基础, 可惜现今的大学已经变成了简单的培训机构 . 毕业后我的第一份工作是系统集成工作,打交道的是网络,交换机,操作系统,也是在那时的工作中结识了 Linux,从此就爱上了 Linux,不过大学专业学的计算数学,个人感觉还是搞软件更有未来,所以在那个网络很好赚钱的 2000 年我开始学习软件开发,用过 C++、Powerbuilder,看过微软推出的 C# 最顺眼,而且当时大名鼎鼎的米格尔正在搞开源项目 Mono,我就跟着米格尔开始进入 .NET 开发,开发的大部分 .NET 应用都跑在 Windows 上,也有一部分跑在 Linux 上,到了今天,微软也爱上了 Linux,今后我开发的 .NET 应用都会跑在 Linux 上,这个过程中我在 .NET 社区推广 Mono,现在推广 .NET core,逐渐的从非主流变成主流。
从整体化学习到碎片化学习所谓碎片化,是一个相对概念。比如你敢一天不刷朋友圈,第二天上班同事聊天,就能一句让你插不上话,一天不看手机就会感觉整个世界都变了。另外碎片化除了占用学习时间短以外,还要能保证学习的随时随地,比如蹲厕所、等公交、开车时都可以进行学习,也就是可以满足多场景。知识的更新迭代实在是太快了,整体化学习越来越不适应市场竞争,碎片化学习的时代已经到来。所以,未来基于互联网的语音分享和视频直播,会慢慢成为人们主要的学习方式。大学里还有机会去系统的学习,工作了大部分时间被加班占据,我们的时间已经变成了碎片,每天能够抽出 30 分钟出来学习,研究新技术,日积月累,几年后就和抽不出时间的人拉开差距,这就可以很好的解释很多人工作时间越长越没有竞争力了,这么多年的时间里都没有进行学习,知识的半衰期又是这么短,经常在社区听到有人在抱怨微软的技术更新太快,“vs2017 出来了,我还在用 vs2005” 等等的论调,问题出在自身,而不反思。希望大家能够抽些时间学习最新的 .NET Core,Linux 的知识。
从阶段性学习到终身式学习时间会消磨一切的价值,随着时代的演进,技术被再次突破,审美被迭代,甚至使用的场景也发生了根本性的变化,一劳永逸的学习方式一去不复返了。我们这代人,注定一生花在学习上的时间比真正花在实践上的时间多。因为终身式学习来了。现在已经进入到云计算时代,软件架构也要从单体过渡到微服务,.NET Core 就是为了适应微服务而对 .NET 进行重构,以前你构建软件的那些知识已经衰减了,需要补充新知识了,我通过运营公众号,每天推送几篇文章,很多文章都是新知识,这也是一个学习的过程,我希望通过公众号让更多的人和我一样终身学习,目前公众号有 25000 粉丝,每天文章阅读量却只有 8000,很多人关注了,并没有看过的文章,其实我推送的每篇文章都是有所考虑的,但是公众号是个单向的交流,里面的交流基本没有,我创建了一个付费的小密圈想把真正一起学习的同伴识别出来,可以一起交流。
记忆宫殿:有效地碎片化学习
Learn Everywhere, Anytime.
在如今这个知识爆炸的时代,限制我们学习的不再是知识的来源,而是我们自身的学习能力与学习方式。不可否认不同人的能力是不一致的,我们也不能奢望自己能够勤奋到囊萤映雪、凿壁偷光。不仅是大部分人的努力程度之低尚谈不上比拼天赋,而且我们几乎很少能达到自己的既定目标。对于很多工作的人而言,可能只能利用晚上或者周末时间进行学习,即使制定了详细的计划往往也会因为家庭或工作的突发事件而无疾而终。这种现实的无奈是很难以人为意志为转移,因此在无法像学校那时的完全的系统化的学习。在初级阶段,我们势必是要进行碎片化学习的,这总比不学习来得好。笔者非常支持认可碎片化学习的思想,但是否定在没有知识体系的情况下盲目的碎片化学习。特别是对于尚未建立基础知识体系与认知能力的同学,如果突发性地吸收过多的知识,反而会摧毁自己的认知能力。就好像传说中的吸星大法,乱吸的后果就是体内真气斑驳不堪,最终走火入魔,爆体而亡。另外,。在没有知识体系的情况下,学习的知识都是相互独立,难以互相借鉴,举一反三,阅读也不过是春风拂面,一掠而过,不留痕迹,知识也就难以真正的沉淀下来。
从笔者自己的经历而言,最初的阅读,这个阶段非常的痛苦。在碎片化学习的过程中,我们不仅要感受到每日阅读、学习的东西,还要能够感受这些知识真正的聚沙成塔、集腋成裘,成为了你的知识体系中不可分割的一部分。
知我不知,穿越未来
I Know What I Dont Know
梭罗在《瓦尔登湖》中写道:知道自己知道什么,也知道自己不知道什么,这就是真正的知识。知我所知是对于自己能力的正确认识,知我所不知则能为自己未来的路明确些方向。
我们不能让已有的知识,已有的技术,已有的成就,已有的地位成为阻碍。
知识在它该在的地方
Code Complete》里面强调的 “programming into a language rather than programming in a language” 原则,即我们应该把编程的通用原则和规范应用到具体编程语言中,而不是受某门编程语言的限制而忽略了编程的通用原则。
笔记与博客:知识的积淀
阳明先生朝思夕计,终于领悟了格物致知,知行合一的道理,也是他面对这个世界的方法论,从此为天地立心,为生民立命,为往圣继绝学,为万世开太平。前文所讲我们竭力地去为自己开拓
生命存在的痕迹
笔者最初做笔记的时候,很多朋友会质疑,记录的笔记真的会去看吗?是不是记录之后就能记住了?答案自然是否定的,笔者一直以来鼓励自己做笔记的动力并不是让自己不会遗忘,而是希望在下一次需要的时候能够以最快的速度学习让自己回忆起之前的东西。笔者发现身边很多人的学习能力并不弱,但是技术能力难以进步突破的问题却是在于永远都在重复学习,譬如笔者团队中秉持岗位轮换的原则,可能做几个月的服务端再轮换做一些简单的前端,但是每次都需要重新学习,看不出什么进步。
罗曼罗兰说过,多数人二十或三十多岁已经死了,他们变成自己的影子,不断重复以前的自己。
打造个人品牌
在带领团队的时候我一直会思考,应该如何激励他人,常用的方式包括责任心、对于技术的追求以及物质的刺激。物质的刺激是笔者最不想用的,人的欲望是无穷的,物质的刺激作为额外的辅助,但是一直作为主要的刺激手段不免终有黔驴技穷的一天。回到本部分的主题,笔者在这几年里一直建议敦促身边的朋友们尝试着写写文章,不过能坚持下来的寥寥,更多的则是三分钟热度。估计很多阅读本文的读者也逃脱不了这个问题,因为繁忙的工作、因为总是觉得尚未准备好,一而再再而三的推迟文章的计划。最终在那一天蓦然回首,当初的梦想终归是梦想。
因此在这里,笔者想特别陈述下文章与博客对于个人发展的重要价值。
我们很多人想着去赚钱,但其实应该让自己先值钱,才能去赚钱。
时刻阅读
Read Everywhere, Learn Anytime.
按需阅读
Read It When You Need It
辩证式阅读
尽信书,则不如无书,不过这并不是不去读书的理由。
王安石天命不足畏, 祖宗不足法, 人言不足恤。笔者看完今年的时间的朋友跨年演讲之后,特地看了下评论中与知乎上反驳的内容,从不同的视角、不同的立场进行考虑,实在是有趣。
每日阅读清单
认识你自己
对于所谓成功者或是所谓天才,爱因斯坦说过,天才是百分之一的灵感,百分之九十九的汗水;但那 1% 的灵感是最重要的,甚至比那 99% 的汗水都要重要。
笔者并不敢随便置喙这个千古谜题,不过从笔者个人的成长经历而言,既然机器都可以通过大量的数据而不是算法的革新来提升自己的认知能力,那么人类在大量的训练、见过了很多的风景之后缘何不会得到提升呢?天地不仁,万物刍狗,在这样一个崇尚个人自由的年代,笔者相信只要奋斗就能提升自己成才的概率。苏格拉底有句名言叫认识你自己,而实际上以我们现有的认知能力很难去勾画出未来的自己,就好像你永远不知道未来的自己有多强大。入无法家拂士,出无敌国外患者,国恒亡,人也是这样,安逸的环境会掘下梦想的坟墓,本部分也是希望先描述笔者对于未来的担忧,来思考应该给予自己未来怎样的定位,才不会被这个时代所抛弃。
对于笔者而言,我认识到自己的天赋普通,也没有傲人的背景,接受的也是一般的教育与平凡的经历。笔者不会奢求完成某些小目标,但是既然外在的力量能够通过细致的分析去发现你自己,那么我们是否能通过换位的分析来更加地了解自己呢?
未来幸存者
2016 年的年末,笔者莫名有些恐慌的情绪,一部分来自于学业与工作的压力,另一部分却是来自于对于未来的未知的恐惧。笔者目前所在的公司是负责政府相关的一些技术服务,这个行业很明显感觉整体的技术水平与外部相差很多,就好像井底之蛙,被厚厚的壁垒与外部的江河隔开,仅看到那一方小小的天地。年会上做年度总结的时候,看着下面坐着的,跟了我三四年的那些年轻的面孔,处于对他们的责任感我很担心哪一天这个壁垒被打破之后,他们会陷入所谓的中年危机。另一方面,笔者自己在南大就读的也是人工智能与数据挖掘相关,虽然是个门外汉但看着大潮浩荡而来,许多曾经的巅峰被征服,笔者不免担心会不会未来就是巨头的天下?。这一轮人工智能深度学习的浪潮可能难再现当年互联网浪潮下千帆竞渡的盛景,也就意味着不会有那么多面向我们这些一无所有的年轻人的机会。后来听了吴恩达等大牛的演讲认识到端到端的学习尚未主导,心中不免送了一口气,又杞人忧天了一回。未来简史中分析二十一世纪会存在三种人:无用的人、没有自主的人与神人。工业革命是发挥人的生产力,而智能革命则是替代人,虽然笔者认为现阶段的人工智能的目标是辅助人工智能,但是依然会在未来取代很多行业的职位,并且这些辅助性的人工智能会比你自己更了解自己,也更能影响你自己。如果有一天我们真的成为了电影里每日衣食无忧,不用烦恼的神人,那么和过去城隍庙里被人供奉,每日享受些香火的泥塑菩萨又有什么区别?正如赫拉利所说,笔者思考这些不是希冀去预测未来,而是想把自己从过去解放出来,敢于去想象不同的命运。不求流芳百世,不愿遗臭万年,只希望生如夏花,总有那么绽放的岁月。笔者希望自己能做有价值的人,对家人、对朋友、对社会有价值的人;活在未来,不是不死,而是不会被这个时代所抛弃。
独立而可变的意识
我是程序员
程序员的自我革命
很浮躁,很多关于技术的讨论不再关注技术本身,而是要么互相吹捧,要么人身攻击。我个人很不喜欢所谓的师徒这种关系。
程序员的使命就是自我革命
所谓更牛,就是换个罪受,我们一生都在处于不断地向上,在资讯爆炸外部资源极大丰富的年代,更大的瓶颈还是在我们自己。
他山之石,求同存异
君子慎独, 不欺暗室, 何况于网络乎?现在网络上的戾气越来越大了
道不同,不相为谋。
相看两不厌,唯有敬亭山。
渡尽劫波兄弟在,相逢一笑泯恩仇。
不想当将军的士兵不是好士兵
技术与管理二者互不冲突,笔者不太提倡单纯的炫技,我们对于技术的追求本质上还是为了构建更好的产品,而伟大的产品需要伟大的团队作为支撑,当年求伯君单枪匹马睥睨天下的时代已是明日黄花。笔者经常会思考,我的价值在哪里?实际上,而是所谓格局。格局是一个很抽象的词汇,有的人写代码的时候看到的是眼前的代码,有的人看到的是一个模块,有的人看到的是一个产品,有的人则看到的是在使用着产品的用户场景。
软件架构(software architecture )是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。传统软件架构描述的对象是直接构成系统的抽象组件,侧重于系统的抽象、拆分、组织方式等。
定位在未来
我至今为止没有在大公司实习或者工作过
君子有责,当仁不让
老人常说,吃亏是福。
火影里鸣人穷其一生是为了获得认同,虽然有很多的羁绊,但是一生是有意义的。德国社会学家马克斯韦伯说过,人是悬挂在自己编织的意义之网上的动物。
在西欧的一些高福利国家,譬如德国,很多穷人选择主动失业以获取高福利。我们工作的目标不仅仅是为了获取
德国的穷人失去了自制力,变得不守时,变得懒惰与放纵。
我们体面着装不是炫耀的工具,而是约束自己的工具。我们以为追求生活的美好而自律,因为自律而达成体面。
路上
我在路上,仰望星空。
2013 年 10 月我拿到了南大的保研资格,2014 年 11 月我开始了第一次创业,约球吧。不出三月失败而终,幸好有朋友接手,开始了 LiveForest 与南京运之林。一年创业之后,开始尝试转型,这个阶段参与过在线婚庆的创业,参与了 3D 打印行业的创业。自己本身在南大参与的也是机器学习相关。就像罗振宇在跨年演讲中提及的,狗真的会是最后的胜利者吗?
如果时光倒流
浪潮之间
悲悲戚戚,如丧考妣
致谢
本文最后,笔者还是想对于所有阅读过我的文章的朋友说声谢谢,你们的支持是我前行的动力,希望在未来的岁月里我能够继续完善我的知识体系中的内容,也希望能够帮助到所有花时间阅读我文章的人。未来的世界是时间的战场,愿意花时间阅读的朋友本身也是一种付出。