為什麼大多數程式設計師無法獨立完成桌面軟體

發表於2012-03-01

來源:CSDN

近日,問答網站“知乎”上有個關於程式設計師能力的問題引來了截然不同的回答。提問人表示疑惑:大多數程式設計師是否有能力獨立完成一個稍顯複雜的桌面軟體?

在此,我們挑選出兩種觀點中的代表性回答。

程式設計師謝旭陽表 示:一個做桌面程式的程式設計師應該很容易做一個“稍顯複雜的桌面軟體”。這就好像一個做Web的程式設計師做一個“稍顯複雜的網站”也是很容易的。當然這個“復 雜”只是指功能等技術邏輯上的複雜,如在UI方面還有更高要求,那應該由專門的美工來負責,而在推廣營銷方面還應與市場人員配合。

而一位擁有十年開發經驗的程式設計師給出了否定觀點的回答。

程式獵人: 程式設計師也有分工:桌面程式、網路程式、移動終端程式、大型機程式設計、小型機程式設計、微控制器程式設計……即便同是做桌面程式開發,在不同作業系統下,程式碼寫法也有很 大不同。術業有專攻,一直鑽研其他領域的人,哪怕是高手也可能對桌面程式的執行機制和構建方法不熟悉,從而無法獨立完成這個任務。即使在一個專做桌面軟體 的公司裡,也可能有大部分程式設計師無法獨立編寫一個稍顯複雜的桌面軟體。

“程式獵人”不僅給出了回答,還對背後的原因進行了深層次的分析。他認為,做事情兢兢業業、並且做事時肯主動動腦思考前因後果、願意主動擴大自己工 作責任範圍的人總是很少,他稱這類人為“主動哥”。大多數人都習慣於只做被分配的任務,並按照被吩咐的做法去做,對擴充套件自身工作範圍和知識沒有什麼興趣, 僅在被分配了新的工作內容時才去學習,他稱這類人為“被動哥”,並表示這個世界的大部分財富是“被動哥”創造的,大部分工作是他們完成的。他們中不乏好 人、熱心人,但因為求知慾的缺乏會導致他們長期保持在某一狀態。而以Windows桌面程式設計為例,如果一個“被動哥”被分配只需編寫一些函式呼叫其他人開 發好的API,並通過其他人寫好的框架來做測試,那麼他很可能在完全勝任工作的前提下不了解任何Windows桌面程式從頭建立的方法。自然就不可能獨立 完成一個桌面軟體了。從大工業生產來看,這一點對公司是有利的,因為工作的成敗將不僅僅取決於某幾個員工,而且隨時可以替換任何一個被動哥,也就意味著隨 時可以找到成本更低的人才。日本很多軟體公司中的程式設計師都是這種狀況。相對來說,中國的一些看似不太成熟的公司反而好些,裡面的人什麼都得做,哪怕是超級 被動哥也什麼都會了。另一方面,主動哥往往容易得到上級的賞識,很快便從程式設計師升級為設計者、架構師、管理者、顧問……長此以往沉澱在程式設計師階層的大多是 被動哥,那麼大多數程式設計師無法獨立做出一個像樣的東西也就不足為奇。

為什麼大多數程式設計師無法獨立完成桌面軟體

另外,這位熱心網友還介紹了目前軟體公司普通程式設計師的工作情況,以下是他的文字摘錄:

大部分情況下,普通程式設計師並不負責設計,僅負責編寫程式碼並進行最小限度的單元測試,同時在被要求的情況下撰寫相關文件。這類程式設計師常常是對著詳細設 計書進行程式碼翻譯工作,對於一個有思想有抱負的人來說很枯燥乏味。我曾經見到過快要達到虛擬碼級別的設計書。如果拿在手裡的不是列印出來的紙張,隨便寫個 巨集什麼的,基本都能把程式碼生成出來的。但也不排除設計書做的不完整或者質量低下的情況,這時候就需要向設計者發問,並承擔一部分設計工作,這種情況相對會 有趣一些。但對知識不豐富且沒有設計經驗的人來說,這項工作是個噩夢。尤其跨國協作時,要用外語探討時,有些外語不好的人就徹底繳械了,三天兩頭請外語好 的人吃吃喝喝的……當然還有另外的一些高階程式設計師,進行著分工更高層一些的工作。比如:設計師、架構師、顧問等。作為設計師,相對接近程式設計師一些。要把架 構師定下來的東西更進一步細化,設計成程式設計師能實現的東西。當然對於一些小公司和小專案,以上角色互有穿插,甚至一人全兼。

作為架構師,往往要做出很多艱難的抉擇——是使用這種技術還是那種、是用這種平臺還是那種平臺、是犧牲功能還是犧牲效能?作為顧問,其實很多真正喜 歡悶頭搞技術的人一不小心當了顧問之後都大驚:我這跟搞推銷的有啥區別?啥時候才能讓我再次開啟久違的IDE(整合開發環境)或者記事本(拽點的人用 Vim),敲兩行程式碼啊。因為顧問的主要工作是研究客戶的業務,並提出一個可以滿足客戶業務需求的IT解決方案。他們對IT技術可以說無所不知但又對任何 一種都不深入。(當然也有一些超人,在完成任務的基礎上自行抽時間鑽研某方面技術。遇到這種人,就膜拜吧。)讓普通技術人員眼花繚亂的各種名詞是他們忽悠 客戶最好的武器。然後就是去客戶現場忍著各種不爽做講演了。

對於程式設計師新手如何提高開發能力,這位擁有十年開發經驗的熱心網友建議“做個‘主動哥’而不要做‘被動哥’”。 首先,大量的實踐練習絕對是必須的。而實踐之外重要的一點,是多動腦思考,哪怕工作本身不需要頭腦,也不要停止思考。想一想做這件事的前因後果,有什麼可 以改進的地方或者提高效率的地方。長此以往,經過同樣的時間,你會比“被動哥”多學會很多東西,並具備很多能力。簡而言之,要提高開發能力,就要做到勤奮 和善於思考。

相關文章