期望本科生的起薪都没有公司要...

大家好,我是对白。

有多少人想过程序员生涯该如何走得更远这个问题?在工作了一年多后,我总结了三点感悟:一是写代码不要长时间依赖Google,不要认为功能跑起来没错就行了,要主动去记忆一些技术点;二是要尽可能多写一些有价值的代码,简单重复性的代码最好少写;三是主动学新技术,看新论文,增加自己在程序员这个圈子里的核心竞争力。

为了让大家思考的更多,下面就给大家分享一位做了4年的程序员,今年却失业的故事期望本科生的起薪都没有公司要,确实有他自身的一些问题,下面让我们一起听听他的经历,以下为原文。

作者:看天问地 | 编辑:对白的算法屋

https://zhuanlan.zhihu.com/p/507421427

2022年,我彻底失业了。在面试了10多家单位后,居然没有一个人给offer,为此对自己做出了反思。

首先总结一下面试,第一点我真的太不会表达了,十多年的技术生涯,使我欠缺交流的机会。第二点我的技术真的很菜,我做了4年的程序员,1年的前端,3年c#,这样听起来好像应该是一个经验丰富的程序员了。应该是在市场上很吃香。我当时也是这么天真地认为的。

为什么会到今天这个地步呢。4年程序员生涯,面试的时候我要求的待遇一降再降,从9k-10k。在从8.5k-10k,再从7-8k。这是在广州呢。7-8k不就顶一个本科生刚毕业的新手吗。为什么连这个数都没有企业愿意给呢?我越面试越没有信心,首先我要深刻地反思自己。

原因如下:首先我技术真的菜,不要因为3年时间就能拿高工资,你不追求技术进步,可能十年工资还是一样的。甚至还要贬值。3年间,我基本上班摸鱼,没什么任务给自己锻炼,身处其中的时候觉得挺好的,殊不知这是一个巨大的危机,以为自己碰上了一个好领导,殊不知严厉的领导才能督促你的技术进步。对于技术的理解只是达到能完成公司的任务是远远不够的。但是我当时天真的就是按照这个最低的标准进行的。写代码就是靠百度。功能跑起来没错就行了。从来不会去思考或者去主动记忆一些技术。然而我这三年就是这么过来的。一个混子程序员迟早要遭到报应的。

对于上面的问题。其实我在入职上家公司3个月的时候就已经意识到了。当时想着是不是要跳槽。因为领导总是安排一些我已经会了的功能给我做。就是简单重复机械的工作给我。当时还觉得领导是不是想把我赶走呢。但是由于一些原因我还是留下来了。但是领导还是给我安排这样的工作给我做,我就产生了消极怠工的思想。也就不怎么积极了。然后领导就再也没有安排有价值的任务给我做了。(之前有一段时间有的安排一下能稍微学到点东西的任务给我做)慢慢地我变成了一个混子。对于编程语言产生了遗忘,还不如刚刚学的时候。

现在看来我应该早点离开那家公司就好了,不至于浪费了3年的时光,人也废掉了。因为那家公司就是维护。修bug而已,然后前面程序员留下的代码惨不忍睹的。你无法从阅读代码中学到任何设计模式。而且你还要按照他的写法才能让程序跑起来。我应该在工作半年后走人的。

还有就是自己对于技术的追求只要求能完成工作任务就行。那么领导天天给你安排些简单任务。那你岂不是只有简单的水平了。事实上领导看我没啥进步也确实都安排简单的任务给我做。恶性循环导致自己水平越来越菜。而且还有我那可怜的策略,当时对自己的要求:对于技术只要能完成任务就可以了。一切以任务为导向。现在回过味来,才知道多么的可怕了。我应该以市场为导向的,而且是以更高工资的收入所要求的的对技术的要求和市场常见的技术栈为导向,明确下一份工作方向。直到我现在找工作才知道,我原来的公司技术栈是市场上最窄的技术栈。从那种公司出来,自己的身价不增反而贬值。(个人成分也很大,我在公司做的都是些边角料的开发任务)其实应该多多跳槽的。

总结前面说的。首先在一家公司发现对自己发展不利,要立刻跳槽。不然白白浪费大把的时间。第二对于自己技术的要求要按照市场技术栈为导向和更高工资要求的技术等级为导向。第三从事技术的年限不能决定你的技术高度,你付出的精力才决定了你的技术高度和工资。我做了三年的开发连7,8k都没公司给。其他人做了一年开发他可以到15k。所以大家要出工也要出力。不能自欺欺人。

这30多天的面试算是给我深深地上了一课吧,去掉了所有的不切实际的幻想。面试的失败当然和社会环境(疫情)也有不小的原因,如果你不在年轻了,工作了很多年的开发,水平还是很一般(面试又不会吹牛),那么极有可能会找不到下家公司。我现在体会到了程序员真的是一个高淘汰率的职位。技术不行就会被后来者代替。我还不到30岁,35岁危机就提前到来了。对于技术做不到顶尖的程序员来说,还是早做准备吧。程序员不能干一辈子,程序员职业更多是赢者通吃的格局

然后30岁了。发现有点干不动了。(一到下午就困地不行情绪浮躁,思维混乱,很难集中注意力在工作上,工作10分钟休息半小时)网上说的30多岁身体跟不上是真的。如果加上自己技术一般的话。其实不会多少技术精进的欲望的。30多岁干基层的活真的是干不动的(他需要脑子的灵活和反应快,不需要什么太多智慧技巧,这种年轻人显然更合适)高级的靠智慧的架构管理工作除外,其实应该考虑转型,可以在计算机行业里面,目前我打算做实施。主要脑子反应没有之前快了。做不了机械重复的脑力劳动了,而且想做一做和人打交道的工作,突破一下自己。

以上是对自己的4年程序生涯的总结,兄弟们会看到自己的影子吗。或者会被启发到吗。此文案例真实,希望能帮助大家规避类似错误,找到自己在技术圈的真实定位。

--更新--

谢谢各位兄弟们的评论和点赞,也让我学到了很多.(比如1.面试前花几个月啃技术书一样。2.多面试几家至少20起步。3.自己下班平时多总结技术原理性的东西4.各个公司面试程序员的套路千差万别。5.程序员内卷。6.考老师公务员上岸等)

可能每个人都有自己的路要走,目前自己找了一份实施的工作。薪资9.5左右。(自己还算满意吧,别到时候把我开了就行)。

首先解释一下自己为什么不做初中开发,不是钱不够有有诱惑力,而是高工资下隐藏的是脑力劳动量巨大,加班巨多,要知道人的硬件机能是随着年纪增加而降低。说到编程里面的所谓的技术栈,我也接触过各种前段框架后端框架的真的很多。各种技术h5技术,css3技术,包括现在出的.net core ,webapi等。技术栈在不断的演化发展,公司对于你掌握的技术栈要求会越来越严格,也会越来越新,老的技术栈市场可能没有市场了(也许这是新程序员比老程序员有优势的地方吧,我卷不动了,也觉得技术栈卷的意义不高)。

其实我有反思过这些框架和新技术的意义,曾经我也是一个乐忠于扩充自己技术栈的人,也因此曾经是面试达人。(也许因为自己那时候年轻)基本面一个过一个的。面试滔滔不绝的讲自己对于技术栈的应用理解,各种英文名词的花式堆砌,面试官听得一愣一愣的。但是现在回过头来想一下,我当时对于技术栈的理解是有多么的肤浅。技术栈好比是工具。技术栈掌握的多和深对于面试是有好处的。因为一次简单的面试很难考察到程序员的真正实力(内功,比如用工具解决问题的能力。判断问题分析问题能力,灵活应用技术方案的能力。)更多的考察你有没有相关技术栈,以及对相关技术栈的理解。

把程序员的能力分割成两部分:一部分叫做工程师素养(理科素养,分解解决问题的能力和其他行业工程师一样),一部分叫做技术工具(各种框架,各种语言,各种技术实现方案)。工程师素养好比是内功,技术工具好比是招式。好比一位散打运动员没有绝对的内力训练(爆发力,反应力,体力抗击打能力,腿力,臂力,战术策略训练)而只是学武术套路(螳螂拳,虎鹤双形手等)那么他也打不过几个人。现在的招聘市场更多的在在考察你的技术工具,而忽略了工程师素养,忽略我们不叫码农,不叫程序员,我们叫软件工程师。而又因为招聘市场的需求,是很多程序员投入到了内卷技术栈旋涡中。我的同事中有技术能力比较薄弱(人还可以,社会阅历丰富),公司因为他的写的代码某个项目差点黄了(后面开发主管和老板亲自去项目现场改代码才勉强挽救回来)他写的代码没有任何的对于问题的深入思考,和理解需求,代码字数极大,也不好维护。后来和他联系,他一周就找到工作了而且是12k左右吧。平时和他聊天中我知道他平时学习各种技术栈,http://asp.net,web前段等(他的技术栈很广)。

不得不佩服那位同事,他的社会阅历,就业市场的洞察力,谈判能力真心的高。其实反映了招聘市场对于技术工具要求比较高。对于工程师素养反而不太重视。市场有需求就会供应者。其实周围的程序员朋友都在卷技术栈,卷框架,卷技术方案,甚至设计模式都要卷(刻意的去使用)要不就是死命加班拼自己对业务逻辑的熟悉程度。

引出一下我对于框架,技术方案的理解上了。框架,技术方案只是工具,我甚至都发现他们相互抄袭了(当然你也可以说他按照软件约定俗称的规范写的)很多框架会很雷同,很多技术方案也很雷同(最明显的c#和java)我曾经面试过一个上机位软件工程师的工作,技术面试官和我说他们项目基本很多设计模式都用上了。对此我产生一丝怀疑,首先如果他在公司呆了很长时间是这个有可能,对于业务熟悉了,提炼除了业务的一般化的模式,模式的模式,用设计模式封装起来了,让代码更好维护和功能扩充。但是这需要他特别的刻苦努力。第二种如果他在公司呆的时间不长,对于业务问题都没有一个清晰的认知和见解。那我怀疑他是为了设计模式而设计模式(属于画蛇添足)。抛开这两种假设不说,首先他们公司是做医疗硬件的。用到的软件更多的上机位软件,大概比上机位开发难一点,比mes简单一点。总体难度不会很高。哪里会用到那么多设计模式呢。设计模式应该在合适的地方用吧。且据我对于程序员工作的了解,如果一个设计模式是灵丹妙药的话,能让软件系统趋向于有序,我们能优雅的喝着咖啡编程。为什么网上那么多程序员抱怨加班,bug改了又改,各种扯皮。(总之是不成熟的,混乱的),说明行业内大部分程序员对于设计模式应用和认识水平一般,以及设计模式本身不是软件危机的好的解决方案。

总结上文,技术工具在特定的问题,特定的环境中用吧。然后人人都说程序员需要不断的学习。很认同,但是我们要学习什么呢,学习给我们带来的意义是什么?上面已经说了大部分程序员在卷技术栈。但是这些技术栈真的有意义吗?(我承认他真的很有钱途,但是需要可能会需要你想追星一样追技术栈吧)这些技术栈的学习真的对于提高我们解决问题的能力,分析问题的能力真的有帮助吗?(上文说了我也曾经比较乐忠于学习各种技术栈,以为学会了自己就是高级程序员了,但自己在游戏公司的经历狠狠打脸了自己这种想法。面试很轻松进去的。但是进去了之后发现自己那点解决问题的能力,考虑问题的周全度,应对需求更改变化的能力十分的糟糕,当时感觉做开发太痛苦了,bug永远修不完。这个bug修复了,那个bug又起来了,招我进来的主管讽刺道你不是会游戏开发吗?怎么这个鸟样,当时我的尴尬呀。) 程序员难道不是对于数据结构,算法,计算机操作系统,以及他背后的线性代数,组合数学,高等数学,概率论等计算机基础理论吗?我们卷的东西不应该是对于我们人生和生活利益最大化的东西吗。

因为自己认知,所以我三年的时间在卷,数据结构算法,计算机操作系统,线性代数,离散数学,高等数学,概率论,数据库原理,软件工程的这些。(我承认自己懒惰于对技术栈学习,但是并不是评论区朋友说的那种懒惰)因为我想提高自己内功,不想进去被人怼,被人怂自己技术能力,事实上3年时间,我没有被人怼过,甚至领导解决不了的问题我都能够解决,给我分的技术领域我也是独挡一面。我是一个百度型程序员,大家不要见笑我。上文的没有深挖技术,和学习技术栈是存在的。但是也有特殊情况,首先我们公司技术栈很多只要会c#,sqlserver就行了。技术工具并不多。然后很多时候我会把解决问题当成是解题。数学以及一些算法的方法给了我非常大的启发。所以我才会说设计模式不要刻意的使用。每个阶段有每个阶段的代码。等你把你的业务流程认识深刻了,以及业务流程还有多少优化空间这些认识深刻了,在考虑设计模式那些的。就像解数学题一样。分为1.用合理的数学模型去描述问题。2.分析问题。3.解决问题。第一步的非常容易被很多人忽略。但这往往是非常关键一步。不同的问题描述角度带来的求解难度是不同的。比如用微积分计算长方形面积,和用初等数学计算长方形面积,显然这个问题初等数学解决起来更好。(亦或者是有些题目只有一个问题描述角度才能把问题求解出来)同理,写代码也是一样的,分析和描述业务模型,用哪种数据结构或者api对应还蛮重要的。设计模式需要慢慢来,否则画虎不成反类犬。3年时间我也解决过很多领导解决不了的问题的。(原因在思维方式,可能很多程序员敲多了代码之后忘记了自己在大学里面学的数学知识吧,敲代码和原来数学知识联系不紧密,导致有些问题不能解决,我领导就是这样的,他只会站在程序员和业务角度常规思维角度。跳不出来,当然遇到需要跳出程序员角度的特殊的问题就不行了,这种问题反而是我很拿手的)我解决的问题是特定环境下的问题,问题普遍性很低,而且较少遇到。领导技术能力是比较稳妥均衡。且他能解决的问题普遍性高。巧妙性是低了点,但是可靠。

在接着说下百度型程序员这个话题吧。听了这个名词大家是不是觉得太low。确实low,遇到问题总是百度。但是他也在节省你大脑中的内存空间,知乎里面有篇文章叫外脑计划,其实我很认同他,就是把编程知识分门别类的码放。放到有道云笔记。或者自己文件系统,然后建立索引。遇到问题我们去检索问题的关键词。百度就是外脑一样。把一些静态知识存储到网络的各个角落中。我们大脑负责组织这些静态知识信息变成解决某个问题的解决方案。我自己在工作中方法大概是这样供大家参考分析:首先我不研究具体的技术问题。不会做完一个项目之后写一篇技术博客(这样不好大家不要学),但是研究数学结构算法蛮多的,所以我的做法是遇到不懂的技术知识百度。然后遇到不好百度出来的知识,我会做推理分析,会用到命题判断,谓词判断,比如是存在还是所有,锁定范围关系,找到他的百度搜索关键词,或者直接举一反三不查自明会了。然后就是分析问题和场景内的业务逻辑,把静态知识拼合成问题解决方案,分析一下各个解决方案的好坏,评价出最高性价比的解决方案,性价比的评价角度是:自己如何能少干活,最快的把活干完这些,太懒了。然后时候也会做复盘。总结他是哪一类问题,之前遇到过吗以便下次遇到迅速检索调用,或做成代码模板的形式,遇到类似问题改改。

或者每个程序员工作的方式不一样吧,白猫黑猫能抓到老鼠就是好猫,不一定非要技术栈那么广,对api,技术理解那么深。才能解决问题的。我可以用最少的技术知识去解决问题。(但是一定场景下,特定公司下)能做到这一点是因为数据结构和数学功底的提高。因为数学题目给的条件(可以类比静态技术知识)极少的。然后却要让你去解决一个题目(类似工作中解决工作问题)大量的这种数学训练会使你在已知技术知识不多的情况下,运用数学思维(不能说出具体那个数学知识点,更多是启发,和解题训练的良好思维习惯正向作用)巧妙的解决问题。做题好比是解决工作问题的演练,他的思维过程很类似的,甚至解数学题的技巧需要更高。而且这种解决问题的能力能够推广到自己生活中,人生中。他可能不会让你大有前途,但是你在生活中运用这种能力,你能感受到他给你带来的种种好处。这也是我非常支持学习技术内功的原因。

总之计算机功底我还会坚持学习提高上去。尽管已经做了实施,同样的需要解决问题,分析问题和良好的思维习惯。同样也提醒大家在卷技术栈的同时,也可以回想一下大学数学知识,数据结构算法知识,他们挺难的,挺废时间的,但是收获也会很大的。是对解决工作问题思考过程的演习(希望大家不要像我一样保持不好其中的平衡)

最后欢迎大家关注我的微信公众号:对白的算法屋(duibainotes),跟踪NLP、推荐系统和对比学习等机器学习领域前沿,日常还会分享我的创业心得和人生感悟。想进一步交流的同学也可以通过公众号加我的微信,和我一同探讨技术问题,谢谢!

本文来自投稿,不代表重蔚自留地立场,如若转载,请注明出处https://www.cwhello.com/36231.html

如有侵犯您的合法权益请发邮件951076433@qq.com联系删除

(0)
程序员对白程序员对白订阅用户
上一篇 2022年5月17日 21:22
下一篇 2022年5月17日 21:25

相关推荐

联系我们

QQ:951076433

在线咨询:点击这里给我发消息邮件:951076433@qq.com工作时间:周一至周五,9:30-18:30,节假日休息