請不要說自己是Java程式設計師

zhang.hu發表於2015-01-03

幾年前 Reddit 上有個關於招聘的笑話:

面試官問:你用過 Python 或者 Django 嗎?
答:我三週前去過動物園,這個算嗎?
面試官:你被僱傭了。

一週後,這位應聘者用 Django 給他們的產品寫了一個線上論壇。

英文的玩笑,用中文看有點不太容易懂。它的意思就是一個關於 Python(蟒蛇)經驗只有三週前去過一次動物園的程式設計師,只要他足夠的好,他也可以用一週的時間,基於 Python/Django 完成一個線上論壇。

經常在網上看到各種標題為“Java程式設計師”、“PHP程式設計師”、“C/C++程式設計師”的招聘帖子,但我感覺這種招聘方式,很難找到好的人才。語言只是一種工具,對一個聰明的程式設計師來說,用沒用過什麼工具主要是由他原來的工作需要決定,並不能代表他全部的技能。

另外,一個軟體產品往往涉及很多方面的知識,比如網路、資料庫、Cache、編譯環境工具等。如果這些必要基礎知識不足,很難很好的獨立完成一個產品的某個部分。

另一方面,一個人的聰明程度、對新知識的好奇心、自我驅動意識、為問題找到最佳解決方案的決心,才是他能不能成為一個好程式設計師的關鍵。舉個例子,我在擔任 JPush CTO 的時候,有位同事本來是伺服器端以 C 語言為主做開發的,完全沒有過 iOS 開發經驗,但他表現出對 iOS 開發很有興趣,並且在做伺服器端開發時,表現出良好的學習能力,後來我把他調到 iOS 組,負責 iOS SDK 和 APNs 相關的工作,結果只花了幾個星期,iOS SDK 的穩定性大幅提升,解決了多個致命問題。

我經常在團隊裡強調,不要把自己定位為某種語言的程式設計師,說自己是 Java 程式設計師,C 程式設計師,Python 程式設計師等等。一方面會限制自己的發展,一方面對團隊整體的能力提升也不利。幾乎所有的語言都有它自己的適用場景,在合適的地方用合適的語言,才能極大的提升生產效率。

正確的做法是,首先要有良好的基礎知識,深刻的掌握2~3門語言,然後適用於不同場景的語言要了解概念。基礎知識包括各種計算機原理、資料方面的知識,在學校沒認真學的,現在有時間也要補充。語言方面比如掌握了 C/Java,那 C++/Python/Bash/Javascript/CSS等都可以瞭解下概念,至少要理解在一個完整的產品鏈裡,它們分別適用於哪個環節。

標題用“請不要說自己是 Java 程式設計師”沒有貶低 Java 程式設計師的意思,Java 是目前被採用得最多的語言,主要用 Java 的程式設計師裡,也是有大量牛人。另外,同樣的,也不要說自己是 C 程式設計師、Python 程式設計師。

之所以用 Java 作為標題,一是現在以 Java 語言為主的工作非常之多,另外在學校裡就以學習 Java 為主的人也越來越多。但我發現,從學校就以學習 Java 這種高階語言為主的人,很多基礎知識比較薄弱。高階語言掩蓋了太多細節,提高了生產力,但在學習階段,卻不利於基礎知識累積。

軟體行業是一個非常強調人的價值的行業,價值就體現在有效的推動產品前進,而語言只是實現這個價值的工具。

相關文章