软件工程师的进阶:从入行到初级工程师
“屋顶的闪闪星光”这个IP专注软件技术人员的就业指导、职业发展,欢迎大家私信交流具体问题。
软件工程师个人水平基本可以划分为四个段位:入行、初级工程师、高级工程师、领域技术专家。今天讲入行到初级工程师这个阶段。
不管是计算机类专业科班毕业,还是其它专业跨行转过来之后上了几个月的培训班,对行业有了初步的了解,经过了基础的专业知识培训,并决定在这个行业发展,我就认为算是“入行”了。
从“入行”到“初级工程师”这个转变,核心在于两点:刷面试能力接到更多offer、选择一个更好的offer。
先说说如何刷面试能力。
因为业务的缘故,团队招聘门槛从原来的非985/211不要,降到了只看技能,所以我收到了一些带着“特殊味道”的简历:简历一打开,就是年龄、地域、XX年工作经验,接下来是公司、项目方面的履历,拖上几次滑到底部,在一个不起眼的角落里才能看到毕业的学校、学历、专业、时间。
无他,基本都是学校、学历差,非科班出身,工作经验少。所以,这些候选人大概是从培训班老师那里学了一些简历包装的技巧,把工作经验从培训班里开始做项目算,把学校、专业、学历这些弱项放到最不起眼的位置。
刚开始我对这种简历挺反感的,为啥不把关键信息放到最前面。后来看得多了,发现不是个例,思考了一下,就理解了,大概是想避免在筛选简历那一关就被刷掉,毕竟往后闯一关,通过率就高一点。再者说,大家都这么干,你不这样你就吃亏。
这些技巧有用么?可能有用,也可能会引起反感而被刷掉,我见的基数不够多,这里不发表过多的意见。不过,终归这些只是“术”,最多是临到要参加面试的时候,一些小技巧而已。今天我们重点聊一聊“道”。
无论简历如何包装,走到技术面时,面试官一般都是是公司的基础骨干或者技术团队TL,所有的“术”起到的作用都会消失,需要真刀实枪地谈技术。所以说,只要我们的技术是突出的,简历是有亮点的,可以秒杀到各种各样的技巧,所谓“一力降十会”。
真正的面试能力,是技术的强悍,而不是那些简历包装技巧、语言表达技巧、衣饰着装之类表面上的东西。
真正的面试能力,最重要的是这几方面:技术基础、实践能力、技术热情、沟通能力,需要长达2、3年的训练才能保证我们顺利到offer。因此建议大家,如何打算毕业之后找工作,那么至少从大二就要开始准备。
第一个是技术基础。
这点相对来很容易说清楚,大家都知道的那些计算机类专业课程,计算机网络、操作系统、微机原理、算法和数据结构等等。但一般大家不知道的是如何破解这些学习起来枯燥无比,让人十分头疼的东西,那就是先学编程、做项目,直接从编程语言的视角为切入点,当有了一定的实践,对计算机世界的思维模型有了一定理解之后,再返回去学习这些基础课程就会轻松得多。
第二个是实践能力。
这条路径也很清晰,就是不断地编程,不管是Java、H5还是iOS/Android,从练习基础语法、API使用开始,到做小demo、小项目、大项目。当毕业时能积累大几万行Coding量的时候,实践能力自然就上来了。
一般来说,这个阶段最需要的就是无脑的吸收知识和练习,所谓“键盘敲烂、月薪过万”真的很有道理。
有学习能力很强的人,自己可以通过查找资料自学入门,完成软件基本知识体系的构建,但要相信,这种永远是少数,周围的你、我、他都不是。所以这里给出一个更快捷的建议就是报某个方向的培训班,跟着培训班的节奏走。
就像我自己用了2个小时就把Scratch摸了八九不离十,但依然要给孩子报培训班一样,培训班提供的最有价值的东西,是与市场接轨的体系化知识框架,这个可以让我们不走弯路,更高效地完成入门过程。那里的老师对批量化标准化生产也更有自己的心得经验,毕竟他们的工作就是干这事。
当然,如果对自己的自学能力非常有自信,或者经济比较紧张,也有个取巧的办法:把所有主流培训班的相关课程目录拉下来,自己按目录去B站找免费课程上。
不管是为了工作,还是为了兴趣,甚至是为了当上光荣的996码农,一个人能硬头头皮把入门的知识系统化地啃下来,积累上大几万的代码量,碰到新的语言特性、技术知识点愿意去研究,搞明白为什么,基本上也就具备了我所说的第三点“技术热情”了。
毕竟,真正对技术产生“发自本能的热情”的人太少了,即使有,也会在每天枯燥的练习中消磨干净。
第四个是沟通能力。
这里不是指的一个人性格开朗、能说会道,而是能够简明、清晰、用词合理地把一件事情讲明白。我日常工作中跟别人聊工作,就从这些地方来简单地判断一个人是否足够专业。
所以,这里的沟通能力与个人的性格没有太大相关性,有的人可能很沉闷,但聊起工作来头头是道、清清楚楚,有的人可能很活跃,聊起工作来散乱无章、抓不住重点。
内向的同学大哥不必灰心。
讲到这里,聊一聊关于是否需要上培训班的问题。
当初在决策是否要给儿子报Scratch培训班时,我花了2个小时就把Scratch那些基本能力摸透了,又在B站上面找了些教学视频看了看,然后决定给他报了培训班。因为我一没有足够的时间教他,唯一的周末更想跟他快乐地玩一玩;二是对于小孩子如何学习、入门这件事,我没有老师专业。
软件工类专业的学习,培训班老师的专业度都不在于软件工程的开发,毕竟他们中间真正有长时间复杂软件工程开发经验的人并不多。他们真正专业是在于教学,即,把一个人从完全不懂到引领入门。
通常来说,一个一流大学的学生,通过跟着学校老师上课外加课外的自学练习,是可以做到软件开发入门的。但这样优秀自学能力的人并不多,更何况,还有大量跨专业转行软件开发的人,这些年轻人并没有接受学校科班教育的机会。
综合来看,培训班解决了几个问题:
1、让非计算机专业科班毕业的人,跨专业、跨行业转过来的人多了一个从0到1入门软件开发的路子。
2、有比较贴合市场的课程体系,解决了学校课程多年不更新,跟不上企业需求的问题。我看过一些培训班的Java、H5等培训课程,都是使用了当前比较流行的框架,学生通过对这些框架的学习、掌握之后,拼起来一个中、小规模的项目并不难。基本可以做到进入中、小企业之后直接上手。
3、与学校的通才教育不同,培训班更多是“面向就业”的教育,目标是为了学生更好的就业,会在编程这样的职业技能上下功夫。而是,正是要找工作的年轻人所缺的,而学校教育却不重视的。
如果经济上没有问题的话,我是建议那些在自学能力上信心不足的人去上一上培训班的。
上面聊了聊如何刷自己的面试能力,以拿到更多的offer,接下来聊聊如何选择一个更好的offer。
就我自己观察来说,进入这个行业的人还是以普通家庭出身的年轻人为主。毕竟,软件工程师这份职业,至少在名誉上,已经从十几年前的高新技术人员成了人人喊打的996码农。
普通家庭出身的年轻人刚入行时的基本特点是:啥也不懂,需要自立,很穷。既需要通过一份工作来养活自己,但自身技术水平一穷二白,在市场并无任何的谈判能力,所以需要边工作边学习,提升自己的生存能力。
所以,我们尽量在第一份工作时找一个稳定性的好平台,只有在这样的环境下,才会有2、3年时间让我们可以在一个领域内做到高级工程师。等到那时,自身有了在市场上独立生存的基础,在待遇上有了更多的谈判空间,也会培养出自己对行业的正确认知。
如果这段时间工作不稳定,会出现什么情况呢?
我之前经历过一家做社交网站的公司,美国上市之后,第二年在校招时凭着超出百度、阿里、腾讯这些头部公司一大截的薪水招进来几百名名校应届生。一年多之后,业务发展不及预期,这些毕业几个月的应届生成了裁员的重点关注对象,走了一大批。
要知道,即使是名校生,即使才毕业几个月,去市场上找工作那也得按社招的规矩来啊。工作经验全无,一下子从家人朋友羡慕的对象变成了招聘市场的底层。
那么,怎样的公司才是最合适的目标呢?我觉得有几个关键词:地域、待遇好、业务复杂、体量大、团队技术氛围浓厚。
当然,上面这些,作为一个应届生不一定能够完全识别,在无法获得有效信息去决策的时候,那也可以抽取出一条最简单粗暴的逻辑:公司越大越好。
接下来详细聊聊这几点。
先说说地域的影响。
之所以把它放在第一位,是因为我觉得这个对年轻人的长远发展来说,地域的影响应该是要被放在第一位的。
至今仍然记得,十年前我在北京时,周围最多的方言是东北话。为什么?一个地方经济下滑时,无法给当地老百姓带来高质量的就业,那就会有大量的人才外流,而北京是离东北最近的大都市圈。
想一想中国有多少只剩下老幼妇孺的村子,年轻为什么要跑到城里去打工?无他,求一份安稳的收入可以养家糊口而已。
对软件工程师来说,在北、上、深这类IT领域一线水平的城市,杭州这类IT领域1.5线水平的城市,成都、西安、武汉这类IT领域2线水平城市,可以获得的offer数量、薪资待遇、发展空间是数量级的差异。随便找个招聘网站,搜索一下职位信息,就可以轻易地比较出来结论。
另外,我曾经写过一个关于2020年全国20多所名校、各省头部双非学校的毕业生就业分析报告,其中一个最明显的趋势就是全中国所有大学生都在涌入长三角、大湾区,甚至北京都开始掉队。
我们个人的职业发展不仅要靠自我奋斗,也要考虑历史进程。
几大都市圈对全国人才的虹吸已经势头越来越猛,作为家里没有资源没有背景的普通家庭出身的年轻人,最好的选择就是奔往机会更多的地方,用自己的聪明才智和汗水去博一个明天。
等到工作十年,成为某个领域内的技术专家之后,具备了极强的市场谈判能力,即使还想回到家乡,那时也可以用自己实力找一个更好的坑。
再说说待遇好的重要性。
刚入行时,技术上的积累一穷二白,尤其是应届生,一点积蓄也无,一份待遇好的工作可以让我们避免因为穷而对日常生活中的各种问题疲于应付,从而把更多精力放到工作中去。
我毕业之后第一份工作是家小公司,每月的工资除了吃饭,只够我租个城中村中最便宜的单间。每到晚上,工地施工、左边邻居吵架,右边邻居XXOO,楼顶上的父母大半夜骂孩子,严重影响睡眠质量。周末去图书馆看到本不错的书,一看价格几十块,摸摸钱包就走开了。
生活的贫穷会让人陷入到泥潭中,无法全身心地投入到学习、工作中去。
这里也劝大家,刚毕业时,只要能够温饱,尽量让自己睡得好一些,多花钱买学习资料,只要过了这最初的2、3年,跳一次槽,工资double一下就什么都有了。
接下来说说业务复杂、体量大的好处。
关于软件工程师的成长,我一直有一个观点,一个人的成长速度和最终的上限取决于他需要解决的问题的复杂度和数量。
其它客观条件没什么本质差别的情况下,你愿意做一个在业界最顶级的公司,每天解决最前沿问题的人,还是愿意公司让你每隔几个月就换一个项目,质量要求全无,只要run就好,功能简单无比,日常只做CRUD?
所以,我们最理想的去处是业务、产品线都复杂无比的大公司,去跟最优秀的工程师在一个团队中合作,学习他们的一切。并且,还可以见识到丰富多元的业务、产品,拓展自己的视野。
当然,所有人都想进大厂,所有的顶级大厂加起来,一年也就才招几万人,有没有退而求其次的选择呢?
有!一些细分领域的头部公司也算不错的选择。巨头做的业务一定是有巨大的空间,才值得他们花资源投入,因为巨头的各种成本太高了,一个普普通通的工程师,每年的成本可能都会有1、2百万。如果去做一个市场空间几十亿、几百亿的业务,财务上根本算不平。
就是在这种巨头进入不划算的领域中,存在着各种事实上垄断的中小公司。比如,各行业各业的企业软件服务市场。而且,这样的公司往往现金流充足、利润率高,团队稳定、技术氛围相对不错。
当然,无论是公司还是应届者,大家都不傻,所以这样的公司在招人时相对标准也会高一点,如果我们进不去怎么办?
那就找一些研发团队有技术大牛镇场子的中小公司。网上对大厂出身的人有各种攻击,但稍微理性一些的人都会很清楚,我们对一个团队具体水平无法判断的时候,大厂背景会让这个团队靠谱的概率高上太多。
以上的选择顺序,其实透露出来我们的核心决策逻辑:公司中对我们个人技术成长影响最大的就是我们所在技术团队的技术氛围,其它的都可以在我们自身条件不足的情况下战略性放弃。
#牛客在线求职答疑中心##我的求职思考#该系列文章都是作者花费大量业余时间整理、分享出来的,建议软件技术方向的同学收藏、阅读。

