過年了,給親朋好友解釋「啥是程式設計師」

Java3y發表於2019-02-02

前言

一年一度的春節又到了,作為程式設計師的你是怎麼告訴親朋好友自己日常到底是做什麼工作的呢?

程式設計師是一個新興的職業,我在上大學以前不瞭解程式設計師到底是做什麼的,對程式語言也一竅不通,也不關心玩過的「遊戲」和天天逛的「網站」究竟是怎麼來的。

當年加了電腦科學與技術專業的新生群,聽著師兄和師姐們在聊天,其中就聊到了「程式設計師」這份職業。當時腦海裡第一反應想象的竟是「影印機、印表機等辦公」亂七八糟的東西

影印機、印表機

外行人看程式設計師

有的「初高中」同學知道我讀了計算機專業,於是過來問我:計算機專業應該會組裝電腦的吧,我想組裝一臺新電腦,能不能幫幫忙給點意見,比如電腦配置清單什麼的。

電腦配置清單

在我大學期間我爸希望我多考一些證照,比如有關「電氣和會計」之類證照。他認為:只要證照多,那找工作肯定不成問題,工資也會比沒有證照的人要高。

N多證照

臨畢業了,跟同學出去吃宵夜,我當時正忙著找工作,同學也多問了一句:“你在找什麼工作啊”。於是我說:”就IT唄,程式設計師瞭解不“。他說:”不懂啊,你會不會盜QQ、做遊戲外掛那些東西的啊?“。

盜QQ

前幾天跟親戚去吃飯,得知我年後要離開廣州去杭州做軟體相關的工作,幾杯酒過後,深長意味告訴我:“還是做**「行政」相關的工作有前途**,走那麼遠做軟體有啥用啊,我來給你介紹去xxx工作”。

啥才是好工作!

我這裡想表達的是:老一輩的人大多不太瞭解網際網路行業,認為行政、銀行、老師、醫生這些行業才是“正道”。我對這些行業都持有敬畏之心,並沒有諷刺的意思。

程式設計師喜歡自嘲

外行人對程式設計師的誤解,也有可能只是看到網上有很多關於程式設計師的言論,真以為「大多數」程式設計師都那樣。

比如說程式設計師都愛穿格子衫:

程式設計師最愛格子衫

程式設計師沒有女朋友:

程式設計師女朋友

程式設計師人傻話少死得快:

人傻話少死得快

其實很多的言論都是程式設計師們在閒暇之餘的時候「自嘲」罷了。大多數程式設計師跟其他行業的人都一樣,並沒有像網上說得那麼玄乎。

程式設計師在網上一般稱自己為「碼農」(編碼的農民)

程式設計師加班

暫且不管關於程式設計師其他的言論,但對於網際網路行業來說,加班的確是「普遍」存在的現象,就在前陣子,「有贊」在年會上公開宣佈996工作制。

「有贊」在年會上公開宣佈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都能用上微信。(起碼在不同的手機上,看到的註冊功能都是完整的,而不是東一塊西一塊不整齊的)”

相容問題

“還比如說,小本本「資料庫」記下的密碼不能是你輸入的「原始密碼」。舉個例子:某一天,一個在微信團隊的小夥子拿到了存放賬號和密碼的小本本「資料庫」,把小本本「資料庫」的內容給公開了。(或者說一個黑客把微信給攻破了,然後公開小本本「資料庫」),那豈不是誰都可以上我的微訊號了?”

公開小本本的內容

“程式設計師們當然可以考慮到這點,他們會這樣做,將你輸入的密碼進行「加密」存到小本本「資料庫」中。無論是誰,拿到加密後的密碼,都**不能「反推」**你原始輸入的密碼。”

密碼加密

“所以,每次比對的都是加密後的密碼”

比對的是加密後的密碼

“當然啦,程式設計師考慮的遠遠不止這些。不管怎麼樣,每個程式設計師都希望自己寫的東西「簡單易用,受人喜歡」”

其實我是一個軟體工程師

最後

文章首發公眾號Java3y過年了,給親朋好友解釋「啥是程式設計師」

樂於輸出乾貨的Java技術公眾號:Java3y。公眾號內有200多篇原創技術文章、海量視訊資源、精美腦圖,不妨來關注一下!

帥的人都關注了

覺得我的文章寫得不錯,不妨點一下

相關文章