1.
不知道我是不是真的老了,最近总是喜欢回忆。
我在想,当初我是怎么喜欢上编程,并且希望做一个职业程序员的呢?确实,当初计算机是热门专业,比较容易找到工作,薪资也不错,不过我觉得这只是间接动机——就像ML,没有人在ML的时候会想着:“用力呀,努力啊,为了我的Baby……”。虽然趋利是再正常不过的事儿,可是直接驱动我们去做一件事的却是另一个东西,是那个能点燃激情,让我们眼前一亮,就算再累再苦、再难再险也毫不在乎,让我们能为了自己的天才和创造而感动得内牛满面的东西,这个东西就是——艺术。(请别扔鸡蛋,先)我这可不是随便拿个无厘头的词儿糊弄您,这里的艺术是有明确定义的:艺术是富于变化的有序。
人类作为一个自组织系统,有着想要把无序转化为有序的强烈本能。我们几乎无法忍受无序的东西,想想你听着小日本不停地叽哩哇啦的时候是什么感觉?有序的东西让我们感到舒服,不过,我们似乎更加贪心一点——只有富于变化的有序才能让我们有愉悦、兴奋、满足的感觉。用圆规画出来的圆圈是有序的,但是我们一定不会对它有什么感觉;苹果,特别是包含着画家独特的视角和理解的苹果,才是艺术。马赛克是有序的,但它不是艺术;人本身,特别是美女,是艺术,所以当马赛克挡在美女身前的时候我们会感到如此的郁闷。
许多年来,我一直是一个CRUD(呃,我是说,MIS)程序员,每天在客户和老板的打骂声中赶工。激情,还有那单纯的快乐,似乎早就和初恋情人一起,遥远得好像是上辈子的事情了。也许只有在午夜梦回之时,才会在黑暗中猛然睁圆了双眼,向着狂跳着的心问道:“你还在那里么?”
也许她还在那里,可是我们的心却已经麻木得感觉不到她了。或者,当我们把她它换算成元角分,换算成房子和车子,当我们除了项目的成功之外,对任何其它的东西都不再感兴趣的时候,我们就已经不配再得到她了。
2.
对于坊间流传的算法无用论,我是赞同的。毕竟,我做了这么多年的MIS程序员,在工作中需要自己实现一个复杂算法的情形一次也没有过。对于一个MIS程序员来说,快速学习新技术/框架的能力,理解技术/框架的精髓并且能够全面而正确地对其进行评估的能力,根据项目的实际需求选取合理的技术/框架形成完整的解决方案的能力,判断出项目成功的边界条件并且作出正确决策的能力,理解、分析业务的能力……它们的重要性和优先级统统排在掌握一些可能一辈子也用不上的算法的前面。就算我们偶尔需要排个序,或者弄个链表、字典什么的,会发现基础类库里面早就有现成的了;如果需要绘制复杂的图表,我们会去寻找可用的图表/报表控件,即使现成的控件无法满足我们的需要,我们也不大可能有时间和精力去自己实现一个,倒不如想办法说服客户放弃或换个需求更靠谱一些。
所以,如果我是一个“职业顾问”,我不会建议你去学习算法。但是,作为一个人,我认为,一个人,永远不应该把自己局限为一个MIS程序员,也不应该局限为一个程序员,不应该局限为一个员、赚钱机器、或者垃圾制造者……一个人,无论他的生命还剩下多少时间,他的目标应该只有一个,那就是不断发掘自己将无序转化为有序的潜力,转化为更加富于变化的有序——也就是艺术的能力。一个人,应该永远不要放弃那个追求艺术的心,永远不要把自己当作达成某个目标的工具,不要屈服,不要看低自己。
3.
最近突然又有了想学一点算法的冲动。对于算法,我实在是个门外汉,写这个系列也是出于一个很自私的目的:如果开始写一个系列,也许就能激发出更多学习的热情吧?由我这样一个不择不扣的初学者去写面向初学者的入门文章,实在很有问题。因为面向初学者的入门读物正是应该由真正的大师来撰写。我们喜欢上足球的起因,可能就是因为看了世界杯、三大联赛,看了齐达内、罗纳尔多、梅西……而不是中国难足。当我们玩腻了CS的时候,看一场高手的巅峰对决就足以再次唤起我们的热情。所以呢,虽然我还是个初学者,但是我仍然憧憬着可以写出不一样的东西,可以展现出算法的精髓和美,可以让它的可怕之处变得有意义——而不只是原原本本地抄抄书而已,于是,我写出来的东西就可能会很可怕。所以小弟在此拜请各位高手也能抽空看一看后续的文章,若发现任何错漏之处,请您多多指正。如果您有不同的理解、好的学习方法和参考资料,也请多多分享,感激不尽。