在每年的本科生导师见面会前后,我都要关心下所谓的“被调剂学生数“。这个数字,大体体现了IT和信息行业的热度;而对同学个人而言,则会影响到他们第一学期的学习兴趣。高考时报的是厦大的所谓王牌专业(经济类、管理类、法律等),而学的却是软件和编码,很多人会提不起来兴趣来。那感觉,就如同,你想要的是:
面朝大海,春暖花开1。
到了厦大软件学院,发现的却是:
面朝大海,打字编码。
学软件,以后就是以后当”码农“,怎么一个”惨“字可以形容!到了大二,软件学院的学生分为“软件工程”和“数字媒体”两个专业。而,数媒班,则成了很多不喜欢编程、逃避技术的同学的避风港。很不幸 ,我主讲的“人机交互”课程,就需要给一些所谓不爱编程的同学上课2。我发现了,他们的难处很大,恐惧很多,忧虑更多。他们中的一小部分人,对编程和技术有点抵触,甚至到了谈编程色变的地步。
然而,编程真的是如此前景暗淡,枯燥无味吗?下面,我就来说说编程,或者学习编程,可以“是”什么。可以,成为什么。
据说古代猿人是因为懂得使用和创造工具,才进化成为了人。其实,除了基本的吃喝玩乐,每个人都想有所创造,都想为这个世界留下点什么。而创造的工具,作家用文字,音乐家用五线谱,而我们程序猿用的就是——编程语言,一种类似于神谕的语言。据路边社统计,除了睡觉我们有80%的时候是和电脑、手机在一起玩耍的;而正是程序猿编写的程序,在驱动着电脑和手机的运转。掌握了编程,就等于拥有了一个创造的工具。你可以通过它构建一些你觉得有趣的、特别想要的东西。当某天,你通过自己的编程,完成了某件事情,拥有属于自己软件或产品,你会觉得它像是你创造的孩子。成就感杠杠的。
编程语言做是一种语言,其实和汉语、英语并无本质不同。自然语言主要目的是交流,通过说话和写作,表达观点,驱动他人;编程语言呢,其主要目的是与机器对话,表达你对机器的期望,驱动的是机器。因此,可以把编程看做一种表达工具。通过它指挥机器工作,指挥与其他机器协作,只会机器完成人没法的事情。人的能力和时间实在有限,但机器正在丰富和扩展我们。目前,人与机器有逐渐融合的趋势:机器慢慢的成为人的外延,成为人能力的延伸。当今有一个观点,说是我们如果要具备有竞争力,就必须“人机合一”。我深信不疑。君不见,无论是经济学,统计学,还是金融,都慢慢的需要从业者有编程的功底。即通过学习编程,学会与机器的交流,最大化挖掘机器的能力,来为提高个人的能力服务。
大学的时候,我在一个周围全部是文科院系的学校学习计算机,因此也认识了一些专业是文科,但仍然自学编程和计算机的朋友。听他们聊我的专业,总有一种从门外看门内的味道,多了一种视野。比如,有一个朋友,学的是经济学,他自学了数据结构,操作系统后,大为折服。我当时看来平淡无奇、枯燥的数据结构,在他看来却觉得是很精妙的安排,甚至快要上升到方法论的地步。对于操作系统,他觉得更是神奇。恨不得把操作系统的容错性、内存的管理方法,统统用于指导其个人的生活。再后来,互联网思维大行其道,估计这个哥们更要有一番言论了。这几年,也听说过一个很有意思的观点:计算机、编程、互联网等等,都是人类极少数的人想出来的,发明出来的。他们的想法,代表了当今人类最新进的思维方法。我们学习编程,学习计算机,就是在向人类中极少数的优秀、聪明的大脑学习。学习他们的思维方式,学习他们的想法。
听起来不错吧。原来,编程还是这样的”高“、”大“、”上“。
编程和程序员给人的刻板印象根深蒂固:
枯燥、无趣、偏执、不修边幅。
英文也有一个词来形容编程高手——geek。这个词其实无所谓褒贬,但在很多人眼里,它是贬义的。但编码,真的是枯燥的吗?程序员和作家、会计师相比,哪个职业会更有乐趣呢?
你也许会说,乐趣、兴趣的问题很大程度上取决于主观的因素。的确,一件事情是否有乐趣,很大程度上取决于于做这个事情的人。人们对于经常做不好的事情,是会慢慢的失去兴趣和乐趣的。所以,一个人如果觉得数学很难,很多题不会解;则他可能会有挫折感,慢慢的对数学有抵触情绪,进而不上心、不投入,也不做数学题。因此数学更学不好了,恶性循环。
反之,如果一开始对数学不是很有兴趣,但慢慢的发现自己能看得懂公式,能解答习题,则大抵数学的信心就会加强,慢慢的对数学就有好感了。获得了正向的反馈(正能量),因此也觉得数学有点意思了。因此,我们是否能胜任这个事情,能否持续的、正向的、及时的反馈,是觉得该事情是否有乐趣的一个重要因素。而所谓的作家,在互联网时代之前,其实是很苦的行业。因为反馈的周期实在太长。你想,没有成名之前,好不容易码子写了个长篇小说,却可能无人帮你出版,得到处投稿。可一投就好几个月才能获知结果,其实很难获得持续、正向的反馈。
这里,我强调持续正向及时的反馈,也是借鉴了网络上打游戏的观点3。 然而,如果一件事情能完全胜任,人又会觉得无聊。觉得没有挑战了,乐趣也会跟着大大降低。如果有一定的偶然性和挑战性,跳一跳可以够得着;同时发现你够到的东西,还有点意料之外,则就更好了。比如,牌和麻将就具有这样的特质。麻将需要一定的技巧,努力之后可以提高;但仍具有很大随机性及运气因素。这可以解释为何中国大妈大叔们工作之后,觉得最有趣的事情就是打牌打麻将了。而会计这个行业,我不十分了解。但我推测不会是一个很有趣的行业。证据之一是有会计师的朋友,总抱怨说看excel表格,看的头发都白了。想想也是,会计的规则和准则都是固定的,老板应该也不会喜欢有“意外”的会计报表,不喜欢有太有创意的财会人员。更有甚者,会计师偶尔还要被逼着做些自己不愿意做的事情。具体什么事情,你懂的。
因此,如果一件事情是可以获得持续的、正向的、及时的反馈,并且同时具有一定挑战性的,它就具有"有趣"的基本特征了。
很幸运的是,编程恰好有这么几个优秀的基因。首先,编程可以马上看到结果,每改动一个语句,没改动一个变量,机器都可以告诉你对错,告诉你运行的结果如何。反馈持续进行,且总体上往好的方向进行。近年来流行的“测试驱动“的开发方法,则可以在你写对代码的时候,把红色的道道变成绿色的道道4。这可以解释为何一些程序猿、geek可以每天加班检点,就是想做出一个好的东东来。你们看似很苦bi,很有毅力的程序猿们,其实可能正陶醉在自己的有趣世界里,无法自拔呢。
为何不说是一种”生活方式“呢?当然,这样写估计也没有什么错。为了避免此文成为一个鸡汤味太浓的软文,我觉得应该去除一些文艺气息太重的词,比如,生活方式。我所说的“生存方式”,其实是想告诉同学们:
编程,可以成为一个人养家糊口、报效国家、安身立命的生存方式。
说的直白点就是:编程可以让你赚钱。的确,这个到底很多人相信。但相信的程度实在太低。
以我将近10年的教学生涯和十多年的编程生涯告诉大家,编程的确可以让你以很好的状态生活着。我发现大学时候编程好的同学,大都生活的很滋润。要不在美帝IT企业,工资以美金计,要不就在国内大企业的信息部门逍遥自在。而且,IT行业的入门的门槛不高,完全可以靠本事吃法(大家都很鄙夷靠脸吃饭),平均薪酬也是可以的。中国老百姓最朴素的道理——”一技之长”、“技不压身“——可以很好的用在编程这个工种身上。
虽然大家的收入还是可以的,但顶着“码农”的恶名,我发现大家真正焦虑的事情,其实是:
不是说IT吃的是青春饭吗?这么累,老了怎么办?
首先说下“累”的问题。累,其实是用来吓唬那些向往成功,但意志不是特别坚定的人的。试问这个世界,什么事情是不会累,又可以轻轻松松就获得成功的呢。我们是生在经济高速发展的时代,如果没有一个富爸爸,又想过上好的生活,99%的人出路只有一条:那就是努力再努力,等待好时机(还有1%的人可以买彩票)。同样是高薪的工作,那些在金融、投资行业的朋友,其实加起班来不会比IT行业更少。而且,我相信随着经济的发展和产业的转型,员工生产效率提高了,企业的利润足够了,IT加班很多很累的刻板印象会逐渐淡去。人们会逐渐回到正常上下班、正常工作的状态;就如同今天美国IT界和程序员的生活状态。
其次是“老了”的问题。这个问题其实很好回答。让自己不会老,不就可以了嘛。我说的不会老,不是生理上的,而是心态上的年轻。保持年轻的形态,持续学习,你可以在IT的行业越做越远。据说现在在国外,60多的程序员大有人在。这些老程序员写代码,纯粹是为了个人兴趣。写些小程序玩玩,颇有怀旧的意味。而经验丰富的程序员,会成为架构师、成为资深产品经理、成为技术合伙人、成为公司的CTO。甚至,像很多当今的创业者一样,成为公司的老板。据我说知,我大学时候所在的信息学院,也有好些师兄、同学、师弟都出来创业了,公司成功者不在少数。而在这个”大众创业“的时代,IT是最容易起步和创业的地方。年轻者如正在看此文的同学们,如果想创业,赶紧找个idea,打开电脑,自己就开始动手打代码吧~
说了这么多,颇费口舌。无非在讲编程的好处,提升编程的level。本来,大家喜不喜欢编程,和我实在是没有太大关系。只是每次上课,我都要强调下编程的好,希望以此提高大家的学习热情。从软件”复用“的角度来说,我还是有必要写篇文字统一说明下,这样效率比较高。也欢迎同学们留下你们的意见和建议。
最后我要强调的是,细心呵护同学们对编程的热情,是一个老师的最首要、最重要的责任。理论上,老师只是起到引导、辅助的作用。以我的经验,真正的编程高手,都是自学而来的。如果某一天,你成为了编程高手,依靠编程获得了经济的独立和自由,那么,你的人生,或许意境是这样的:
打字编码,春暖花开,面朝大海。
是的,希望在厦大,在软件学院,同学们都能轻松做到这一点。
1 近年厦大在网络的热度不退,很多人来厦大读书、授课,或许也是受到了海子一句诗的影响。而厦大,则真的有条件实现“面朝大海,穿暖花开”的意境。↩
2 其实,与专业关系也不是那么大。软工也有不喜欢编程的人。↩
3 你看游戏多有趣啊。可是为什么有趣呢?除了打斗等场面外,一个重要的原因是,它不断让你看到你的战果,获得持续的心理满足感。 ↩
4 用过诸如JUnit的同学,知道我在讲什么。↩
自动标签 : 编程 大海 打字 可以 觉得 机器 成为 学习 软件 程序猿 同学 数学 兴趣 事情
更多 [ 课堂 ] 文章