为什么我作为一名自学开发者学习计算机科学
今天我问自己这样一个问题:既然我已经在编程领域建立了一定的职业生涯,那么我继续投入时间学习计算机科学的动力是什么呢?
我的回答如下:
编程的乐趣在于技艺。
技艺本身就是一个含义深远的话题。暂且这么说吧,它指的是完成某件事本身所带来的内在满足感。技艺与人们对一件做得好的事物之美的普遍欣赏息息相关。
深度
我认为,即使完全不接触理论,也能在编程领域取得长足进步,这非常棒。这为来自各种背景的优秀人才提供了机会,让他们能够加入这个收入颇丰且极具成就感的领域。
然而,要对自己的软件设计选择建立真正合理的信心,开发者需要超越表面现象,深入理解其本质。如果对最终成果的质量缺乏足够的信心,任何工匠都无法真正享受工作的乐趣。
一个人或许能在十年间学习十几种编程语言的基本语法,并参与开发大量不同的Web应用程序,却始终无法摆脱新手的标签。深度正是这种人与那些真正理解编程语言并在设计选择中展现出清晰能力的人之间的根本区别。
有形性和抽象性
许多程序员被编写出一个简单的程序并使其运行起来产生令人满意的结果所带来的巨大成就感所吸引,从而深深地爱上了编程。这种切实可见且即时的成就感让编程变得平易近人且充满乐趣。这对我们来说非常有帮助。
然而,要真正理解编程,我们还需要培养将其视为一种根本抽象的思维训练的兴趣。这实际上是从“编码”到“软件设计”的演变。这种思维训练带来的回报与快速获得一个漂亮的结果所带来的乐趣截然不同。它是一种更为缓慢而深刻的回报,其特点是真正领悟到一个优美或有趣的想法时的那种感觉。
从事软件设计的程序员(从定义上讲,任何程序员都属于这一范畴)是一种非常有趣的工匠。他们的设计作品介于抽象与具体之间。程序员既能将理论模型具体化(编码),又能从一些不太精确的想法中提炼出理论模型(软件设计)。这种在不同思维方式之间转换的需求,使得程序员一生中有很多事情要做、很多东西要学,但这不正是我们所追求的挑战吗?