請不要說自己是 Java 程序員
幾年前 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 這種高級語言為主的人,很多基礎知識比較薄弱。高級語言掩蓋了太多細節,提高了生產力,但在學習階段,卻不利于基礎知識累積。
軟件行業是一個非常強調人的價值的行業,價值就體現在有效的推動產品前進,而語言只是實現這個價值的工具。
Tiger
weibo: @Tiger_張虎,云巴 (yunba.io) 創始人,yunba.io 云后端服務。 JPush 創始人,原CTO。 Oracle VM 創始團隊成員。
來自:http://zhang.hu/hire-a-smart-developer/