身为一个曾经的编程大牛与编程老师。即便已经因为兴趣转移而转行。
我还是常常接到这样的询问请求 => 如果有机会的话,能够重新开设编程班。
学会编程,似乎是这个时代里,人人都有的一个梦想。
好似,学了编程就会变成超人。
即便如此,我虽然曾经打造过网上教材进度、设计,业内学员反馈是最好的编程班,但对于再次开设编程班,实在是兴趣缺缺。
一方面,我是厌倦重复教编程基础的内容。一方面,我觉得想来学很多人,其实没有学编程的必要。真收了双方也尴尬。
有一天,我去找个老友。这个老友已经接近财富自由了,月入上千万。他问我:"Xdite,你那编程班啥时再开,你那编程课教得真好,我真后悔当时没有好好跟你学"。
我没好气的呛他:「你都财富自由了,学编程干嘛,编程学得再 6,也不会帮你赚更多钱阿。你有钱,请个程序员帮你写就好了不是吗?」
他说:「不是这样说。你那么聪明,我也想跟你有一样的大脑。我最近业务有部分上不去,想跟你学学编程,看看能不能解开。」
我一头雾水???「业务上不去???」「然后想学编程????」
弄不明白两个逻辑的直接关系。
后来他跟我解释,我发现他是这样想的:他认为我拆解问题的能力非常强,往往可以把常人觉得没什么头绪的问题简单化,轻松的拆掉。他认为这就是编程能力的展现。
我的天阿。这误会可大了。这叫解题能力,不是编程能力。
他应该学的是解决问题的能力。而不是编程语言。
这个鸡同鸭讲的对话,其实在我周遭已经发生无数次了。我老是劝退别人不要学编程。
只是,那次我突然间意识到,等等,难道我们在说的不是同一件事吗?
于是我上了 FB,公开的问我周遭那些曾经想跟我学编程的朋友,它们到底为什么想跟我学编程,学编程想解决什么事?收到了一大堆的反馈。
我才发现,原来周遭的「一般人」想学的,还真是问题拆解的能力,不是编程语言。
简单来说:
编程 = 拆解 + 梳理流程 + 自动化。
当一般人向程序员表明想学编程时,程序员的反应是:
编程 = 自动化 + 编程语言
而一般人真的想学的是:
编程 = 拆解 + 梳理流程
难怪鸡头鸭讲。
而且,不管哪一门编程语言,设计的再好入门。对从来没有编程概念的人来说,都是另外一维度的思考模式与表达习惯,很难快速消化。
而且就算学会「使用编程语言」,通常对「拆解+梳理流程」,一点帮助都没有。
这也难怪许多人往往学编程,从入门到放弃。
编程思维,其实是一种高阶的思维模式。这种思维模型,其实不只存在程序员大脑内,也往往存在各行各业内一些资深的师傅大脑里。
不管是多难解决的问题,就算是从前没碰过。它们总能轻轻松松的从奇怪的角度破解,设计出正确且有效率的作法,好像在变魔术一般。
然而,当你向请教它们这种思维是要如何锻炼的时候,它们却又说不太出来这种能力是如何养成的。
只能大概推敲,可能是资深的人惯有的直觉经验。
但是,这种能力又普遍出现在一般程序员身上。也就是说,这个能力是能够人造的。