① 如何成為大神級android開發者
開發者的高速成長期:
身為一個程序員,我們生活在一個IT系統越發復雜且多變化的時代。有時候執行一個簡單的開源項目,都需要精準定義並耗費大量時間專注任務。尤其是當你身為一個新晉程序員,或者對手下的資料庫還很陌生的時候。
菜鳥程序員很難當。你可能剛從一個還不錯的大學畢業,你覺得你已經掌握了基本的常識。但突然間,你在工作上面臨的是另一套嶄新的知識。在很長時間內,你都對自己所要做的工作沒有任何頭緒。而對於上司提出的要求,你似乎只能妥協,而且沒辦法作出有效質疑。
在這個階段,你必須要做的是專注。而且盡可能地放開心胸,去努力學習。初級開發者在工作之初,需要大量的練習,指導、監管,以及需要一個能幫助他們的老師。缺乏以上的任何條件,初級開發者都很難很難邁過這個初學者門檻。
初級開發者必須要專注代碼本身,在這個階段,不要分心想任何其他亂七八糟的事情。在開發一個項目時,如果身為程序員想的是「我想讓自己的代碼在別人眼裡看起來漂漂亮亮的」,而不是「我做的東西應該以用戶感受第一」,那麼他本身就是一個初級開發。
一個好的開發者可以出色地完成任務,而且不僅如此,他們能以較短時間出色完成任何,後期也會維護好。
中級開發者的瓶頸期間
當一個開發者脫離菜鳥階段成長為中級開發者時,他們能夠在項目失敗時反省整個過程(通常,他們會看自己所做工作部分)。而且會意識到,比起匆匆忙忙埋頭苦幹完成任務,應該在項目最初就建立起一些規矩。甚至於如果最開始有人指正他們,整個項目就能在最初避免走向失敗。
而中級開發者還會體驗另一個獨特心理過程,那就是當他們回首一年前的工作。發現盡管當時認為「哎呦,自己做的還不錯」,但現在會發現「這都什麼玩意」啊。
一個中級開發者是有能力通過以往經驗、文本資料、項目團隊討論等方式,摸索出「正確方法」做事的人。在這個階段,學習構建軟體的理論比學習構建代碼更重要(後者應該在學校就掌握了)。
另一方面,中級開發者假如自作主張起來,造成的危害比初級開發者更大。初級開發者只會堆砌演算法,一個好的中級開發者努力方向是「模式設計」和「范疇驅動設計」。這些技能是他們搭造OO系統的必備過程,學習完這些理論知識如果靈活運用,可以讓他們更好地構造項目。但如果僵硬使用,也會危害整個項目。
有的時候,讓一名中級開發者搭造系統,他耗費的時間可能比初級開發者更長,而且更糟的情況是他可能帶整個團隊走向迷途。很可悲的是,很多項目開發之所以走向失敗,因為領隊者自己只是一個中級開發者,他們缺乏和高級開發者工作的珍貴經驗。團隊領導自己,而且團隊里其他人都沒有意識到這點。
中級開發者很清楚自己在團隊中起到的角色,能認識到他們給團隊工作帶來的價值。一個好的中級開發者知道代碼是用來解決問題的,而不是用來終結問題的。然而,中級開發者總容易陷入一種認知上的金字塔,那就是他們會遵循一些「正確的方式」去解決問題。
一個好的中級開發者需要少而精的監管。他們在代碼構造方向非常可靠,而且會在討論設計的過程中發揮重要作用。中級開發者是團隊中的「發動機」。但是,如果進一步的指導和更高級別的監管仍然是必不可少。
高級,甚至是大神開發者需要滿足的條件
一個高級開發者,不誇張地說,他能記住自己每次的錯誤。他們甚至能在設計或者編寫代碼的時候,就能預見到很多失敗。他們會對錯誤進行非常敏銳地反饋,用一種誠實的方法去評估自己的成功和失敗。身為高級開發者,他會更傾向於熱愛復雜問題,但會痴迷於簡潔地解決它。
高級開發者不會給其他開發者劃分等級。與之相比,他更多的是懂得。因為懂得,所以理解每個人在每個階段都有長處和短處。而他們也比別人更了解自己的長處和短處,力求把自己的優勢最大化。
一個高級開發者會懂得,所有理論基礎都有背景支持。他們不會執著於「對的方式」去搭造軟體,而是把理論靈活運用於實際,理論可以變通用於為客戶、團隊和組織需要服務的工具。
高級開發者會在項目過程中,設身處地了解客戶想要什麼樣的工作結果,以及他們的喜好。畢竟這些東西,比開發者個人的偏好和成功更重要。他們永遠不會說「那不是我的工作」,也永遠不會推搡任務和責任。
資深開發者會懂得一件事,那就是他們的工作是為了客戶提供解決方案,而不是埋頭寫代碼。而一位資深開發者永遠會把自己團隊能給顧客帶來多少價值,放在考核標准。而不是把自己的努力和客戶需求放在對等的PK賽場里。
誠然,因為這是一份工作,所以中間的過程總會非常枯燥和無聊。但資深開發者會退一步,思考怎麼能解決和打破這些無聊的問題。他們會評估本源問題,直接解決它。或者他們會把枯燥情緒放在旁邊,修復日常必須要面對的問題。
資深開發者也會懂得團隊工作的高效。沒有人能自己做一切工作,他們會致力於提升自己團隊的效率。他們把提高團隊效率所做的行為,視為提高自己軟實力的一部分。
資深開發者懂得,領導力不僅僅只是權力,也不僅僅只是控制力。權力不是交通棒,而是一種服務意識。