活动地址:毕业季·进击的技术er
0、前言
夏日当下,烈日当头,又是一年毕业季,不禁让我回想起我的在校时光,于是写了这篇博客,希望对他人有所帮助。
我是21年的毕业生,到现在刚好过去了一年,这一年中,我也成长了许多…
本文原创首发CSDN,本文链接https://blog.csdn.net/qq_41464123/article/details/125541118作者博客https://blog.csdn.net/qq_41464123,转载请带上本链接,谢谢配合。
1、高考志愿
先说一说在校的经历,在高考之前,我从未接触过编程,也不知道计算机专业是做什么的,那时候一片迷茫。
没错,我也和屏幕前的你一样,觉得计算机专业就是修电脑的,土木工程专业就是搬砖的,食品科学专业就是做饭的…
于是我高考志愿一顿瞎报,就这样谜一样的选上了计算机专业。
2、大一(加入ACM + 刷绩点)
刚进入大学,根据学长学姐的介绍,报名了很多社团,包括ACM社团、MCU社团等等,社团也是一个大学生聚集的场所,对学生能力的提升有着重要作用。
其中ACM社团就是研究程序设计的学习类社团,社团背后则是实验室的大佬们做线下课程教学,他们有的拿过亚洲区域赛奖项,有的拿过国奖省奖,有着丰富的编程经验,有一个优秀人聚集的场所。
于是我也和同学一起参加了 ACM 社团,还被大佬带着参加了次市赛,混了个小奖。
大一的时候,我也充分利用业余时间,在机房刷 OJ 的题目,靠着刷题量的经验优势,成功加入 ACM 实验室,开始我的编程生涯,大一学的东西比较简单,主要是 C语言的基础语法、条件语句、循环语句、指针、C++面向过程的基础语法,能够用这些工具做一些 OJ 上的基础题目,在算法方面也只是冒泡排序、闰年判断、素数、辗转相除、快速幂等这些基础算法。
当然除了 ACM 之外,最重要的就是刷绩点啦,《高等数学》、《线性代数》、《C语言程序设计》等课程那都是 90 分起步的,这些都是编程的基础知识,也不能拉下。
比如《大学物理》,因为高中没有选考,导致基础非常薄弱,也经常课后专研,遇到问题找老师答疑,老师也是非常热心的帮我解答。
比如《大学英语》,因为高中英语基础太差,导致做的正确率比蒙的低,时常徘徊在挂科边缘,为了防止短板效应的悲剧出现,期末那段时间也要重点关照…
3、大二(竞赛考证 + 刷绩点)
到了大二,听从实验室老师的引导,去参加了浙大的PAT乙级考试,还拿了 100 分(有点运气成分),也参加了计算机二三级考试,也参加了大大小小的程序设计竞赛,也拿了些小奖,只是很可惜没能在 ACM 省赛中拿奖,也算是大学四年的遗憾吧。
大二也是以学习算法为主,主要学一些中等层次的算法,如最短路、最长子序列、并查集、博弈论、逆元、母函数、二分、、尺取、背包、KMP等等。
除了竞赛和学习 ACM 之外,那还是刷绩点,比如《数据结构》、《电子技术》、《离散数学》、《办公自动化》、《网页制作技术》,这些都是分秒必争的专业课。
4、大三(接触Java + 学习框架)
到了大三,开始给自己有了个模糊的定位,那就是做后端开发,于是在各大招聘网站上研究开发岗位,发现Java开发岗占比较多,于是开始接触 Java 语言,有了之前 C++ 的学习基础,熟悉 JavaSE 的语法非常快,大概两三天就基本搞定了。
在接触 Java 语法的过程中,发现Java提供了更多的包装类,供开发者调用。
我也发现之前学习的很多算法,在 Java 中有现成的工具类可以用,而不许自己去实现。
但我绝不后悔先学习 C 语言,因为编程不仅仅练的是语法,重点是锻炼了你的逻辑思维!
有了之前 ACM 的经验,发现写 Java 代码其实挺容易的。
学习完 Java 的基础语法后,接着就开始接触框架,如Spring、Spring MVC、Mybatis,也就是常说的 SSM,我也在某平台买了个实战项目,运行起来后自己一顿修改,出错了就百度,不报错了再改,如此反复…
于是渐渐地,也啃下了 SSM 这块老骨头…
到了大三中期,也就是20年末,疫情来临,出不去的我更是提早开启了 996 的生涯,基本在实验室待10个小时以上,天天刷视频、敲代码。
后来,开始参与老师的外包项目,负责开发一个出租房屋管理系统的微信小程序和对应的后台,于是开荒期就这样开始了。
经过半个月的开发,微信小程序终于是做完了,在此期间也学会了许多,比如微信小程序开发、JPA、Spring实战等。
在竞赛这块,我也参加了大大小小的程序设计竞赛,另外也受邀参加了大学物理竞赛,用刚刚研发的微信小程序经过少量改编,和另外一位硬件大佬组成了一个软硬件结合项目《实验室预约智能系统》,和团队成员一起拿下省二,为大四实习争取了宝贵时间。
5、大四(参与正式项目 + 实习)
由于大三小项目的成功完成,大三末期又成功加入了老师另外一个大项目,老师交给我了更多的开发内容,并且每周带我去公司召开座谈会,我也从此开始了解了业务。
重点来了,各位同学们!那就是 业务 两字,我将在下面详细说明!
大四的时光基本不在学校,就上了两个月的课,实训课用校外实习替代掉了,毕业设计用省奖也替代掉了,可以说整个大四都在实习单位度过,就回了两次学校,一次是拍毕业照,另外一次是拿毕业证。
大四前两个月也是非常的忙,一方面要顾着程序设计竞赛,如蓝桥杯、市赛、软考等;另一方面还要准备面试。
为了真实了解自己的薪资标准,我还特意面试了很多开发岗位,最终结合工作强度和生活成本,确定了个合适的薪资。
幸运的是,实习单位也答应了我提出的薪资,就这样,大四的第四个月就搬到公司宿舍了,后面再也没回过学校宿舍…
就这样,大四的时光就在实习单位度过…
6、业务的重要性
相信很多同学们比较看重技术,认为技术才是决定自己工资的唯一因素。
比如你会 Spring Boot,我会 Spring Cloud,我就可以压你一头,就像你高数 95 分,我拿了 100 分那样。
我想说,这个观点是片面的,技术固然是重要的,但业务也同等重要。
在软件开发中,经常会遇到一些比较奇葩的需求,就像当初在刷 ACM 的特殊样例那样。
比如你去一家饭馆点餐,你认为的点餐流程:
顾客:老板,来碗蛋炒饭!
老板:好咧!马上做!
其实真实的场景:
顾客:老板,来碗蛋炒饭,不要蛋!
老板:???
或者是这样的:
顾客:老板,来碗蛋炒饭,不要饭!
老板:????
就好比脱口秀里说的,顾客走进早餐店:
顾客:老板,给我来一个亿的包子!
老板:内容超限!
或者
顾客:老板,给我来1.777777个的包子!
老板:精度不足!
或者
顾客:老板,给我来5个的包子,不要肉!
老板:我蓝屏给你看!
在软件开发过程中,有很多不切实际的需求,比如我经常遇到的以下几点。
- 包含主观性因素
- 硬件/网络设备不支持
- 第三方依赖不支持
第一点很好理解,主观性因素,也就是看心情。
我今天心情好,这个变量你给我赋值1;明天我心情不好,这个变量你给我赋值0.
开发者: ?
第二点就是硬件支持不足
如我要在你系统中存放 100T 的文件,能不能放?(服务器硬盘50G)
开发者: ?
兄弟,你做的系统加载为什么这么慢?(1M的服务器…)
开发者: ?
第三点就是第三方依赖不支持
最常见的就是调取钉钉/企业微信的接口,领导想实现的业务,接口不支持,你做不出来甲方还怪你…
就好比甲方说,我要做个系统,点击按钮之后,要让我的支付宝收款100,你能做吗?
开发者: ?
7、非标的重要性
最近几年,软件技术迭代也是非常的快,各个领域都有比较成熟的框架。
比如你要实现消息队列,无需自己去写,只要引用 RabbitMQ / Kafka 即可。
比如你要做个搜索引擎,无需自己去写,只要引用 ElasticSearch 即可。
比如你要做个缓存,无需自己去写,只要引用 Redis 即可。
你会发现,标准化的需求,强者都做出来了,而且做的很好。
那么,我们还有存在空间吗?
答案当然是有的,那就是两个字 —— 非标!
什么是非标,那就是非标准化,简而言之就是不是标准化的需求。
通常对于企业来讲,对于 A 企业来说,某个政策是对的,但是对于 B 企业来说,简直就是谬论。
不同的公司,有着不同的需求,这就产生了大量的非标需求。
这些非标需求,通用的 Sass 产品通常不能满足,这就需要广大开发者去开发了。
但是话说回来,你能理解公司的需求吗?你会开发吗?
这就关系到你的两个能力,一个就是技术,另外一个就是业务。
8、总结
总而言之,我想说明的有两点:
- 对于软件开发者来说,业务和技术同等重要,缺一不可。
- 在学习标准化技术的同时,也要关注非标需求。
谢谢大家!
活动地址:毕业季·进击的技术er
版权声明:本文为博主作者:Designer 小郑原创文章,版权归属原作者,如果侵权,请联系我们删除!
原文链接:https://blog.csdn.net/qq_41464123/article/details/125541118