开始怼人了!
一直忒忙(忙什么就不打广告了,O(∩_∩)O~,园子里的童鞋们应该都知道了),现在终于有点时间,一定要先把这口气出了再说。
两篇文章,让我心里那个难受啊……
他们的共同点,都在讲“内功”。
讲真!现在看到“内功”我都快要吐了。
我不知道用“内功”来打比方是什么时候开始的,好像从我入行就听说了,这说法深入人心啊,都十年了,长盛不衰!
本来《编程基础》我都算了,一看博主就是个学生。学生嘛,无所事事,又找不到方向,没有任何工作经验,随便哪个人一忽悠就信了。而且闲着也是闲着,你要去整点什么乱七八糟基础的东西也无所谓,总比打游戏强(本来想并排个“谈恋爱”的,想想能“谈个恋爱”还是要比你懂点计算机原理要强一点,呵呵,过来人,真心话),以后工作了,现实会分分钟教你做人。
结果没过两天,《大型网站》又冒出来了,唉哟我的妈啊,什么“集群、分布式、负载均衡、缓存……”这些玩意也成“内功”了?!这不就是些工具、名词和概念么?概念一点就通,工具拿来就用,怎么也变成“内功”了?机关枪火箭筒也都能变成“内功”了?我,我,我心头那憋着的一口气啊……
好吧,我们大家都理智一点。
仔细想想,首先,什么才能算是“内功”这本来就没有一个权威的定义。你要说集群分布式就是内功,我也没有办法。但如此一来,什么是“外功”呢?我嘀个神!
算了,算了,这一篇就翻过了,不说了不说了。
我来说说我想说的:
第一、用武侠小说的逻辑概念来比喻科学的编程世界,不靠谱。
那是小说啊!同学,而且是“超现实主义”小说——金庸老先生怎么玩儿都可以。学编程,你也敢这样来?你咋不跳个崖去捡本书呢?还“武功秘籍”,我喷你一口老血……
你一定要那武功说事,好,什么内功轻功,完全是子虚乌有的事情啊。前面有,前面有闫芳被扒皮,后面有雷雷被KO,你还执迷不悟?你还相信高手在民间,在深山老林?你是个成年人啊,童鞋。你看看现在的(正规的竞技性质的)体校,哪个不是采用借用最前沿的科学理论,采用最先进的科学技术,使用最科学的训练手段……还练内功?呼吸吐纳,吸日月之精华,是吧?哈哈哈……让我先笑一会儿……脑补了一群体校生对着一轮圆月“嗷~~”,那画面不要太美。
这年代,还鼓吹什么“学好编程就要先打好基础”“就要先练好内功”,这种言论,就和“要学好功夫,先扎五年马步”一样荒谬。
第二、打比方,谁不会啊?
飞哥还不是看过武侠小说的。咯,独孤九剑,练什么内功?管你什么内功,一剑戳下去,都是一个窟窿,是不是?那这样看来,剑宗完胜,还练个劳什子内功呢?(我突然想到,这是不是金老爷子自己的反思?以前的作品,吹得太玄乎,现在回归一下现实?)
打比方,只是一种解释问题的方法;比方打得好,只是把这个问题解释得好。但解释得好,并不一定就代表你解释的就是对的呀?!
中医,就最喜欢打比方做类比,阴阳五行吃啥补啥啊,然并卵。当然,还是有很多人信,就跟有很多人相信编程就一定要练内功一样。
最后,老司机来給大家打个比方:编程,就像开车。最重要的是“到达目的地”,也就是实现需求,解决问题。你写的代码跑不起来,什么内功外功全都抓瞎。
要打好基础夯实内功,这话是你们老师告诉你的吧?更不要脸一点的,还会说“练好内功,你啥都能行”,是吧?还是以体育比赛为例,你练好什么内功,铅球跳高花样游泳外加斯诺克,十项全能?用你的脚拇指想一想这个问题好不好?就你们学校的老师,教数据结构的那位,让他到企业做个CTO,算了,也别难为他,就一个普通的一线开发人员,他行不行?他有“内功”啊!
很多高校教师脱离一线,对各种层出不穷的新框架新技术两眼一抹黑,还恬不知耻地扯“基础”“内功”,真的是最后的遮羞布啊!不“知耻而后勇”,反而用这些瞎话骗学生,误人子弟,唉~~(喷我之前等一等,这话不是我说的,飞哥还没这本事。记得好像是一个高校老师说的:“(科班的)大学毕业生还要去参加培训,是大学教育的耻辱!”)
其实啊,没什么“内功”,一定要有,那就是“解决问题的能力”。用开车打比方,要到达目的地,这一路上你要解决很多问题。首先,你要会开车,要说基础,这才是基础。注意,是“会开车”,比如油门刹车交通法规,而不是什么发动机的构造……然后,你要知道路线;接着,路上可能会有各种具体的问题,比如路上有坑、车辆抛锚,甚至于车匪路霸,你得一个一个的解决。
我突然想到,很多同学,会认为车辆抛锚时,能打开引擎盖修发动机的,才是高手,你是不是这样想的?你看你看,是不是,谁说开车的就不要懂发动机技术?不懂发动机你能修车么?
那我想问问:遇到车匪路霸,你是不是还得会武功啊?歹徒手里有刀呢?功夫再高,也怕菜刀啊,O(∩_∩)O~
为一个小概率的事件,投入极大的精力,不知道分工合作,让专业的人做专业的事,这就是鼓吹“基础”“原理”“内功”的最大问题。
路上有坑,避开;车辆抛锚了,应急电话;车匪路霸,打110啊 !
你真心觉得会修发动机很牛逼,你就去做汽修工啊,是不是?天天修汽车,多爽!为什么要来当司机,十年八年的都没机会一展身手,不憋屈得慌啊?
现在学校教的那一套,什么二进制编译原理之类的,有没有用?有用!但它的用武之地不在编程,不在软件工程领域,你不要生搬硬套拉郎配,计算机科学(Computer Science)和软件工程(Software Engineer)本就是两码事,而且以后的差距会越来越大,你要搞清楚你的领域,也就是你要解决的问题。
作为搞软件工程的码农,什么才是内功?组装打磨和填坑。
有一种说法,编程不是什么数据结构+算法,而是google+英语。
很多人认为这是一种嘲讽,其实不然。这恰恰告诉了我们编程的真相,以及我们开发人员真正的“内功”所在:快速获得知识并解决问题的能力。
软件工业发展到今天,互联网时代,各种开箱即用的工具知识就在哪里,关键是你要能快速的找到它,学会它,使用它,解决你当前项目中遇到的问题。
相信我:看着文档就开始编程,不是菜鸟,就是大神。