你是開發工程師、程式設計師還是碼農?

程式設計師之家v發表於2018-01-05

Developers are from Mars, programmers are from Venus, so where are coders from?


不管是CPPer,Javaer,還是PHPer等等,不少開發人員經歷過這樣的困惑:我到底是工程師(SDE,or Developer),程式設計師(Programmer),還是Coder(編碼員)呢?


這個問題看上去似乎沒有什麼意思,甚至不過是一次無聊的名詞解釋。但是,我們以這裡作為所有話題的起點,是因為任何觀點並沒有絕對的對與錯,決定最終選擇的恰恰是看問題的角度——身份當然是其中的一個重要影響力。屁股決定腦袋,這樣的道理無需贅述。


好吧,還是先回到這個話題上來。


軟體開發工程師(SDE,or Developer)是我們大多數軟體開發人員的職業稱呼。既然是一個職業稱呼,其身份與職業自然有密不可分的關係。作為一個開發工程師,其主要職責是在有限的時間內開發出具有實際實用價值的應用程式。


640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1


這裡面至少包含兩點。


其一,開發目標。開發工程師的開發目標是使用,沒有使用價值的程式是沒有意義的;


其二,開發成本。既然是職業稱呼,開發工程師的工作往往由商業因素驅動,其開發特點突出表現為大量的功能需求和有限的成本。因此需要開發工程師具備在各種需求(包括時間成本等等)之間尋求平衡的能力。


程式設計師(Programmer)常常被簡單地被歸結為一群追求技術的狂熱分子,他們更多地由興趣驅動,開發一些有挑戰性的東西。這樣說也許並不確切,但毫無疑問,程式設計師這個名稱給人更多的技術感和理想色彩,以至於很多人把他作為自己引以為豪的稱號。我也喜歡自詡為程式設計師,甚至很多IT公司那些數年未寫一行程式碼的技術主管也喜歡自詡為程式設計師。


程式設計師開發習慣的一個顯著特點是追求極致:最新潮的方法,最小的二進位制檔案大小,最少的程式碼量,最強大的功能……時間?唔,開發時間從來不是程式設計師工作的決定因素,它甚至根本不被考慮;執行時間倒是個重要因素,所有程式設計師聽到這個就像貓聞到腥味一樣。


看上去,軟體開發工程師和程式設計師是多麼截然不同的兩種人。難怪有人說,軟體開發工程師來自火星,程式設計師來自金星。


另外一些人給兩種稱呼設定了等級,似乎程式設計師經過一段時間的成長才能成為一個軟體開發工程師。當然,我不認同這樣的說法:不同的追求導致不同的發展而已。


儘管我們給兩種稱呼對映了兩種截然不同的行為,然而實際上,這兩種行為常常同時出現在同一個人的身上:你可能上班時像個開發工程師,下班則更像個程式設計師;他可能對待一些問題時像個開發工程師,對待另一些問題時則更像個程式設計師。


很多軟體專案開發週期過長,一個重要原因就是由於軟體開發工程師在開發當中融入了過多的個人樂趣,開發出了很多個人認為很酷其實不必要的功能。而一個程式設計師哪怕是搗鼓一個只有他自己才用的軟體,他也需要在他力所能及的範圍(成本)內開發出自己滿意的功能。


與上面兩種稱呼不同,Coder(編碼員)常常被稱作軟體業的藍領工人(戲稱“人肉編碼機”)。沒有人願意做這樣的藍領工人,因為軟體業裡的體力勞動者幾乎就是笨蛋的代名詞。


其實,絕大多數開發人員會常常扮演編碼員的角色。想想你拷貝一大段程式碼,修修改改完成一個功能,然後又拷貝另一大段程式碼,修修改改完成另一個功能的經歷,這不正是個Coder的角色麼?要將這些“體力編碼”的片段跟“腦力編碼”的片段分割開來,派給兩種開發人員去做顯然是不切實際的。


即便存在Coder這樣的職業,只是從事將設計翻譯為程式碼的“體力”工作,他們的工作也仍然是舉足輕重並值得尊敬的。任何一個成功的軟體專案,除了得益於其成功的設計,編碼的質量一樣不可或缺。


如果你真的領導著一些商業性專案開發,你應該會深深體會到編碼質量對一個專案舉足輕重的影響,而一個編碼質量令人放心的開發人員在任何組織裡都不會是簡單的Coder角色。


再次強調,不管是SDE,程式設計師,還是Coder,我嘗試做出一些定義並不是為了讓你從無數開發人員當中區分出誰屬於哪一型別。恰恰相反,我認為對於絕大多數開發人員而言,他並不是一直扮演某一種角色,而是在不同時候,不同的方面,表現為不同的角色。


我們區分這些型別,只是為了闡述觀點時,有一個角色的定位。但是,你知道,世界是複雜的,而人不會是一成不變的。


公眾號內回覆“1”帶你進粉絲群!

0?wx_fmt=gif

相關文章