不管是CPPer,Javaer,還是PHPer等等,不少開(kāi)發(fā)人員經(jīng)歷過(guò)這樣的困惑:我到底是工程師(SDE,or Developer),程序員(Programmer),還是Coder(編碼員)呢?
這個(gè)問(wèn)題看上去似乎沒(méi)有什么意思,甚至不過(guò)是一次無(wú)聊的名詞解釋。但是,我們以這里作為所有話題的起點(diǎn),是因?yàn)槿魏斡^點(diǎn)并沒(méi)有絕對(duì)的對(duì)與錯(cuò),決定最終選擇的恰恰是看問(wèn)題的角度——身份當(dāng)然是其中的一個(gè)重要影響力。屁股決定腦袋,這樣的道理無(wú)需贅述。
好吧,還是先回到這個(gè)話題上來(lái)。
軟件開(kāi)發(fā)工程師(SDE,or Developer)是我們大多數(shù)軟件開(kāi)發(fā)人員的職業(yè)稱呼。既然是一個(gè)職業(yè)稱呼,其身份與職業(yè)自然有密不可分的關(guān)系。作為一個(gè)開(kāi)發(fā)工程師,其主要職責(zé)是在有限的時(shí)間內(nèi)開(kāi)發(fā)出具有實(shí)際實(shí)用價(jià)值的應(yīng)用程序。
這里面至少包含兩點(diǎn)。
其一,開(kāi)發(fā)目標(biāo)。開(kāi)發(fā)工程師的開(kāi)發(fā)目標(biāo)是使用,沒(méi)有使用價(jià)值的程序是沒(méi)有意義的;
其二,開(kāi)發(fā)成本。既然是職業(yè)稱呼,開(kāi)發(fā)工程師的工作往往由商業(yè)因素驅(qū)動(dòng),其開(kāi)發(fā)特點(diǎn)突出表現(xiàn)為大量的功能需求和有限的成本。因此需要開(kāi)發(fā)工程師具備在各種需求(包括時(shí)間成本等等)之間尋求平衡的能力。
程序員(Programmer)常常被簡(jiǎn)單地被歸結(jié)為一群追求技術(shù)的狂熱分子,他們更多地由興趣驅(qū)動(dòng),開(kāi)發(fā)一些有挑戰(zhàn)性的東西。這樣說(shuō)也許并不確切,但毫無(wú)疑問(wèn),程序員這個(gè)名稱給人更多的技術(shù)感和理想色彩,以至于很多人把他作為自己引以為豪的稱號(hào)。我也喜歡自詡為程序員,甚至很多IT公司那些數(shù)年未寫一行代碼的技術(shù)主管也喜歡自詡為程序員。
程序員開(kāi)發(fā)習(xí)慣的一個(gè)顯著特點(diǎn)是追求極致:最新潮的方法,最小的二進(jìn)制文件大小,最少的代碼量,最強(qiáng)大的功能……時(shí)間?唔,開(kāi)發(fā)時(shí)間從來(lái)不是程序員工作的決定因素,它甚至根本不被考慮;執(zhí)行時(shí)間倒是個(gè)重要因素,所有程序員聽(tīng)到這個(gè)就像貓聞到腥味一樣。
看上去,軟件開(kāi)發(fā)工程師和程序員是多么截然不同的兩種人。難怪有人說(shuō),軟件開(kāi)發(fā)工程師來(lái)自火星,程序員來(lái)自金星。
另外一些人給兩種稱呼設(shè)置了等級(jí),似乎程序員經(jīng)過(guò)一段時(shí)間的成長(zhǎng)才能成為一個(gè)軟件開(kāi)發(fā)工程師。當(dāng)然,我不認(rèn)同這樣的說(shuō)法:不同的追求導(dǎo)致不同的發(fā)展而已。
盡管我們給兩種稱呼映射了兩種截然不同的行為,然而實(shí)際上,這兩種行為常常同時(shí)出現(xiàn)在同一個(gè)人的身上:你可能上班時(shí)像個(gè)開(kāi)發(fā)工程師,下班則更像個(gè)程序員;他可能對(duì)待一些問(wèn)題時(shí)像個(gè)開(kāi)發(fā)工程師,對(duì)待另一些問(wèn)題時(shí)則更像個(gè)程序員。
很多軟件項(xiàng)目開(kāi)發(fā)周期過(guò)長(zhǎng),一個(gè)重要原因就是由于軟件開(kāi)發(fā)工程師在開(kāi)發(fā)當(dāng)中融入了過(guò)多的個(gè)人樂(lè)趣,開(kāi)發(fā)出了很多個(gè)人認(rèn)為很酷其實(shí)不必要的功能。而一個(gè)程序員哪怕是搗鼓一個(gè)只有他自己才用的軟件,他也需要在他力所能及的范圍(成本)內(nèi)開(kāi)發(fā)出自己滿意的功能。
與上面兩種稱呼不同,Coder(編碼員)常常被稱作軟件業(yè)的藍(lán)領(lǐng)工人(戲稱“人肉編碼機(jī)”)。沒(méi)有人愿意做這樣的藍(lán)領(lǐng)工人,因?yàn)檐浖I(yè)里的體力勞動(dòng)者幾乎就是笨蛋的代名詞。
其實(shí),絕大多數(shù)開(kāi)發(fā)人員會(huì)常常扮演編碼員的角色。想想你拷貝一大段代碼,修修改改完成一個(gè)功能,然后又拷貝另一大段代碼,修修改改完成另一個(gè)功能的經(jīng)歷,這不正是個(gè)Coder的角色么?要將這些“體力編碼”的片段跟“腦力編碼”的片段分割開(kāi)來(lái),派給兩種開(kāi)發(fā)人員去做顯然是不切實(shí)際的。
即便存在Coder這樣的職業(yè),只是從事將設(shè)計(jì)翻譯為代碼的“體力”工作,他們的工作也仍然是舉足輕重并值得尊敬的。任何一個(gè)成功的軟件項(xiàng)目,除了得益于其成功的設(shè)計(jì),編碼的質(zhì)量一樣不可或缺。
如果你真的領(lǐng)導(dǎo)著一些商業(yè)性項(xiàng)目開(kāi)發(fā),你應(yīng)該會(huì)深深體會(huì)到編碼質(zhì)量對(duì)一個(gè)項(xiàng)目舉足輕重的影響,而一個(gè)編碼質(zhì)量令人放心的開(kāi)發(fā)人員在任何組織里都不會(huì)是簡(jiǎn)單的Coder角色。
再次強(qiáng)調(diào),不管是SDE,程序員,還是Coder,我嘗試做出一些定義并不是為了讓你從無(wú)數(shù)開(kāi)發(fā)人員當(dāng)中區(qū)分出誰(shuí)屬于哪一類型。恰恰相反,我認(rèn)為對(duì)于絕大多數(shù)開(kāi)發(fā)人員而言,他并不是一直扮演某一種角色,而是在不同時(shí)候,不同的方面,表現(xiàn)為不同的角色。
我們區(qū)分這些類型,只是為了闡述觀點(diǎn)時(shí),有一個(gè)角色的定位。但是,你知道,世界是復(fù)雜的,而人不會(huì)是一成不變的。
-
程序員
+關(guān)注
關(guān)注
4文章
954瀏覽量
30286 -
開(kāi)發(fā)工程師
+關(guān)注
關(guān)注
1文章
91瀏覽量
15095
發(fā)布評(píng)論請(qǐng)先 登錄

硬件工程師看了只會(huì)找個(gè)角落默默哭泣#硬件工程師 #MDD #MDD辰達(dá)半導(dǎo)體 #產(chǎn)品經(jīng)理 #軟件工程師
如何成為一名嵌入式軟件工程師?
嵌入式軟件工程師就業(yè)好不好?
如何成為嵌入式開(kāi)發(fā)工程師?
低代碼與傳統(tǒng)開(kāi)發(fā)的區(qū)別 低代碼與無(wú)代碼開(kāi)發(fā)的區(qū)別
嵌入式工程師常用的開(kāi)發(fā)工具有哪些?
機(jī)械革命發(fā)布CODE AI程序員本
Linux驅(qū)動(dòng)程序程序員指南

AI編程工具會(huì)不會(huì)搶程序員飯碗

評(píng)論