程序员到底是干什么的?请不要再黑他们了

​程序员,一个传说中的高智商群体。

凭借其认死理、头发少、情商低和收入高四大绝活,入选当今网红职业No.1,当仁不让。


程序员也是在网上最活跃的群体,他们贡献了无数的话题和爆笑动图。

他们几乎都是钢铁直男,就算有女的那也是女汉子。


在相亲市场上,程序员是集收入高、工作稳定、聪明听话、成熟(头发少)等于一身的潜力股,成为结婚对象的优质选择。


在恋爱关系中,程序员又是集死板、反浪漫、情商低、沟通费劲等一系列让人恼火的技能,让他们的欠揍指数一直保持在高位。


哎呀你男朋友是程序员啊:他把时间都用来赚钱,你把时间都用来花钱,真幸福。

Md别提我家那程序员二货:跟他说去买两个桃子,如果碰到西瓜,就买一个。结果这货只买了一个桃子回来,还说我表达不清楚!?

过年回家,亲戚朋友问你现在干啥工作了?你说程序员。他们都歪着脑门看你:程序员是干啥的啊?


对,程序员到底是干什么的?

大家只知道程序员天天对着电脑劈里啪啦的敲键盘,饿了就外卖可乐炸鸡。但他们究竟拿电脑都干了什么?年薪动不动就是几十万的。


你如果直接问程序员,他们会很认真的告诉你:

就是写程序啊。

我们的工作是用编程语言编写程序。

程序员就是开发软件的,做APP的。

嗯。。。这个么。。。太专业了。。。说了你也不懂。


我曾经写过很多年的程序,是一个非典型程序员(发量充足情商在线)。

即便我也是同行,但跟他们沟通的时候,依然想把手里的鼠标塞到他们嘴里。


不过我知道,他们这么较真刻板,都是职业思维习惯,就像搞金融的爱谈投资回报率和杠杆一样。

程序员爱谈逻辑、可行性,因为他们的共工作主要玩的就是这两种思维。


程序,可以理解为一套操作流程。比如一个做红烧肉的菜谱,一共多少步,每步用哪些配料,用量多少,开火多久等等。你照着这个做,就能烧出一盘红烧肉。

只不过程序员写的这个操作流程(程序),是给计算机看和执行的。


再举个例子,有个外地人找你问路,你告诉他前面路口左转,直走,第三个路口右转,再直走200米左手边就是了。你告诉他的就一个导航程序。


程序员每天的工作和这类似,他们的工作就是编写大大小小的这样的程序,只不过要比问路复杂多了。


有多复杂?有人问你路,你只需要告诉他哪个路口怎么走就行,但跟电脑沟通,非常费劲,你少说一个标点符号,电脑就死机了。


如果一个机器人找你问路,你必须告诉他每一步怎么走(包括方向、距离),比如第一步向前半米,第二部继续向前半米等等。还有,你得告诉他遇到红灯怎么办,遇到斑马线怎么办。还有哦,你得告诉他遇到闯红灯怎么办,遇到。。。各种情况你都得跟他说清楚了,不然一开机他就会勇往直前。最后,这个机器人每一步只能走1厘米,想想你要是给他设计个距离10公里的导航???不如给他叫个车吧。


跟人比起来,电脑是不是个傻子?明显是的。人的话你只要告诉他路线就行,机器人就是大脑一片空白,连人类世界的常识都没有,而且是你抽一鞭子它动一下。


但是,电脑速度快。你设定好路程,机器人搜一下就到了,人还得慢慢走。

再举个例子,抄文章,人一秒抄一个字。但如果设定好程序,机器知道了按步骤怎么抄,那它0.01秒起码能抄好几万字,想想你复制个文档有多快?


再比如你淘宝账户里的优惠券,必须提前编好程序告诉电脑怎么处理优惠券,就跟培训商场新来的收银员一样,你必须一条条的跟他交代清楚了才行。程序员大概会编这些:

检查优惠券的有效期,如果过期,告诉客户无法使用。如果没过期,进入下一步。

检查优惠券的品类信息,如果当前购买的商品可以用,继续下一步。如果不能用,就告诉客户。

检查优惠券是否符合起购金额,如果符合,进入下一步。不符合就告诉客户。

检查是否可以叠加使用其他优惠券,如果可以,从第1步开始,一张一张检查。

等等等等。。。。后续可能还有几百个流程。


而现实中的程序,每一步都比这要复杂的多,而且步数比这也要多得多,因为机器不像人一样,告诉他过期的券不能用就行了。程序里大概是这么教机器判断过期的:

检查优惠券上的到期年月日,并算出1970年1月1日到这个日期有多少秒。

看下今天的年月日,并算出1970年1月1日到今天有多少秒。

用第二个秒数减去第一个秒数,如果大于0,就可以使用,否则算作废。


上面这些都是我为了说明程序员干的工作,简化到不能再简化的描述,实际上用编程语言去描述这些给机器看的操作手册时,一般都复杂到头晕眼花。

了可以想象一个大型的软件项目,基本相当于用乐高堆出一个从里到外从头到尾一模一样的重庆市来,这有多复杂?光想想就掉头发了吧。


其实项目管理这门学科也是从软件工程里派生出来的,因为软件工程实在是太庞大太复杂了,所以才有了项目管理这个学科专门来把这些复杂理清楚。


当然,现实中不是一个程序员就做一个项目的,再简单的app,一般也得三五个很能干的程序员才能搞起来。这就是为什么淘宝、腾讯这些公司程序员都是几千个的原因。


程序员每天面对的就是那个啥都不知道,但是计算速度是光速的傻子电脑,他得设计一套又一套的手把手的操作手册(程序),来让电脑去完成任务。一个简单的使用优惠券的程序,可能就要有好几百个操作环节,每个环节又有好多操作判断,而这中间,不能有任何一点的错误,一点点都行,必须保证100%正确永远不出错。你再想想双11,那些你看都不看不懂的、算都算不明白的各种活动,程序员也得给电脑一条一条的编程。这个复杂度和压力,普通人不掉几根头发能搞定么?


现在想想那个段子:去买两个桃子,如果碰到西瓜,就买一个。

在程序员眼里,买桃子 是一个任务,如果碰到西瓜 是一个条件(对于买桃子来说)。所以程序员的理解是:本次任务买两个桃子,如果碰到西瓜的话,就买一个桃子。是不是有点反人类?

跟电脑沟通的久了,慢慢就被电脑的思维方式给影响了。


在程序员的职业病里,一切都是任务,任务必须要交代的一清二楚,有一点不清楚的话,就会出错。


这也就是跟程序员沟通累的唯一原因:较真,咬字。他们必须要弄清楚你说的每一个字的含义,才能准确完成任务。


我有朋友就干过这种天才的事:

他老婆跟他说:一会你打完游戏去把碗都洗了。过了一会就听到河东狮吼:你怎么只把碗洗了?!!!他淡定的说:是你叫我洗碗的啊。。。

没错,后面半年的厨房卫生都归他管了。他老婆就像对他编程一样,制定了一整套的厨房卫生操作手册和验收标准。


有时候想想,哈士奇养的久了人都难免变的中二,那程序员天天撸电脑也难免变得像个电脑,非得用编程的思维才能跟他聊天。


所以该骂骂,该打打,毕竟他不是电脑。


--------------------------------


我是易z

世界很复杂,简单才明了


如果有帮到你,就分享给朋友们吧~


你可能感兴趣的:(程序员到底是干什么的?请不要再黑他们了)