成长路上,刀剑如梦



成长路上,刀剑如梦

你狠狠的敲下键盘的回车键,终于看见程序按预期输出了正确结果,长长吐了一口气。点上一支烟,环顾四周,独自一人,又是一个夜深人静的晚上。在一种搞定 bug 的满足和空旷寂寥的忧伤中,你不禁迷惘。记不清这是你修复的第多少个 bug 了,甚至记不清这是你参与开发和维护的第几个系统了。就像一个剑客在这个江湖上行走多年,已记不清死在自己剑下人有多少,拔剑收剑,有人倒下,你继续行走,如今「杀人术」已成。


对一个程序员何谓「杀人术」?你选择了一门语言开始学习编程,像一个刚入江湖的人选了学剑或刀,也可能是飞刀。再弄了几本江湖宝典,假想了一个项目开始练习,熟悉基本的使用套路。然后走入江湖,拜入门派,腥风血雨,数年后剑鸣空灵、刀啸云天,飞刀无影,「杀人术」终成。这就是一个程序员的成长之路,你选了门武器,学了基本招式,然后进入江湖不停的在厮杀中成长。终于你能搞定各种各样的系统问题,了解不同系统的设计模式。每过数月或一年半载,你总发现过去代码写的不好,再重构上一遍,改进你的招式。数年后,终成江湖高手,汝今剑术已成,然拔剑四顾,却心下茫然。


一个程序员修成「杀人术」大概需要多久?按照一万小时理论,如果你在某一领域每天持续学习和实践十小时,最快也要三年。但三年是没算各种可能的中断的(生病、假期等等),所以但绝大部份人可能需要五年。五年成术已算理想,实际上我自身用了更长的时间,走了更多些弯路。从 Basic 程序入门,后来 VB 再到 Delphi 然后 C 最后 Java,Java 也经历了几代变迁,但还算一脉相承。技术的发展,时代的变迁会让「杀人术」也在不停的演化,刚觉剑术小成,却发现已进入枪炮时代,不免茫然。


升维学习

在我修行成术的过程中出现了好多新技术,当时我总想忙完这阵就抽空去学习了解下。但一过几年一直没能抽出空去看,如今再去看时发现好些当年的新技术已不需再看了。五年成术是立足于一点,成立身之本,而下一阶段不该是寻找更多的点,而是由点及线、由线成网、由网化形。围绕一个点去划线,由一组线结成网,最后由网化成形,化形表达一种更高级的知识和技能运用形态,比一堆离散的知识技能点有价值的多。很多修真小说中一些生物和同境界的人相比要弱,直到这些生物完成了化形为人的升级,就会变的比同境界的人更强。小说里的化形有个隐含意思就是让生物具备了人的智慧,可以更智慧的运用它们的能力,它们的实力就变得比人更强大(原因是身体属性更强)。我这里借用了这个类似的隐喻,表达更智慧的运用知识技能。


《三体》这本小说近些年大热,所以大家可能听说过这里面发明的一个词「降维攻击」,在互联网圈这个词用的很多。而关于学习的由点及线、由线成网、由网化形,其实是一种「升维学习」之道。这个过程几乎没有终点,是一个持续学习不断完善的过程,最终结多大的网,成什么样的形,全看个人修为。一条线至少要两个点才能画出,那么第二个点的选择就要看能不能和第一个点连的起来了,而这比在一个维度上去预测和乱踩点要有效的多。


除了在修真小说中有隐隐的比喻,其实这套道理在金庸设计的武学体系中更觉明显。要不就以大家最熟悉的《射雕》三部曲为例,我们来看下。郭靖一开始师从江南七怪,后来又跟全真七子中的几位学过功夫。这在功夫里就是两个点,但没看出这两个点有何联系,最后郭靖江湖成名,终成一代高手靠的是什么?降龙十八掌。为什么有十八掌这么多,从小说里的描述表达了一个体系的意思,一个体系结网成形,最后的形态命名为降龙十八掌。其实郭靖还学了一个另一个更有体系,形态更牛x的武功《九阴真经》。除了郭靖《九阴真经》很多人看过学过,有高手如:黄药师、王重阳等,也有一般人如:梅超风。高手们本身有自身的武功体系和形态,所以看了《九阴真经》也仅仅是从中领悟,融入自己的体系中甚至因此创造出新的武功形态。而梅超风之流则仅仅是学点其中招式(九阴白骨爪),和之前自身所学其实没有太多关联,武功境界终有限。



Read full article from 成长路上,刀剑如梦


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts