Hello,2021
其实很多人在问我,你是做什么工作的,回答的时候,我们通常会说是程序员,但其实程序员也分很多种,大体上分成
1. 软件工程师
2. 硬件工程师
3. 嵌入式软件工程师
A. 第一种软件工程师就是大家口头上说的程序员(知名度更高),这一类也是我本科时候学的(当然我学的不是很深入,只会搭建个数据库做个购物 站这些简单的)。此软件工程师的兴起也就是近20年左右的事情,互联 起来了,需要更多的软件工程师,所以高校也都在培养这一类程序员,因为从成本上来说,培养这类程序员的成本就比较低(一般一台电脑就够了),教育也是适应市场需求的表现之一,此外,很多和我一样的同学肯定也听过不少培训机构,很多不满于现状(工资低,教育水平不高,不善人际(No bias))的人们也被吸引到机构接受培训,一般培训6个月就能出来胜任一份程序员工作了,因此不少专科生毕业以后还会选择再来培训一下,赚钱嘛。
所以说呢,庞大的需求,让更多人的注意力转移到了这些“卤蛋”朋友们身上哈哈哈哈(其实卤不卤蛋的跟遗传关系大,其次是卫生,和啥工作没啥关系,别乱带节奏),所以造成了大家问我啥工作的时候,就会把我当成是这种程序员,然后我又要解释一大圈,然后还是没听懂啥意思的情况太鸡儿多了。
B. 硬件工程师,这一类工程师就如名称所言,主要是对硬件负责和开发的,他们是我目前认为的,最厉害的一类程序员了,或者叫他们工程师比较合适,毕竟他们不敲代码的。
—————————-无人机项目——————————————–
现在比较流行的各种无人机产品,小的可能几十块钱,大的可能上万上十万,那么这里我将以一个比较大型的无人机项目做一个介绍,这个项目涵盖了 “手柄,飞机,PC端”,相信看完以后你就会对程序员的区别感受更进一步!
首先,在进入这样一个项目时候,我们的硬件工程师会去进行所有需要的选材,我简单介绍几个(因为我确实没有真的介入这个项目):
-
硬件工程师会找到需要的电阻,电容,光耦等需要的电子元器件,然后会选几款合适的处理芯片,合适的传感器(飞行平衡需要的传感器,手柄也需要传感器才能感受你的控制,当然手柄用键盘的也可以),无线通讯模块(wifi,Bluetooth,Zigbee等等,把这种模块当成是一种信 发射器就行了),然后硬件工程师会将他们组成一个板子,通过硬件基本电路测试以后就递交给嵌入式软件工程师了,同时还会给我这些元器件和芯片的使用手册。
-
当我拿到这样一些材料以后,我首先会选择一个嵌入式操作系统,ucos,FreeRTOS这些都可以,看具体需求了,操作系统的概念可以理解成我们人的神经系统,只有一个神经系统,那我们只能将信息传来传去,干不了别的事情,那么接下来就是要将我们的手脚给放进去玩玩了。
嵌入式程序员的思路非常清晰,主要解决两件事情:底层通讯和简单算法(代码逻辑那些就省去不说了),有了各种原理图,我们可以知道这块芯片能干点啥事儿,把它能干的事儿都罗列出来,先把底层驱动代码写了,这一类代码主要是我们对芯片直接干预!也是我们最主要的事情了,有了这些代码,我们就知道芯片在干啥了,换句话说,我们与硬件工程师之间的工作基本就结束了(当然,如果芯片或哪个元器件工作不正常,比如电压太低了啥的,还是要找那些硬件的算账的),那么第二个事情了,设计一个合理的算法(关于算法,我之前有过另一篇PID的有兴趣可以看看,百年前人的伟大智慧!),什么是算法,这里的算法要拿来干嘛这部分算法不是所有的嵌入式都需要的,我大胆猜测无人机的平衡误差算法应该也不是在单片机上存储和运算(一个原因是内存不够,一个原因是运算能力不够),但是为了强调嵌入式所使用的传感器和代码之间的联系,我在这里想阐述一下:
首先,嵌入式会把我们需要的传感器,比如水平位置的传感器,垂直位置的传感器,风力的传感器,有了这三个传感器,我们就能知道当前的飞机是横着飞呢还是歪着飞呢还是瞎鸡儿飞,也能知道当前风力的大小,简单来说,我们只需要这几个参数,得到了这个参数,传感器的任务就结束了。
其次,有了这些参数,我们会找一些 上已经存在的无人机平衡算法,大胆推测应该也是类似PID的一种误差算法。那么除了这些参数,我们还会收到用户的飞行命令,飞哪儿去,降落,加速啥的,OK,接下来的事情就比较容易理解了,我们把用户的飞行命令和我们的参数一起加入算法,算法就会根据当前的飞机状态,生成几个输出参数,从而控制飞机按照我们想要的飞行方式飞行,那么如何让它飞行,这是另外一个问题了。
我们现在知道算法会产生一系列的参数,为什么这些参数能影响飞行呢,先要了解飞行器的飞行原理,通常来说是由四个舵机组成整个飞行的运动,
现在感觉就比较low了,当然还有听起来更low的HTML,PHP哈哈哈哈开个玩笑,我也只会个HTML和PHP。总之他们这些程序员的年轻饭更替应该是绝对的主力,至于具体的原因,技术更替频繁导致的压力肯定是其中最重要的,但不是全部。
嵌入式的话其实还好,技术更替多但没有那么多,看历史发展就知道,嵌入式与硬件的发展在大约百来年以前就开始了,是基于基础科学的一门学科, 所以它玩不出太多的花(相对软件来说真的没多少花),但是它涉及到的硬件知识,就显得特别多,所以很多嵌入式离职不做这个行当的技术原因就是,他们发现这些硬件的东西,学很容易学完,但是怎么学都学的不深刻,造成了一个高不成低不就的状态(但是我个人觉得,心态要摆正再谈深入的问题),确实很难学完,百来年的东西让你工作七八年就学完了那还了得。
B. 初衷。有的人选择这个行业可能是因为兴趣,有的人可能是因为钱,有的人没有想太多,反正学什么都是学。很大一部分因为“年轻饭”离开的原因就是因为钱的那些人,就像他们加入的时候想的那样。大家总说程序员的工资很高,但是这个高,是存在瓶颈的,不是每个人跳槽都能翻一番。我之所以说他们因为钱加入也会因为钱离开,但是不绝对,只说我自己的切身体会,不少人咬咬牙渡过了培训,拿到了一份offer开始码农生活,赚到上万,但是有一部分会就会耐不住辛苦。让我们想像一下, 一个销售月入6k,一个刚培训完的程序员月入8k,但是时间久了销售变成了9k,程序员也大涨到了1.2k,但从数字上来说,我作为一个程序员确实赚的更多了,但是我的时间其实也被压榨了,失去了更多的个人时间,另一方面,工作久了我们就会发现其他能投资理财赚钱的门路也不少,何必要当一个码农呢,我只是想赚钱而已,所以这样一部分人流失的很快,但是一般体现在小的互联 公司比较多(但小公司的量肯定是很大的)。
C. 家庭环境,主要是年龄上去了,大家结婚生子,有的还要继承家产对吧,时间渐渐的被阉割了,那么自然而然的能投入到敲代码的时间肯定会少,不少人想干到一定岁数就去干管理层,干别的了,大哥,你们那么多技术岗都想转管理,人家毕业就干管理的找哪儿说理去转管理的总归是少数,那么剩下的人都去哪里了呢,有待深思。
D. 自我怀疑。我在博客上看了很多人的各经历,b站也有各种各样被暴力裁员的vlog,撇开公司原因单单说我们自己的问题,有时候是不是我们的心态确实不够好,总想着攀高枝又不知道自己有没有那两把刷子,运气好搞到了一份offer,工资的确是上去了,但是入职以后发现能力和收入不匹配,我们就会开始玩儿命补习学习以匹配相应的能力,长此以往,心态很容易发生变化,开始否定自己,否定多了人就变了不是吗。另一个自我怀疑的表现在于频繁的跳槽带来的不稳定,这个最常见的就是刚毕业的同学,一味的为了获得经验而跳槽,确实经验多了,可是归属感也少了,至少我个人是很看重工作与归属感之间的联系的,如果一直都是为了double而强迫自己积累经验,那是很痛苦的一件事情,时间久了,自我怀疑是肯定了。
E. 公司战略需求。这个很容易理解,我刚入职实习的时候就听说,滨江某某A大厂今年不涨钱了,跳槽出来了一大批程序员跑去了竞争对手的B公司(第一次听到的时候真是笑死我了),然后A厂又大规模招了一批年轻的幼崽(很荣幸我当时也去面试了,还好没去),节约成本嘛,一万块招来的人培训几个月就能干三万块的人的活儿,美滋滋。企业在技术上的发展稳定以后,一般只需要留核心的研发及支持研发的部门,更看重的应该是市场和营销上的事情了,无可厚非。
相似的战略需求所带来的裁员的故事太多了,总之这一裁,年轻的还行,但是有很多上了岁数,本来就想在一个公司安安稳稳做自己本来就干的不错的那些程序员们就不太舒服了,他们要换一家公司的首要条件就是:如何让新的公司知道你有多强。 表述能力和运气好一点的确实在这次离职以后反而能晋升,但是程序员的表述能力,大家不用我说就知道有多尴尬的地位了吧,加上有些人根本就没准备好被这样离职,心里上很难承受的,毕竟继续程序员工作,还是离开这个行业,只是你内心的一句话而已,0 和1 就是这么的简单,能留下就留下来,想换个环境换个工作的自自然然就离开了。
F. 个人素养,首先!我不是说!不是说专科,高中毕业,培训机构出来的程序员们素质低!绝对!没有!这个意思!
OK,我想表达的意思,就是很多层次不齐的人加入到程序员队伍中,虽然我们的主要工作就是面对电脑敲敲代码,与部门外的人打交道确实不多,所以人与人的交际确实比较窄,不像那些管理部门或者是市场啊销售的,也许在那些部门,你的一些小毛病可能容易被容忍,但是在研发是不会那么容易的,但是作为一个研发团队,我们更看重的是我们之间的沟通是否走心,大家钱都拿的可以了,又没有太多的竞争(当然大厂还是残酷的),如果一个人只是一味的完成自己的工作,不愿帮助别人解决问题,对我个人而言,我损失的是一次额外的学习经历,对他人而言,这个确实不是你的职责范围内的工作,但是你对整个团队的研发进度也只完成了“本分”这件事,我不是要鼓励大家完成额外的工作,但是我希望如果这件额外的事情你认为能学到什么,那就去尝试一下真的很好,至少我个人的硬件水平(我来以前是完全的硬件门外汉)都是在额外的机会中获得的,现在要我去做一个简单的硬件测试,不用人教也是没问题。
另一个素养就是硬伤,学历。可能很多人觉得程序员只要技术过硬就可以了,但是其实不是的,因为在技术上和我们竞争的是以万,数十万为单位的,那就很可怕了,本来就是什么聪明脑袋,怎么和你们愉快的玩耍人因为学历的门槛,没办法晋升,比如两个程序员都要做产品经理,那么有学历的那个肯定会被首选,至少我做这个决策时候,我会考虑这两个人做产品经理的时候,哪一个与人沟通会更好,哪一个见识多,考虑的长远,这些要素都是没办法用笔和纸写出来,也没办法通过代码表达出来的,所以你的 交面广泛,你的学识(哪怕你学的与这一类完全不相关,但是肯定有不一样的见解)也会是不一样的。举个例子,真实案例,我的一个同事和一个实习僧,那个同事给我更多的感受,就是在完成眼下的工作,两个人在面对同一个问题的时候,那个实习生给我的感觉就像是,他在揣测这个问题所带来的影响和用户体验以及潜在的研发周期是否会被延长,但另一个虽然已经工作的同事却没有考虑这么多,我没有诋毁这个同事(虽然他还没入职就走了),但是工作久了以后确实人是会变的,你的素养就会影响你多少年之内还能保持一个长远的目标和态度,当然,说个题外话,这也是我为什么要写一些博客来记录我当前的感受,因为我也怕几年以后,我无法以现在的目光来看待一些事物。
程序员的脑壳

说了一堆严谨的东西,说点轻松的话题来结束这篇文章,老有人问我,程序员是不是脑袋瓜子都是葛优,我tmd就真的有时候想一耳刮子,把他扇到我部门里看看是不是有秃头,哈哈哈哈其实真的没有了,我部门三十个男的三个女的,没一个秃头,稀疏的有,但是人都四五十岁了,还不让人家稀疏一下r> 我反正两周就要剪一次头发,长得太快了。
之前看过很多科普,谢顶就是遗传问题,有的人油脂分泌旺盛,有的人遗传秃头,那么压力大的时候掉几根头发也很正常。换句话说,长期高强度压力不会让一个遗传没有秃头的人变成葛优,但是会让有这个遗传的人提早变成葛优,这是没毛病的。
说了对不对的我也不管了,反正我家族里没脑瓜子亮的,我也不太在意这个,等哪天我脑壳上没毛了我再回来这篇博客狠狠打自己一顿脸吧。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!