80后硕士老IT从业人员,这一行入门门槛很低,但想脱颖而出谈何容易

【本文来自《程序员的分化》评论区,标题为小编添加】

作为一个本科电子信息工程、硕士软件开发方向的80后老IT从业人员,个人认为计算机编程不难,不仅入门不难,在如今网上包括学习视频都很丰沛的今天进阶都不难(我们上学那会资料都是英文的,还有语言门槛,现在轻松多了),只要你不碰比如算法之类的非常吃数学底子和天赋的领域,肯学习而且学习能力不错编程水平达到主程序级别问题不大,所以我同意作者吃这碗饭问题不大的观点。

问题是培养一个合格的主程序级别的程序员,其课程要求以及设置,从基础课角度老实讲至少要到硕士阶段恐怕才够,但是最坑的是现在软件领域细分的厉害,有些课程估计会用不上(比如我上过的操作系统课程,工作上就从未用上过)。

问题是现在软件领域的本科生,其课程设置和学习方向过于偏向工具使用和实践了,在软件设计思路以及方法、工具上亏欠太多,换言之你详细布置具体工作或者说详细描述具体功能,他们能做,但是做的知其然而不知所以然。

举个例子,我临时接手帮人带过一个基本上没文档的软件项目,我第一件事就是结合用户业务资料和现有系统写需求文档;

第二件事,依据需求文档和现有系统,带着全项目组的小孩打开系统和数据库按系统架构和模块依次过,同时开始补设计文档,在此过程中最常见的场景是我问当时XXX为何这样实现后小孩集体一脸懵逼。我发现这些软件专业的小孩在知识领域上太偏,看需求文档还好,用例图、流程图/跨职域流程图、数据结构表之类的基本工具还能明白,但是到了对业务模块进行归并、划分时的E—R图(实体关系法)以及连带的数据结构设计基本上一脸懵逼,脑子里也没有OOA(面向对象分析)及OOD(面向对象设计)两阶段划分以及每个阶段设计内容的概念,对于顺序图、状态转换图等工具也没掌握,反倒是到了后面对类图看的很明白——因为现在的开发工具大多支持自动生成类图,所以他们虽然自己没画过但好歹能看懂。所以在此阶段我带着他们重新梳理设计,而且手把手教他们画图,起码让他们把程序内部构造和逻辑搞清楚。

第三件事,把梳理出来的设计文档和当前系统做对比,两者但凡有冲突的都按新整理的设计重做,下一阶段工作内容明确了。

综上,即使仅限纯软件(作者提的工业软件是更复杂的领域)、不涉及业务需求专业领域的理解,程序员是分等级的,我认为这一行入门门槛很低,主程基本要求不低,上限非常高,算法工程师和架构师都不是一般程序员去考虑的方向(比如我,我硕士阶段算法课能考相当于良,但我自知干不了专职的算法工程师,架构师的问题更复杂、不仅仅是技术问题)。

最后:

“有一个专家认为会matlab编程,因此认为自己也是精通编程的,可以参与工业软件的深度开发。”——扯淡,懂业务的兼会编程的能把核心业务算法跑通就算不错了,还是踏实做业务专业指导吧,其他的还是交给专业公司去做。

“但有人认为,不掌握汇编,C/C++等系统编程语言、编译原理、操作系统、传感器技术等,就无法深度参与工业软件的开发。”——别寄望于一个人能掌握这些了,靠团队分工吧,工业软件特别是专业工业软件太复杂。

全部专栏