程序员这个职业到底怎么啦
当一个生意很赚钱的时候,什么乱七八糟的人都会想来做这个生意。这很正常。
当一个职业薪水高的时候,什么乱七八糟的人都会想从事这个职业。这也很正常。
程序员就是其中之一。
对其他高收入的职业来说,存在一个门槛,就是从业资质。它能保证进入这个行业的人,能满足一个最低标准,以确保这个职业的产出质量。
程序员这个职业没有实际的从业资质门槛。你几乎凭一张嘴就能找工作。
先说说程序员三种来源,就是:培训出来、计算机专科毕业、计算机本科及以上毕业。
而真正的计算机教育,现在只存在于本科。本科一上来不学编程,而是先学两门课:计算机原理和操作系统原理。
这两门就好似中学化学:将来用不到,但起码知道药为什么能治病,木头为什么会燃烧,看上去毫无关联的现象其实都是共同的机制在起作用。
计算机原理和操作系统原理也是一样,通过了解 CPU、系统总线、内存映射、磁盘分区、设备驱动,从而了解计算机的设计者们面对各类问题,他们都是通过何种思路来解决的。
接下来是不是可以学软件开发了?没有,接下来是数据结构和算法。这两门课也是要仔仔细细的学,先学一点编程语言的语法,然后把这些数据结构和算法挨个都实现了,这才算掌握。
那接下来是不是真的可以学软件开发了?没有,接下来是网络原理、图像处理、多媒体原理、数据库原理,在这些课程里面要把图像的灰度计算、网络包的纠错、非对称加密、遵照范式的数据库设计等等全部实践一遍。到了这个程度,学生方才具有了程序员应有的思维方式。
除此之外还有三门课:汇编语言、专业英语和计算方法。前两个好理解,而计算方法就是如何设计一套算法,在实现复杂的高等函数计算的同时,保持误差最小化。因为计算机精度有限,经过几十万次加减乘除误差会变得很大,所以像天气预报、工业设计方面是不能简单的套用函数去计算的。
这些课程在锻炼学生思维方式的同时,也在开阔学生的眼界:计算机这个行业深不可测,增删改查之类的,连根毛都算不上。
那接下来,是不是真的,真的可以学软件开发了?没有,接下来是学校为你准备的最后一步:软件工程。就是让学生在工作之前先对软件开发的过程有个概念。
这是最后一门课程,接下来就毕业了。
妈的,软件开发到底教没教?开发工具呢?框架呢?
反正在我那时候,学校是一丁点都没教。
全靠学生自学。
上面这些就是从大二开始,三年的专业课程要学的。学生把这些课程学懂了,其知识水平跟专科和培训机构出来的完全不是一个层次。
再看另外一边:培训机构六个月(这时间还算长的)出来,是什么样子呢?
语言会,框架会,工具会,增删改查会;但你要他设计一个链表,不会,要他查询数据库记录然后组成一个树结构,不会,要他写一个简单的的锤子剪刀布游戏,不会。没错,很多人就是这样,低能到这种程度还自以为达到了程序员的标准,这在十三年前是不可想象的。
再比如用工具,没问题的时候还好,一出了问题就抓耳挠腮不知所以,错误信息摆在面前也看不懂,不知道怎么办,我说你调试一下吧,只见一边鼠标晃来晃去一边咂嘴吧,不知道该在哪打断点。
这种情况下谈什么自学能力那都是扯淡的知道不。很多人以为自学能力是个隐藏属性,我想怎么吹都可以。但实际上一个人的自学能力很容易就看得出来:自学能力强的人不会轻易求助别人。就这么简单。
所以以前针对计算机专业的程序员面试,有些是假设面试者已经懂的基础上,不会提某些问题,但现在不一样了,有些问题必须问了,比如什么是进程?进程是如何启动的?进程启动失败了会怎么样?这就好比问一个会计的求职者什么是钱。
我曾经很天真,以为入职的新同事虽然水平差,但只要对技术有热情,我还是可以带起来。最后发现很多人一离开培训机构就完全失去学习能力,以为凭几个月学的那一点毛皮就能混吃到老。
曾几何时,从事程序员人都是对技术非常有兴趣的。现在这样的人越来越少了。只要这个行业无门槛的情况继续保持,情况就不会停止恶化。
我不是希望把本科学历当成程序员的最低标准,因为本科专业课程仍然是与市场脱节的,只教知识不教技能。我只希望有一个真正实用的软件公司都承认的职业门槛,不达到这个门槛就不能从事程序员。这是一个成熟的行业必需具备的。
这就是我得出的结论。