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