在真实工作中的编程是怎么样的,与学校里有什么不同?

在学校里学编程,讲课老师的目的是为了讲完讲课用的教材,完成课程设计,以及考试及格。

比如学java,一般是老师按照某些书讲,也不管书里的java技术是否真实会在实际开发中用到,或者说,不少讲课老师平时是不做项目的,他们也不知道项目开发会用什么技能,以及各项技能会用到什么程度,这也是为什么不少学校还在讲swing界面编程,还在讲ssh这种早就不用的框架。

我平时也见过一些学校的教材,这里就以spring boot技术为例,讲下学校里讲的和项目所用相关技术的差异。

学校里,一般会从spring boot启动类讲起,再讲用jpa操作数据,再讲一些控制器层的注解,比如@RequestMapping等,再讲一些技能时,会以语法为主,比如某个方法什么意思,相关参数什么含义,要实现某个功能,可以用调用哪些方法输入哪些参数,再着重讲一些注解的含义。

也就是说,学校里的讲课过程中,老师会着重围绕语法讲,讲清楚某个对象以及某个方法的含义,但在实际工作中,开发者是会以任务为导向。

比如用spring boot做开发,项目经理顶多给开发者一些可供参考的例子,让开发者实现某个业务功能。此时如果开发者还是按学校的步骤,先理解api的用法,再理解诸多参数的含义,再此基础上再开发,一定会延误开发进度。

下面从诸多维度来进一步说明学校编程和工作中编程的差异。

从所用的开发语言来看,就java方面,能讲现在比较实用的spring boot框架的学校这两年才多起来,不少学校还在讲ssm框架,甚至是ssh框架,我不知道是否还有学校只讲java核心,不讲Java web开发框架。但公司里用的,至少是ssm,大多数应该是spring boot。

从项目管理角度来看,一般公司会用maven管项目,用git管代码,用jenkins做部署,用jira管进度,甚至还会用docker和k8s,而在学校里,顶多就用个集成开发环境+Maven吧。

从项目部署角度来看,一般公司至少会在一台机器上部署项目,多的话,用集群部署也有可能,而且有可能引入一些分布式组件或spring cloud alibaba微服务组件来应对高并发,但在学校里,一般只讲单机版完成功能吧。甚至当下,能用spring boot(或ssm)框架讲清楚一整套增删改查流程的学校,已经算比较好的吧。

从功能复杂的角度来看,学校里会讲从前端到后端再到数据库这整个开发流程,但在实际工作中,在每个流程里,还需要考虑各种异常处理情况,比如参数错误怎么办,数据库连接有问题怎么办。

从工作任务角度来看,学校里估计只会要求学生会写代码,在工作中,程序员不仅需要会写代码,更要会做单元测试,做代码质量管理,参与数据库设计,参与项目发布,以及通过看日志解决实际问题。

从代码编写方式来看,学校里一般会要求用符合教科书的方式来写代码,比如设计数据表要符合三范式的规范,应当尽量避免重复写代码,重复代码应当写入函数等。但在工作中,一切是要围绕进度和成本,比如某段代码确实应当重构,但临近发布,来不及优化,所以只能用低质量的方式来编写,或者某项目组没有预算找前端开发,所以只能用比较low的方式来设计前端框架。

从项目部署和维护角度,学校里写代码时,一般会认为数据库是预先装好的,而且数据库等服务器是不会出问题的,所以在校学生一般只会写代码,不大会安装程序和监控系统。但在真实开发中,只会做开发的属于最低级的开发,工资不会高,高级开发乃至架构,少说得会安装组件,或者通过安装组件来监控系统。

从分析和排查问题的角度来看,学校里写代码时,如果出了问题,一般只是通过debub来分析问题,但真实项目中,一般是通过看日志来调查和解决问题。

从使用的操作系统来看,学校里编程一般仅限于windows,mysql是在windows上安装的,java程序也是在windows系统上跑的,但真实项目里,开发可以是在windows环境,但开发好的成果,以及数据库等组件,一般是部署在linux操作系统上,这就要求程序员掌握操作linux文件以及运行linux程序等技能。

从衡量编程的成果方面来看,在学校里,只要能实现相关业务功能即可,但在开发中,更需要确保业务系统在异常情况下也能工作,更进一步,还需要用各种分布式组件实现高并发功能。

从编程的目的上来看,在学校里编程的目的是为了考试及格以及能毕业,所以万一有问题,找人通融一下应该也行,但真实项目里,编程的目的是为了挣钱,目的不同,工作方式和程序员所承受的压力就未必相同了。

上述差异足以能说明在校编程和真实项目中编程的差异。对于广大即将踏上程序员工作岗位的在校生朋友来说,如果在工作后再去适应这种差异,可能就有些晚了,这样付出的代价可能是第一份工作的工资比较低,而且第一份工作的公司规模比较小。那么该如何尽快适应这种差异呢?

1 最好的办法是尽早去实习,去外面公司实习,或者帮一些博导硕导干活。

2 早点去看外面公司的招聘要求,以此来规划自己的学习,同时早日去外面面试,通过刚开始的面试试错,去实地感受下这种差异,通过这样的到的感受,一定比听我讲的要体会得深。

一般来说,刚毕业的应届生,需要通过3到6个月熟悉角色的转换,并适应上述差异,但如果你是在校阶段就通过早日干真实项目以及面试,就熟悉了这种差异,那么就会比别人领先3到6个月,也就是说,就有可能比别人早3到6个月成功进好公司。

但相反,如果在校生朋友踏上社会后,依然抱着在学校里写代码的那套模式,那么估计未必能很好地适应哪怕是最初级的开发工作,这样就别说进一步升级到高级开发和架构了,估计连立足都难。

如果大家想进一步了解写简历和面试方面的技能,可以关注我。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hsm_computer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值