0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

華為資深工程師:程序員與碼農(nóng)的差異在哪?

5RJg_mcuworld ? 來(lái)源:電子發(fā)燒友網(wǎng) ? 作者:工程師譚軍 ? 2018-07-04 12:01 ? 次閱讀

一位馳騁商界多年的老友問(wèn):“你現(xiàn)在在華為做什么工作呀?”我很驕傲地說(shuō):”系統(tǒng)架構(gòu)師“,可是他卻愣了很久。

但當(dāng)我老婆在旁邊補(bǔ)上一句“碼農(nóng)“時(shí),老友瞬間秒懂,卻把我受傷的心孤獨(dú)地留在風(fēng)中凌亂。

作為與 UNIX 同年代的人,我當(dāng)初選擇計(jì)算機(jī)專業(yè)僅僅是因?yàn)樽サ绞裁淳蛯W(xué)什么罷了。

本科畢業(yè)遇到互聯(lián)網(wǎng)危機(jī),便沒有想法地去讀了研,研究生畢業(yè)找工作,面試官問(wèn)為什么要做軟件開發(fā)。

答曰:“不給錢都喜歡做的事情,何況還給錢”,從此便踏入了編碼這一行,只是從來(lái)沒想到一做就是十幾年。

但凡一件事情做久了,無(wú)論成功與否,都會(huì)有一些真切的體驗(yàn)和心得。以前也讀過(guò)一些工作中如何成功、快樂(lè),諸如馬斯洛理論之類的文章。

也許是因?yàn)樽约侯I(lǐng)悟能力比較差,唯一的收獲是慶幸自己當(dāng)初選擇了編碼作為自己的工作,因?yàn)榫幋a天生就具有讓人愉悅的工作內(nèi)容和工作氛圍,快樂(lè)如影隨從。

1

編碼世界:規(guī)則簡(jiǎn)單有效,粗暴卻完美

從事編碼,可以鍛煉邏輯思維能力,教會(huì)你如何思考。就像學(xué)習(xí)法律一樣,學(xué)法律的人未必都是為了成為律師,但法律教會(huì)了你一種思維方式。

同樣的,通過(guò)編碼可以學(xué)習(xí)到這個(gè)世界上最嚴(yán)謹(jǐn)?shù)乃季S方法。因?yàn)樵诰幋a的世界里,對(duì)錯(cuò)是簡(jiǎn)單甚至絕對(duì)的。

只要敲下鍵盤,計(jì)算機(jī)就會(huì)判定孰是孰非,0 或 1,規(guī)則簡(jiǎn)單有效,粗暴卻完美。

從事編碼,可以獲得持續(xù)的創(chuàng)造力。跟寫作、繪畫、作曲一樣,編碼也是一種創(chuàng)造性的工作。

只要有一臺(tái)計(jì)算機(jī),掌握了基本技能后,你便擁有了無(wú)限的超能,便能隨心所欲地創(chuàng)造出新的東西,豐富和美好這個(gè)世界,是不是很棒?

更酷的是,編碼可以品味孤獨(dú)。除了跟別人交流、學(xué)習(xí),程序員大部分時(shí)間都是獨(dú)自在工作,只要雙手觸摸到鍵盤,內(nèi)心頃刻便會(huì)變的寧?kù)o,多酷呀!

伴隨著鍵盤清脆的低吟,沉浸在一個(gè)人的世界里,跟煙雨蒙蒙天,一杯茶,一個(gè)人聽著淅淅瀝瀝的雨聲品味孤獨(dú),簡(jiǎn)直有異曲同工之妙,多感性呀!

能夠選擇編碼作為工作的人,大部分都是喜歡為人處世簡(jiǎn)簡(jiǎn)單單的人:這群人有著天真爛漫的好奇心,雖不茍言笑,但卻內(nèi)心火熱,善于分享,樂(lè)于助人,甚至有時(shí)為了解決問(wèn)題、寧愿不眠不休,卻深以為樂(lè)……

跟這樣一群簡(jiǎn)單純粹的人在一起,我覺得世界上最好的工作氛圍,也不過(guò)如此。

2

程序員的三個(gè)境界

但 IT 時(shí)代的膨脹已經(jīng)讓編碼工作如同文藝復(fù)興時(shí)的印刷匠一樣,編碼門檻越來(lái)越低。

例如,遍地《一周XX速成》、《20天XX精通》,仿佛會(huì)寫代碼就成了程序員,這讓很多人認(rèn)為從事編碼工作就是碼農(nóng)。

其實(shí),印刷匠很多,成為大師的不多;碼農(nóng)很多,但程序員并不多。程序員不是碼農(nóng),碼農(nóng)也不是真正的程序員。

程序員在英文里對(duì)應(yīng)有三個(gè)單詞:Coder、Programmer 和 Software Engineer。

我覺得這三個(gè)詞,生動(dòng)形象地描述了程序員所需要經(jīng)歷的三個(gè)階段,或者說(shuō)三個(gè)境界:

Coder:只要求能夠熟練使用編程環(huán)境,精通幾種編程語(yǔ)言、開發(fā)框架和開發(fā)庫(kù),擅長(zhǎng)寫代碼就可以了。這個(gè)階段的程序員能夠按照既定的設(shè)計(jì)完成編碼。

Programmer:要求在 Coder 的基礎(chǔ)之上,精通設(shè)計(jì)模式、算法實(shí)現(xiàn)和編碼技巧,并具備熟練應(yīng)用的能力,這個(gè)階段的程序員能夠獨(dú)立編碼解決現(xiàn)實(shí)問(wèn)題。

Software Engineer:要求在掌握業(yè)務(wù)知識(shí)的前提下,理解為什么這么實(shí)現(xiàn),在綜合考慮架構(gòu)實(shí)現(xiàn),權(quán)衡開發(fā)成本后,為解決業(yè)務(wù)問(wèn)題提出最優(yōu)方案,并能與業(yè)務(wù)人員順暢溝通,讓業(yè)務(wù)人員理解方案。

編碼工作達(dá)到這個(gè)階段,才能稱得上是真正的程序員,才真正實(shí)現(xiàn)了從工作到職業(yè)的轉(zhuǎn)變。

不可否認(rèn),這個(gè)世界上有一些天才的程序員,他們喝著咖啡,哼著歌,便完成了上面三個(gè)階段的修煉。但絕大部分人,都需要為此付出巨大的時(shí)間和精力。

能否成為職業(yè)的程序員,影響因素和方法論很多,各種學(xué)習(xí)類、技術(shù)類的總結(jié)遍地都是:主動(dòng)思考、及時(shí)總結(jié)、制定規(guī)劃等。但我認(rèn)為其中最重要的是能否做到專注。

許多沒有達(dá)到第三個(gè)階段的程序員,就是因?yàn)槭艿礁鞣N因素誘惑,變得心猿意馬,不夠?qū)Wⅰ?/p>

因?yàn)椴粔驅(qū)W?,他們不在意做好自己本職工作,不在意錘煉自己的技能,不在意學(xué)習(xí)新興的技術(shù)。

慢慢的,他們會(huì)認(rèn)為從事編碼沒有出路,進(jìn)而毫無(wú)例外地把編程看成是體力勞動(dòng),只會(huì)粘貼拷貝代碼,知其然而不知其所以然,導(dǎo)致技術(shù)停滯不前。

在這樣的狀態(tài)下工作 5 年、10 年,對(duì)于他們來(lái)說(shuō),沒什么區(qū)別,程序員真的就是吃青春飯的碼農(nóng)。

3

程序員 VS 碼農(nóng):我們不一樣

要避免程序員變成碼農(nóng)要做到如下幾點(diǎn):

必須對(duì)編碼保持熱情,并持續(xù)學(xué)習(xí);

必須保持好奇心,樂(lè)于探求事物本質(zhì);

必須對(duì)所做的工作及時(shí)總結(jié),主動(dòng)優(yōu)化代碼,讓系統(tǒng)變得更加有機(jī);

必須主動(dòng)嘗試更好的開發(fā)方式、更先進(jìn)的工具,來(lái)提升開發(fā)效率,并想辦法避免重復(fù)性的工作;

必須不斷改進(jìn)設(shè)計(jì),將編程變成創(chuàng)造性的工作。

只要通過(guò)這樣逐步地積累經(jīng)驗(yàn)和長(zhǎng)時(shí)間錘煉,知識(shí)體系才能構(gòu)建完備和豐富,才能避免淪落為碼農(nóng)。

幾年前,我曾經(jīng)重構(gòu)過(guò)一個(gè)模塊,從外部看模塊所在的系統(tǒng),都是類似這樣的,簡(jiǎn)潔而漂亮:

但從程序員編碼實(shí)現(xiàn)的層面看,它實(shí)際上是這樣的:

這個(gè)設(shè)計(jì)在最初的版本沒有任何問(wèn)題,使用繼承擴(kuò)展管理對(duì)象的接口能力,但僅僅過(guò)了兩個(gè)版本,項(xiàng)目組 PL 說(shuō)實(shí)在撐不下去了。

增加一個(gè)接口,需要修改 200 多個(gè)地方,如果再過(guò)一個(gè)版本,估計(jì)要修改 400 多個(gè)地方了。

后來(lái)我把它改成這個(gè)樣子,使用聚合消除了耦合

從代碼實(shí)現(xiàn)層面看,在功能剛開始開發(fā)時(shí),這兩個(gè)設(shè)計(jì)區(qū)別不是很大。

但隨著系統(tǒng)演進(jìn)、越來(lái)越多的功能加入,繼承關(guān)系帶來(lái)的耦合會(huì)導(dǎo)致模塊之間關(guān)系越來(lái)越復(fù)雜。

牽一發(fā)而動(dòng)全身,終究有一天哪怕只做很小的改動(dòng),也將成為壓死駱駝的最后一根稻草。

這次重構(gòu)的成果是代碼量由 43K 減少到 15K,擴(kuò)展新的接口能力不再需要修改已有代碼。我想,這或許就體現(xiàn)了碼農(nóng)和程序員的區(qū)別吧。

CT 是一個(gè)業(yè)務(wù)復(fù)雜度極高的行業(yè),要想從碼農(nóng)成長(zhǎng)為程序員,需要經(jīng)歷更多的煎熬,需要發(fā)揮更多的創(chuàng)造力,同時(shí)也意味著,我們比以往任何時(shí)候都需要越來(lái)越多的碼農(nóng)成長(zhǎng)為程序員。

既然我們選擇了編碼作為職業(yè),注定會(huì)經(jīng)歷各種心劫:枯燥、沮喪、迷茫,甚至浮躁……

然而無(wú)論處于哪種心境當(dāng)中,我相信,只要想起自己曾經(jīng)滿懷驚奇、興奮與真誠(chéng)敲下的那個(gè)程序——“Hello,World!”我們就會(huì)充滿了渴望和力量,因?yàn)槟鞘浅绦騿T最初的夢(mèng)想:改變世界。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 編碼
    +關(guān)注

    關(guān)注

    6

    文章

    962

    瀏覽量

    55084
  • UNIX
    +關(guān)注

    關(guān)注

    0

    文章

    296

    瀏覽量

    41723

原文標(biāo)題:華為資深工程師:為什么碼農(nóng)很多,程序員卻不多?

文章出處:【微信號(hào):mcuworld,微信公眾號(hào):嵌入式資訊精選】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    程序員里的鄙視鏈

    在軟件工程師(中國(guó)叫做“程序員”或“農(nóng)”)的圈子里,文人相輕的現(xiàn)象可是非常嚴(yán)重的,在程序設(shè)計(jì)的各個(gè)領(lǐng)域里都有著錯(cuò)綜復(fù)雜的“鄙視鏈”。
    發(fā)表于 12-19 10:31 ?4055次閱讀

    5年農(nóng)給新人程序員的6個(gè)建議

    程序員新人的6點(diǎn)建議:5年農(nóng)的辛酸反省與總結(jié)
    發(fā)表于 04-08 08:04

    單片機(jī)工程師程序員

    從業(yè)這么多年,我也一直在糾結(jié)一個(gè)概念,我做的單片機(jī)軟件開發(fā)是否屬于IT行業(yè)? 大家都知道IT這個(gè)概念,但很少人找到單片機(jī)。一、單片機(jī)工程師程序員嗎?那從我的認(rèn)知來(lái)說(shuō),我覺得“算是”。因?yàn)閱纹瑱C(jī)工程師
    發(fā)表于 11-09 09:14

    農(nóng)程序員之間就在這5個(gè)關(guān)鍵點(diǎn)!

    如果一個(gè)企業(yè)老板大聲嚷嚷說(shuō),“我要招個(gè)程序員”,那么十之八九指的是“農(nóng)”——一種純粹為了錢而寫代碼的技術(shù)人員。這其實(shí)是一種非常狹隘和錯(cuò)誤的做法。 1.
    發(fā)表于 12-01 18:49 ?679次閱讀

    編碼人員,程序員,開發(fā)人員和軟件工程師之間的差異

    我們都聽說(shuō)過(guò)這些職位,但是你知道編碼,程序員,開發(fā)人員或軟件工程師之間的確切區(qū)別嗎?許多人聲稱,這種差異
    的頭像 發(fā)表于 03-19 14:01 ?4758次閱讀

    軟件開發(fā)工程師程序員的區(qū)別是什么

    不管是CPPer,Javaer,還是PHPer等等,不少開發(fā)人員經(jīng)歷過(guò)這樣的困惑:我到底是工程師(SDE,or Developer),程序員(Programmer),還是Coder(編碼)呢?
    的頭像 發(fā)表于 08-27 10:35 ?2.7w次閱讀

    程序員工程師的五個(gè)必要條件

    的40歲危機(jī)困擾焦慮著。另一方面,有些程序員工作高效,能力出眾,每當(dāng)機(jī)會(huì)來(lái)臨時(shí)總能獲得職位上升,收入迅速的提高,個(gè)人價(jià)值的提升又從精神上給自己帶來(lái)滿足感,常常斗志昂揚(yáng),而這樣能解決復(fù)雜問(wèn)題的程序員才叫工程師。本文中筆者將根據(jù)自己
    的頭像 發(fā)表于 08-26 09:12 ?5396次閱讀

    軟件工程師和高級(jí)工程師程序員的區(qū)別是什么

    在各種招聘廣告里,總能看到軟件工程師,程序員或高級(jí)工程師的稱謂。從工作職責(zé)來(lái)看,好像工程師程序員沒什么區(qū)別,如果加上高級(jí)倆字,也不過(guò)需要的
    的頭像 發(fā)表于 09-18 09:31 ?1.2w次閱讀

    工程師農(nóng)的最大區(qū)別在哪

    工程師農(nóng)的區(qū)別并不在于技術(shù)水準(zhǔn)的高低。
    的頭像 發(fā)表于 10-17 09:15 ?4784次閱讀

    電子工程師你知道程序員節(jié)的來(lái)源嗎

    10月24日是什么節(jié)日你知道嗎?程序員節(jié)!作為電子工程師的你要怎么過(guò)程序員節(jié)?為什么沒有電子工程師節(jié)?10月24日讓程序員節(jié)回歸本真,請(qǐng)關(guān)愛
    的頭像 發(fā)表于 10-24 16:00 ?3659次閱讀

    初級(jí)程序員和架構(gòu)有什么區(qū)別

    如題,初級(jí)程序員和架構(gòu)的差別在哪里?
    的頭像 發(fā)表于 04-01 15:25 ?4643次閱讀

    程序員工程師的不同

    我剛剛工作的時(shí)候,面試官曾經(jīng)跟我說(shuō):好好干兩年,可以迅速?gòu)?b class='flag-5'>程序員成長(zhǎng)為工程師。當(dāng)時(shí)我覺得太詫異了,從很多招聘啟事來(lái)看,“程序員”不就等于 “工程師”嗎,只是“
    的頭像 發(fā)表于 07-19 17:38 ?4492次閱讀

    程序員和軟件工程師有什么區(qū)別

    有些人說(shuō)程序員主要是指寫代碼的人,而工程師著重在于設(shè)計(jì)。
    的頭像 發(fā)表于 08-30 16:09 ?6111次閱讀

    優(yōu)秀程序員與糟糕程序員的變現(xiàn)差異

    軟件蠶食一切,未來(lái)屬于程序員。所以人人都想當(dāng)程序員。但是并不是每個(gè)人都能當(dāng)好程序員。在你做出決定前還是先看看自己能不能當(dāng)好程序員吧。
    的頭像 發(fā)表于 11-07 16:14 ?3149次閱讀

    單片機(jī)工程師程序員嗎?真實(shí)的月薪到底有多少?

    從業(yè)這么多年,我也一直在糾結(jié)一個(gè)概念,我做的單片機(jī)軟件開發(fā)是否屬于IT行業(yè)? 大家都知道IT這個(gè)概念,但很少人找到單片機(jī)。一、單片機(jī)工程師程序員嗎?那從我的認(rèn)知來(lái)說(shuō),我覺得“算是”。因?yàn)閱纹瑱C(jī)工程師
    發(fā)表于 11-04 17:36 ?16次下載
    單片機(jī)<b class='flag-5'>工程師</b>是<b class='flag-5'>程序員</b>嗎?真實(shí)的月薪到底有多少?