当前位置: 华文问答 > 数码

怎么看待程序员普遍缺乏数据结构和算法的知识?

2016-01-31数码

这就是我们所谓的「高科技」企业只能电信诈骗、联手莆田系做局以及拿钱砸小贩的原因了。

就这点水你还能指望他们搞别的什么?对这些本质上不过小贩水平的家伙,什么高科技不是神话?

算法有没有用?

当你做局诈骗卖白菜时,那是真没用。

但只要你稍微有点追求,稍微脱离菜贩子这样的底层眼光,你就会知道,真有用。

比如:计算机基础知识对程序员来说有多重要?

在这个案例里,起初我压根就没意识到自己化用了树、链表、递归等诸多「算法」——注意是化用,只会刷题死路一条——远比很多据说完全是「钻无用的牛角尖」的hard级算法题目难得多。

但最终做了个什么?仅仅是一个不侵入编译过程的、简化版的protobuf而已。

就这么个入门级的、低水平的库,你就得有这么多的技术储备。

效果也是立竿见影的。上百号人天天996写出几十万行代码搞两年满是bug还没搞定的东西,换这个,一个人,955,三周不到,800行代码,一劳永逸的搞定,0bug。

业界那些诈骗做局卖白菜之外的项目,这类「高级程序员效率高过一般水平的程序员十倍」的案例比比皆是;甚至同是程序员,强者效率百倍于弱者都是司空见惯——尤其是,就不用多高了,就protobuf这种糙货,水平不够的程序员熬到下辈子都写不出来。

问题在哪?

其一,应试教育,教出来的绝大多数人只会做题不会做事。能熬夜加班google百度到处抄、把很简单的东西凑合出来已经很不容易了——大多数人还没这水平呢——你还想他巧做、有创意的做、做成基础性支柱性的库、提供精巧高效稳定的API、支持未来几十年里的所有同类需求?做梦都不敢想。

其二,普遍的低水平、普遍的价格战、普遍的垄断压制了「向上突围」的可能,只能「下沉」下去,和小商贩们打价格战、和民间骗子携手共进——这样才能来钱啊。

你做别的,一个是普遍水平偏低,导致「向上看」的项目绝大多数只能招一些南郭先生混你的钱然后可耻的失败;另一个是,你好不容易做成功了,「能人」就出来了,又是反编译又是源码泄密或者带项目跳槽的,手里大把票子的大鳄轻松把你抄死——抄死你别人都不知道是你先搞出来的。人家有钱砸舆论,你呢?还指望靠这个好不容易成功的项目回本呢,哪来的底气和人家拼烧钱。

你看,低水平的现状使得想搞「高水平项目」的公司举步维艰、使得任何「技术突围」成功者马上就被「商业歼灭」,重新陷入低水平竞争;低水平竞争的现状又限制了需求,反过来强化了「程序员不需要懂算法反正都是CRUD」的风气;这种风气回过头来再次限制了那些试图「向上走」的公司、也把学有所成的程序员拖死在996的泥潭里——于是就「候选人答对比例差不多不到两成,工龄越长,比例越低」:反正都在CRUD,996那么多年,那点绕口令能不忘吗?

这就是所谓的内卷。

怎么办?

还是那句陈词滥调:尽量往上学,提高自己的技术水平;拒绝996,寻找更能体现自己价值的工作——你有能耐比普通程序员效率高几倍,何必和他们一切吊死在一棵树上呢——哪怕不得不996,那也要相伴磨洋工、腾出时间提高自己,等待质变的那一刻。

毕竟,国家已经布局,在中小学就引入编程了;将来高水平的程序员会多起来的。当时机成熟、有了足够的人才储备、整个行业可以往高处走时,您是想「像被用破了的抹布一样被丢掉」呢,还是想「像久经磨砺的宝石那样显露光华」呢?

对公司来说也一样:为什么要考算法?明明我们只是在卖白菜!

答案很简单:技术精湛的程序员效率更高、更不容易搞出错误——卖白菜你们的服务器都更稳定、更能应对冲击、更不容易丢单;尤其是,将来市场风向变了、需要往上走时,公司不至于抓瞎:「俺们公司里都是些小贩……你突然说要玩高科技……俺们牙齿还没刷呢」。