程序员就是机器和现实生活的中介。
第一境界:好奇的走向机器
在还很懵懂的高中,或许因为社会上的光环,或许是理科生情节对人文经管学科的不选择,还可能是计算机游戏带来的刺激,cs专业很吸引人。由此思想开始从自然的生活状态走向另一个世界。真正的体验从编程开始。在稍微对计算机软硬件体系有点仅停留在名词上的认识上后,开始了理论和实践高度结合的探索过程。
用语法极端苛刻的计算机语言去实现初级的数据结构,再有这些数据结构支持下,进一步练习计算的核心:算法,直到足够的练习后,才能用计算机程序实现简单的纯粹的数据流。这就是第一境界。达到之后,想来简单,却很关键。
这个过程唯一的支持力量就是好奇带来的兴趣和动力,也就是选择这个专业的真正原因。很多人在这个阶段从未体会惊奇和成就,过多的挫折导致直接放弃。当然也就很难进入下一境界。这也是程序员道路上要过的第一关。
第二境界:深深的陷入机器
如果第一境界只是与机器的相识和心意的试探的话,第二重境界的过程就像和机器的一次热恋。在修炼成功之前,基本上,你耗费了大部分的精神和至少4年以上的时间,对机器也有了深入而广泛的了解。在无聊的青年时代,只有这两种经历可以化解无聊。
刚刚入门的程序员们已经不能再忍受“hello,world”这样的程序,她带来的不再是成就的感觉,而是满屏幕的空虚,通过键盘上炫舞的指尖流入心田。他渴望处理更具规模,更复杂,更精妙的数据流,渴望一个作品来自我欣赏。
痛苦在于:这需要时间和正确的方法,需要平衡好 内心的滂湃 和 长期不能达到目标的失落,然后安静的去大量高质量阅读,耐心的练习实践。第一重境界的好奇和兴趣,在这里,有时已经被遇到的挫折完全抵消了,更需要的是毅力,这就是这个境界的挑战。
os,编译,数据库系统,网络,体系结构等大块头的开设而引发的困惑思考,不是第一境界的经验所能判断的。选择linux还是windows,是要继续深入某领域理论,还是开发一个酷点的应用软件炫耀给同学,选择c++还是java,.net很不喜欢,web系统很不喜欢,开发技术还很菜,设计无从谈起,掌握不了规模,界面设计无聊,啊~~~~~~原本清晰的数据流,在这个阶段开始变得混乱起来。
有强烈喜好的对技术固执到偏执的程序员,可能会越来越往底层去专研,有可能成功,也有可能崔头丧气的返回。比如,不屑于windows系统的,可能会选择linux,选择linux又会不自觉的往内核闯,又发现嵌入式不错,由此又走到了硬件层,结果面临的是另一套知识体系,然后权衡之下无功而返。
不太可能有程序员在早期就能规划自己努力的方向而且坚持,这需要对自己条件的深刻了解和对机器的到位见识。我想大部分程序员的规划都在不断修正甚至变动。这个阶段多少有纠结,有难决的选择,有郁闷。根本的原因:急于求成,功利之心抵消了技术探索的乐趣。
有些程序员在这个纠结中离开,也有人在折腾中渐渐找到感觉,并在这个过程中,对机器也有了技术之外的看法。我认为在这个阶段真正尝试过选择过并且努力过的,无论结果如何,一定是带着点东西离开的。
当然,也有一路很顺利的程序员。
第三境界:终于驾驭了机器
不在纠结于系统,语言,快速设计,快速实现,软件的各个流程了然于心,开发游刃有余
第四境界:华丽的回归生活
软件的价值。。。