为什么大学老师教编程上课都不敲代码?

标签: 技术成长, 知乎问答, 架构设计

保留所有版权,请引用而不是转载本文(原文地址 https://yeecode.top/blog/37/ )。

如果你的大学老师上课不敲代码,那他并不一定是一个坏老师。当然,也有可能是。说不定他编程水平真的很烂。说不定,还是一个极好的老师

来,我们细细分析。

我的分析将会按照下面的结构展开:

一、  软件开发的层级划分
二、  技(技术)
三、  术(架构)
四、  道(理念)
五、  老师要不要写代码

一、 软件开发的层级划分

软件开发是一个庞大的系统。我们可以类比传统工程设计领域的概念,将软件系统领域的研究由上到下地分为三层:

以上三个层面,层次逐渐降低,且上层为下层提供指导、下层为上层提供基础

来,让我用并不优美的笔触做个板书,如下:

图片

这其实就是我们常说的

接下来我们分别讨论三个层级。

二、 技(技术)

对于“技”这一层级,我们平时接触到的最多。在学生阶段,说一个人是大牛也多指其“技”高一筹。而且,技是上面各个层级的基础。

这一层级有以下几个特点:

三、 术(架构)

这一层级大家接触的相对少一些,尤其是学生可能接触不到。工作几年后的软件开发者会接触到这些,但也不会太多。毕竟,相对于开发者而言,成为架构师的总是少数。

这一层级有以下几个特点:

有必要再说一下相对虚和需要技术基础这两点。几年前听说某个创业公司的CTO作为首席架构师,竟然不会写代码,还将其作为自己的特色。这种,绝对水货,都不会写代码你架构啥啊,最终东西怎么实施的自己都搞不清楚,那哪是架构啊,坑人啊。

如果感觉一个人侃侃而谈“术”,想考察他是不是真本事,而又没时间让他架构个实在的项目。那就让他写代码!一个优秀的“术人”(架构师),必定是一个卓越的码农!或许细节只是有些淡忘,但是,在编辑器的提示下,代码能力比大多数程序员厉害才对。

四、 道(理念)

谈到这一块,我接触的也比较少了,还触及不到。谁让我科研阶段也是偏实践的方向呢。当然,真正做这方面研究的人确实少,而且都是赫赫有名的大牛。

这一块的内容主要以论文或者会议演讲的形式对外输出。例如,哪个大神又写了什么牛逼的论文(说到这我怎么总是想起谷歌这个大神级公司),或者又在某个会议上提出了新的思路。

这一层级提出的思想往往会在两年左右落实到“术”上,进而影响整个软件领域的发展。

五、 老师要不要写代码

讨论完“技”“术”“道”,我们再来回答这个问题。

我们知道,大学里有很多代码课,例如Java\C等等。但是,大学这些课程本质上是在教你“技”“术”“道”的结合,而不是“技”本身

因为,“技”很简单,你下课自己看看书就能学会。作为一个大学生,真的不难。

也因为,“技”涉及的面很广,各种语言Java\C++\C#\Python\Lua\PHP\JavaScript\Shell……所以,老师PPT上第15页第4行代码最后面是不是少了一个分号真的不重要。

以Java为例,上课老师天天写代码,也顶多只能教会你“技术”层级的“Java”中的橙色的那一小块知识。(而且我觉着我画的太大了……毕竟板书能力有限。)

图片

而等你工作的时候,可能进入了腾讯,然后用的是C++。那橙色小块的知识迁移性太差了,对你的工作用处不大

因此,老师极力要教会你的,是蓝色的竖线:“技”“术”“道”的结合。在这个目的下,老师写不写代码,不重要。甚至,写代码都有些浪费课堂时间。

当然,还有一个原因。老师教授的目的是“技”“术”“道”的结合,因此,可能“技”的能力不是太高。学生中可能有技高一筹的人。那老师写段代码如果出点问题,脸面也不好放啊。毕竟处在“技”崇拜阶段的学生,不太会感知到老师“术”“道”的高超。所以,有时候,不出手,更保险。

当然,以上我说的是高校。如果你参加了一个Java的培训班,就是来学“技”的,结果老师一行代码都不写,和你扯写高层级的乱七八糟,不用怀疑。那人不会写代码,退钱,走人。

好了,就讲这么多。

希望大家以更高的视角来看大学老师的授课,来看软件开发这一领域。

本文首发于个人知乎:易哥(https://www.zhihu.com/people/yeecode),欢迎关注。

作者书籍推荐