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

如何成為一名嵌入式軟件工程師?
嵌入式軟件工程師就業好不好?
如何成為嵌入式開發工程師?
低代碼與傳統開發的區別 低代碼與無代碼開發的區別
阿里云升級通義靈碼AI程序員,全面上線
嵌入式工程師常用的開發工具有哪些?
機械革命發布CODE AI程序員本
AI編程工具會不會搶程序員飯碗
第五屆長沙·中國1024程序員節開幕

FPGA算法工程師、邏輯工程師、原型驗證工程師有什么區別?
程序員節視頻創意大賽,用串口屏贏取千元大獎

評論