提纲
0.计算机与科学的关系
1.程序员是干什么的
2.程序员这个职业与计算机科学的关系
3.程序员是白领还是蓝领
4.程序员与当代大学生的较量
5.程序员与培训机构的博弈
6.为什么我还坚持当一个程序员
7.你要不要来当程序员
正文
这几天心情烦闷,压抑的很,今天本来打算写点技术的东西,
但是手上没有现成的材料,需要准备几天才行,所以还打算写
一个类似于科普的东西,也是我的一个从业经验的总结吧.提
前声明,这篇帖子绝对不是chatGPT生成的,因为这篇帖子具
有相当的文学性.
最近投简历,面试搞得我很疲劳,虽然大部分都是未读,甚至是已读
不回,让人很焦灼,等到真得有了面试机会,也是精神紧张,面试
上了,去入职,也总在瞻前顾后的担心是否能够胜任工作内容.
所以,这段事件,真是焦灼的生活,写点东西,也算是放松放松心情
了.接下来工作如果还是定不了,还是找不到,我就必须另
作打算了,还没想好,不过也总得是要想个方案出来的.
今天不打算写台长了,太长了没人看,虽然我很喜欢长篇大论
确实是真的,不过这种科普的以写的通俗易懂为重.
零-计算机与科学的关系
最早的时候,大学里有一个系别,应该是叫计算机系,现
在不同的大学可能有别的名字,这个系别里面又可能有一个
专业的名字叫做"计算机科学与技术",这个专业现在还有,同
时也存在很多细分的专业,比如"软件工程"专业,"信息安全
专业"等等,有很多.
这些其实都算是计算机类的专业,学的科目大相径庭,多少都会
有那几本计算机的核心课程.
现在我想讨论的主题是"计算机与科学的关系",其实就是
想讨论计算机为什么是一个科学学科,以及为什么一般大众
都认为计算机就是"打字快"和"修电脑",以及还有一个问
题就是,科班程序员和非科班程序员的关系.
首先是为什么计算机是一门科学,计算机来西方,最早的电子
工业也来自西方,看过计算机史的读者因该都知道,最早的计
算机就是纯粹的数值计算器,功能单一,几乎仅用于科研.
然后因为计算效率的提升,在科研中的应用越来越多,成为了一
种极其基础的科研工具,虽然它最早的时候仅用于科学计算
,但是后来应用越来越广泛,渗透到了各个领域.
而计算机的发展确实会影响到各个的应用场景的发展,所以老
外就搞了单独的学科出来,专门研究计算机,研究它的组成,
架构,原理,以及各个方面,比如大家都熟悉的现代计算机的结
构来源于一个科学家,也就是冯诺依曼,因为他定义了现代计算
机的基础架构.
现代计算机如果严谨的来说的话,应该叫做冯诺依曼计算机.
这就是计算机的研究对象其实是计算机本身,至于大家为什
么一想到学计算机的就会认为他是"修电脑"的,我能想到的
一个原因,可能是因为,大家都把计算机当作一个"家用电器"
而不是"科研设备".
比如你学物理的,研究粒子的,"粒子对撞机"对吧,是有这么个
东西,那么你的朋友可能觉得你会很厉害,因为他们没见过对撞机.
你如果跟你朋友说你学的是计算机,他们可能觉得你学的是"计
算器"类似的东西,因为这个东西大家都见过,就不觉得神奇.
而且计算机这个东西不是一个硬件这么简单,不同的架构软件不互
通,比如x86架构的计算机系统,和arm架构的是不同的,如果想
在计算机领域创新,做一套东西,那么硬件可以做出来,那么很可
能以前的软件就全不能用了,虽然说可以重新编译,不过还有操
作系统这一关,如果用微软的系统,那么还是老外的东西,用linux
二次开发,也不能算全部国产,如果抛弃这两样,编译出来的软件
就没有了运行环境,还是不行.
所以国产化是很难做的.
所以大学生在学校学的专业,是"计算机科学与技术"相关
的课程,核心课程包括,微积分,离散数学,线性代数,计算
机组成原理,数据结构与算法,计算机网络,计算机操作系
统,大概就是这几门课.
有的学校还有汇编,还有人工智能,编译原理,等课程,不过
核心的就上面这几门.
最重要的是这几门课程学完了,基本可以理解计算机是个什
么东西了,但是这还不足以让你成为一名程序员,因为在大
学里学完之后,同学门还只是学院派.
所以这个时候就有很多培训公司来钻空子,就会告诉你来我这培
训,学习完可以高薪就业等等.
为什么存在这样的问题呢,为什么学校学习完之后,根本成不了
程序员呢?原因我想了很久,其实可以参考社会上软件研发
培训机构的课程,以及学校里教的课程就可以得出一个结论了.
这个结论就是,打个比方,你要造火箭,火箭的理论及都学会
了,现在毕业了,要去找工作,结果找到的是在造火箭的部
门负责电焊的工作.
那么学校学的就是火箭的底层原理,而培训班教的就是电焊,
那么有人会问,为什么不直接学电焊呢?原因是认为,电焊
是需要图纸的,大部分情况下,在软件的研发过程种没有
人会给你现成的图纸.
你需要自己去画自己的软件的设计图,然后用电焊给焊接
起来,这个时候如果你只懂电焊,不懂设计,那么八成是做
不好这个工作的.
最重要的原因,补习班不能教原理,因为节奏太慢,他没办法教
会你,大部分计算机的课程比较难,比较枯燥,同时学习的时
间会非常长,没办法在短期的比如三个月里,让你实现就业.
同时如果你发现你根本无法理解你学的东西,补习班的口碑就会严
重下降,再者,补习班的老师其实很多根本不懂原理,他自己都
没有本科毕业的居多,更别说真正有水准的老师了.
那么学校是否可以教电焊,同时教理论呢,这样也不行,因
为市面上的技术,一波一波的,没有严格的标准,今天流
行react,明天流行vue,而大学课程是不可能变化如此之快的.
所以对于想当程序员的同学,必须做好一个随机应变的准备
,必须准备,从学校开始,就要追着最时髦的技术才行.
其实也存在大学教育和就业环境不匹配的一个情况,不过我
认为这都是能够克服的,有心人,不会让自己毕业就
失业这是肯定的.
一程序员是干什么的
最简单的理解,就是写程序的那个人其实就可以说是程序员,所
以首先要理解什么是程序.
对一个非专业人士来说,你可以说软件无处不在,只要你拿出
来手机,你手机里的屏幕里的所有的东西,就都可以说是
程序,当然数据也算是程序的一部分,毕竟程序=算法+数据结构嘛.
所以程序员就是,让你的硬件,比如手机,智能电视,发挥出最
大作用的一种看不见的机器.
所以程序有时候又被叫做软件,而软件是比程序更大一点
的概念,比如软件来包含一些图像素材,声音素材等等.
所以放到职场上,程序员其实就是写程序的那个人,写代
码的那个人,也可以说是计算机软件手工从业者.
二程序员这个职业与计算机科学的关系
首先如果想成为优秀的程序员,就必须对计算机相关理论
非常了解,这样你才能写出好的程序,精致的程序,美丽
的程序,纯粹的程序.
可能我的理解比较不同,比如很明显的是,有些手机的a
pp,bug就很多,甚至闪退,有些就运行良好,这就是软
件编写者的素质的问题.
所以一个好的程序员,不一定说他是要科班出身,不一定
要大学就学的这个,但是计算机科学的相关知识,至少那几
个重点的科目,是必须要懂的,如果不懂这些知识,八
成是写不出好软件的.
这就是程序员和计算机科学的关系,从另一个角度来说,
比如你说我是写前端的,我就写个业面,调用接口,然后按
钮点击一下没了,那么我是否和计算机科学有关系呢.
答案是肯定的,为啥呢?因为你写的网页还是运行在
浏览器上的,而浏览器运行在计算机上,所以如果你不
懂,写一些复杂的动效,一些复杂的网页,就会有一些问题.
典型的就是卡顿的问题了,不再多说.
三程序员是白领还是蓝领
其实白领,蓝领,甚至金领,都是舶来词,详细的可以去找百科
看一下,一般白领是指上过大学,国外就是至少读过college的,
在办公室工作的人,叫做白领.
蓝领其实就是指工人,从事户外劳动,使用各种大型的机械,
等等.
这么说来,其实程序员应该算是白领,但是呢,加拿大的地方规
定是,程序员其实属于蓝领,或者说是新蓝领.
原因是啥呢?,其实它和修车,没啥区别,你再修改一个bug
的过程,思维上是不是和修车,修机械很像.
所以加拿大这边把程序员定位蓝领,所以只要上一个college,
就可以去做程序员的工作,在国内就相当于大专院校,其次就是,
其实培训班培训一下,也是可以应付部分的研发业务的.
其实不用把软件研发想的太严肃,毕竟和真正的搞科研还
是不同的.方案是很灵活的.
所以说到最后,程序员是白领还是蓝领,或者别的颜色
的领子,大家就自己斟酌吧.
四程序员与当代大学生的较量
以往程序员都和高薪挂钩,原因无非是某些独角兽公司,
创业明星公司等等给造成的幻象.
其实比如一些工业软件,ERP,还有很多行业软件的研发工
作,跟互联网公司的工作不太一样.
互联网的薪水高,因为行业原因,而不是因为他们在做软件研
发所以薪水高,所以得搞清楚,互联网是互联网
,软件研发是软件研发.
你在研发的软件不一定是互联网产品,所以薪水也是不同的.
最重要的是,随着互联网行业的发展,逐渐的热度也下降了
一些,高薪肯定还存在,不过可能也是天花板才可能拿到高薪.
如果不是天才少年,还是一步一个脚印的努力吧,做一件实
际一点的事情还是比较好的.
所以刚毕业的大学生,找一个一般的研发工作,还是没问题的,不
过就目前来看,问题不是大学生,也不是程序员.
而是程序员不能干到退休,跟国外情况还不一样,如果你在日本
,程序员你是一直能作的,国内就不行了.
不过也不用着急,因为国内任何行业几乎都是如此,毕竟还是处在
一个人口红利的末尾的,以后会怎样,那也就无法预知了
,还是要过好当下.
五程序员与培训机构的博弈
培训机构,也就是可以把一个门外汉,三个月之内变成一个
可以上岗的程序员的这么一个神奇的机构.
它本身存在具有合理性,尤其是在程序员被高薪鼓吹起来之后,
很多人都要转过来,所谓三百六十行,行行转程序员,所以培
训机构的生意也就好了.
不过我的观察是,培训机构生意现在也惨淡了,回头我可
以去做一个调查,看一下生源情况如何.
培训机构的存在以及课程,其实对市场是有好处的,其中
最大的问题,不在于培训机构的授课情况,而在于培训机构
教学生"包装简历"以及"面试话术"的这种情况.
这两种问题,导致了一个更大的问题,那就是市场上的人
才并没有变多,而是"假简历"的骗子变多了.
首先简历只有名字是真的,电话号码是真的,其他全假的,
HR得看清楚才行,否则白费功夫.
这其实对市场好处不大.
六为什么我还坚持当一个程序员
因为我只会做这一份工作呀,其他的虽然接触过,但是毕竟离专
业差的还很远,最重要的是,我现在对这个工作还有一点兴趣.
另外就是,现在做程序员,需要换一种思路才行,不能老巴望着去
公司做程序员了,公司不要你了,你也依然可以继续做程序员
,比如现在流行的"数字游民"对不对,只要掌握了这个技
能,其实可以做的事情还是有很多的.
不能局限在,我必须在公司工作,这种思维里,当然追求稳定
是肯定是大家都想要的,这个完全没问题.
我这里也只是提出一个设想而已.
七你要不要来当程序员
如果有谁想学研发,可以来找我,真的,我其实很乐意分想
我的一些方法,一些理念等等,帮助大家去成为一个更好的
程序员,或者更好的一个开发者,这份工作我认为现在来看
,还是很不错的.
具有挑战,乐趣,并且具有创造性,虽然说不上去改变世界之类
的,但是能够在工作中拥有一些积极的东西在里面,
是很难得的.
总的来说,我还是很喜欢,并且享受这份工作的.