查看原文
其他

如何回答过年必问问题之「程序员是干什么的」

Java3y 开源中国 2019-02-14

本文经授权转载自 Java3y (ID: java3y)

前言

一年一度的春节又到了,作为程序员的你是怎么告诉亲朋好友自己日常到底是做什么工作的呢?

程序员是一个新兴的职业,我在上大学以前不了解程序员到底是做什么的,对编程语言也一窍不通,也不关心玩过的「游戏」和天天逛的「网站」究竟是怎么来的。

当年加了计算机科学与技术专业的新生群,听着师兄和师姐们在聊天,其中就聊到了「程序员」这份职业。当时脑海里第一反应想象的竟是「复印机、打印机等办公」乱七八糟的东西。

外行人看程序员

有的「初高中」同学知道我读了计算机专业,于是过来问我:计算机专业应该会组装电脑的吧,我想组装一台新电脑,能不能帮帮忙给点意见,比如电脑配置清单什么的。

在我大学期间我爸希望我多考一些证书,比如有关「电气和会计」之类证书。他认为:只要证书多,那找工作肯定不成问题,工资也会比没有证书的人要高。

临毕业了,跟同学出去吃宵夜,我当时正忙着找工作,同学也多问了一句:“你在找什么工作啊”。于是我说:“就IT呗,程序员了解不。”他说:“不懂啊,你会不会盗QQ、做游戏外挂那些东西的啊?”

前几天跟亲戚去吃饭,得知我年后要离开广州去杭州做软件相关的工作,几杯酒过后,深长意味告诉我:“还是做**「行政」相关的工作有前途**,走那么远做软件有啥用啊,我来给你介绍去xxx工作”。

我这里想表达的是:老一辈的人大多不太了解互联网行业,认为行政、银行、老师、医生这些行业才是“正道”。我对这些行业都持有敬畏之心,并没有讽刺的意思。

程序员喜欢自嘲

外行人对程序员的误解,也有可能只是看到网上有很多关于程序员的言论,真以为「大多数」程序员都那样。

比如说程序员都爱穿格子衫:

程序员没有女朋友:

程序员人傻话少死得快:

其实很多的言论都是程序员们在闲暇之余的时候「自嘲」罢了。大多数程序员跟其他行业的人都一样,并没有像网上说得那么玄乎。

程序员在网上一般称自己为「码农」(编码的农民)

程序员加班

暂且不管关于程序员其他的言论,但对于互联网行业来说,加班的确是「普遍」存在的现象,就在前阵子,「有赞」在年会上公开宣布996工作制。

有人可能不知道996是什么意思,这里我解释一下:从早上9点工作至晚上9点,一周上六天班。简称996

我在秋招跑了几个广州游戏公司的宣讲会,大多在宣讲会上明确公司需要「加班」。

「苏宁」之前也闹出一事

「华为」的狼性文化也是家喻户晓的

啥是编程语言

基本大家能想到程序员能做的事,而程序员们几乎都不会

每个程序员都会有一门自己拿手的编程语言,有的时候一门编程语言可以对应不同的「岗位」。(比如说,Java程序员、PHP程序员)

程序员每天都是跟「计算机」打交道,让计算机干什么,计算机就会去干什么,很是听话

那计算机咋能听懂程序员让它去干啥呀。有点计算机基础的同学可能会知道,计算机只认「二进制」。

「二进制」:逢二进一。「十进制」:逢十进一

看到这里,大家可能都看不懂了。没事,我们继续往下看

程序员也是人,人与人的交流,「常用的语言」有阿拉伯语、汉语、英语、法语、俄语和西班牙语等,而不是啥「二进制」的东西。为了方便,聪明的「程序员」企图让计算机去读懂「自然语言」。(能够让计算机去读懂阿拉伯语、汉语、英语、法语、俄语和西班牙语等这些语言)

所以程序员们就搞出了一个「编译器」,编译器说白了就是能将这些「自然语言」翻译成二进制,让计算机读得懂!

在计算机世界里,对任何事物都不含糊,说一就是一,说二就是二。想要让「自然语言」能够准确地翻译成二进制,就必须定下相应的「规则」。而使用不同的「规则」,就出现了不同的编程语言。因为大多数编程语言都是「外国人」发明的,并且由于英语的「广泛性」和「易用性」。所以,绝大多数的编程语言都由「英文」组成。

(以下就是各种常见的编程语言,由于「规则」不同,所以看起来都不一样。但所做的事都是相同的)

print_r('点个好看、转发吧!'); var_dump('点个好看、转发吧!'); NSLog(@"点个好看、转发吧!"); System.out.println("点个好看、转发吧!"); console.log("点个好看、转发吧!");print("点个好看、转发吧!");
printf("点个好看、转发吧!"); cout << "点个好看、转发吧!" << endl; Console.WriteLine("点个好看、转发吧!"); fmt.Println("点个好看、转发吧!"); Response.Write("点个好看、转发吧!"); alert("点个好看、转发吧!")echo "点个好看、转发吧!"

解释程序员干啥活

别人问到我是做什么的,我往往会说“你平时用过的「微信」,「百度」这些软件啊,网站啊就是我们程序员做的”。

(一般到这里就不会继续往下问细节了,但还是遇到过继续问究竟是怎么做的)

接下来,为了继续演示,我们可以掏出手机,打开微信:

“我们都是玩微信的人,要进入微信先得有个账户,所以要先注册“

“注册实际上就是把你的账号和密码「保存」起来”。

“如果你注册成功了,那小本本「数据库」就有你的账号和密码了。等你登录的时候,就去小本本「数据库」查一下你输入的账号和密码是否匹配”

“看到这里,有没有觉得「程序员」真是容易当,不就把输入的数据记录下小本本,等用到的时候再查一下而已嘛。其实不然,就好比微信的注册页面,拿IOS系统来说,从IOS 6 到现在的IOS 12已经有6个版本了。Iphone手机屏幕的尺寸也一直在变,从3.5英寸到现在的6.5英寸。微信团队需要对不同的「版本」,不同的「屏幕大小」进行兼容,让iPhone4s还是iPhoneXS Max都能用上微信。(起码在不同的手机上,看到的注册功能都是完整的,而不是东一块西一块不整齐的)”

“还比如说,小本本「数据库」记下的密码不能是你输入的「原始密码」。举个例子:某一天,一个在微信团队的小伙子拿到了存放账号和密码的小本本「数据库」,把小本本「数据库」的内容给公开了。(或者说一个黑客把微信给攻破了,然后公开小本本「数据库」),那岂不是谁都可以上我的微信号了?”

“程序员们当然可以考虑到这点,他们会这样做,将你输入的密码进行「加密」存到小本本「数据库」中。无论是谁,拿到加密后的密码,都**不能「反推」**你原始输入的密码。”

“所以,每次比对的都是加密后的密码”

“当然啦,程序员考虑的远远不止这些。不管怎么样,每个程序员都希望自己写的东西「简单易用,受人喜欢」”


开源中国征稿开始啦!


开源中国 www.oschina.net 是目前备受关注、具有强大影响力的开源技术社区,拥有超过 200 万的开源技术精英。我们传播开源的理念,推广开源项目,为 IT 开发者提供一个发现、使用、并交流开源技术的平台。


现在我们开始对外征稿啦!如果你有优秀的技术文章想要分享,热点的行业资讯需要报道等等,欢迎联系开源中国进行投稿。投稿详情及联系方式请参见:我要投稿


推荐阅读

开源中国 2018 新增开源软件最受欢迎 TOP 50

与 30 家公司过招,得到了这章面试心法

HackerRank:JavaScript 是最知名的编程语言

微软工程师认为 Mozilla 也应该拥抱 Chromium

2019年1月已到,Java 8 要收费了吗?

「好看」一下,分享给更多人↓↓↓

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存