這8 項升職加薪的技能,90%Android程序員都沒掌握!!!

我是碼農出身,工作十年,從 初級程序猿(半年) - 項目主力(一年) - 初級技術管理(一年) - 中級技術管理(兩年) - 部門管理(兩年) - 高層管理(三年) - 職業經理人,一條路走過來,關於升職加薪技能,有一些自己的心得可以分享。

01、吃透一門編程語言

這個技能看起來似乎沒有必要強調,畢竟程序員不懂一種編程語言也說不過去啊。我之所以再次強調是怕你“貪心”,以為技多不壓身就拼了命的學很多種編程語言。

有個大二的學生就曾經問我:“你好呀,老哥,有個問題想諮詢一下您,我專業學的是 C#,但聽說以後不太好就業,所以就自學了一段時間 Python,但感覺越來越混亂了,您有什麼好的建議嗎?”

我只能說不混亂才怪。編程語言雖然有相似的語法,但畢竟是不同的編程語言啊,之間還是有很多差異的。對於初級程序員來說,切勿貪多,先把一門編程語言吃透再說,等你有了融會貫通的本領,再去學新的編程語言也不遲。

我剛剛查了一下(見下圖),C# 還是挺熱門的編程語言,沒到不太好就業的地步,別隨便聽信別人的話,要學會自己去判斷。Python 是門不錯的編程語言,增長勢頭很猛,但遠沒到那種獨霸天下的地步。

這8 項升職加薪的技能,90%Android程序員都沒掌握!!!

學校有不盡人意的地方,但不至於蠢到讓學生學一門已經被市場淘汰的編程語言。在這一點上,我寧願站在支持學校的立場上,否則就太糟糕了。

我承認,學霸學什麼都快,不僅學的快,還比平常人學得好,學得多,因為他有一套自己的學習方法,但大部分學生並不具備這種條件。如果你對自己沒有這種認知的話,很可能會陷入泥潭。

因此,我給出的建議是,深入並且專注於一種編程語言,當你對使用這種編程語言充滿信心時,再去學其他的編程語言也不遲。

02、代碼可讀性好、功能正常沒有明顯bug。

作為程序猿,最基本要求是:代碼可讀性好、功能正常沒有明顯bug。

但我見過太多這行裡的毛頭小夥,數字常量到處埋,函數命名用拼音,if else 十層八層嵌套,匈牙利命名法和Linux命名法混雜,代碼像擠在一張皺了的紙上,零註釋或寫完代碼補註釋,異常處理缺失,還有基本功能一用就崩潰,還辯解說,在我那裡是好的呀。遇到這一類人,通常我在心裡先給打個D等(ABCD),日後恐難以翻身。

還有稍微進階一點的毛病,說這個功能包我身上沒問題,又或者一週之內絕對給你搞定,領導你放心。最後拿出來的代碼不是錯漏百出,就是規定時間根本完不成,而且到deadline前你詢問他的時候才告訴你搞不定。。。項目組裡有這樣的人,要麼得配一個給他擦屁股的,要麼得配一個項目助理時刻監督他,換一句話說,他的貢獻值其實為負。

程序猿要想進階,其實什麼設計模式、架構、高深算法、莫測技術都不重要,這些都只是術,或者說套路。最核心的應該是,把簡單的任務完成好,之後再完成更難一點的任務,這樣你就慢慢進階了。為了自己的承諾和項目組整體的進度,有的時候,你需要在保證質量的基礎上,拼命加班,不負所托。

再補充一點,可靠並不是說絕不出錯,是人都會犯錯。但你不能重複犯錯,相同的錯誤出現兩次,會嚴重影響別人對你的信心。

03、算法與數據結構

BATZ 等國內的一線名企,在招聘工程師的過程中,對算法和數據結構都會重點考察。但算法易學難精,我的很多讀者技術能力不錯,但面試時總敗在算法這一關,拿不到好 Offer。更別提高薪了。

面試官為什麼愛問數據結構與算法,答案很簡單:

  • 算法能力能夠準確辨別一個程序員的技術功底是否紮實;
  • 算法能力是發掘程序員的學習能力與成長潛力的關鍵手段;
  • 算法能力能夠協助判斷程序員在面對新問題時,分析並解決問題的能力;
  • 算法能力是設計一個高性能系統、性能優化的必備基礎。

然而很多程序員界的小菜鳥,可謂是,從大量的 CRUD 業務中,練就了一身複製粘貼即可用的本領。

因為大家不是都說:程序 = 複製 + 百度 嗎,再高級一點的就是複製 + 谷歌嘍。(我不禁想,難道科學^上網就高級了?)

反正都是拿來主義嘛,代碼能跑起來就完事,實在不行,刪庫跑路也很輕鬆呀 _。

這8 項升職加薪的技能,90%Android程序員都沒掌握!!!

但是呢,迫於網上不斷流出的 “35歲程序員危機” 話題,我不得不開始認真思考,我這馬上奔三的大齡青年,離 35 歲還差多遠呢 。

再加上,身邊大佬朋友都在說算法的重要性,看來,我真的需要重新考慮“程序”的定義了。看下邊嚴肅版的官方定義。。。

程序 = 算法 + 數據結構

長期來看,大腦思考能力是一個人最重要的核心競爭力,而算法是為數不多的能夠有效訓練大腦思考能力的途徑之一。有了這項能力,很多別的程序員解決起來很困難的編程問題在你這裡就會迎刃而解。

04、基本的數據庫知識

雖然軟件開發人員更應該專注於程序設計而非編寫和優化 SQL(應該交給專業的數據庫管理員負責),但在我們國內,只有頂尖的企業才會有數據庫專家。扎心了。如果你想要在軟件開發這條道路上走得更高更遠,懂一些基本的數據庫知識是必須的,比如說:

  • 如何將業務中的對象屬性轉化為數據庫字段;
  • 如何從數據庫中檢索數據,並將數據集拼接在一起;
  • 如何往數據庫中插入、修改、刪除數據;
  • 索引的數據結構及原理;
  • SQL 語句的優化;
  • 等等。

如果再懂一些數據庫分庫分表的中間價,那你可能就會成為團隊的寶貝了,畢竟所有的應用程序都要與數據庫交互,另外,數據庫是系統最先出現性能瓶頸的地方——總有你大展身手的時候。

這8 項升職加薪的技能,90%Android程序員都沒掌握!!!

05、7大主流技術專題與移動架構師項目實戰

要想升職加薪,如何由初級工程師進階成高級架構師,對於Android架構師職責的介紹,網上已經鋪天蓋地,就不再贅述。今天我主要給大家分享一下成為一名Android架構師應該掌握的技術能力。

深度對接阿里P7高級工程師級別的主流技術體系,並且綜合了目前的各大互聯網公司如華為、抖音、OPPO、阿里等主流技術(即使你不想選擇阿里,其它的大廠照樣適合)

主流技術專題&項目實戰

這8 項升職加薪的技能,90%Android程序員都沒掌握!!!

06、源代碼管理工具

記得我剛參加工作那會,用的源代碼管理工具叫做 CVS(Concurrent Versions System),估計有不少讀者沒聽說過,非常非常難用。後來遷移到 SVN(Subversion)後,情況總算是有了很大的改善,它不僅支持 Eclipse,還有專屬的客戶端,除了管理源代碼,還可以管理許許多多的文檔。

每天上班的時候先從服務器獲取最新的代碼,然後開始一天的工作,下班走之前切記要提交一次代碼,否則就很容易耽擱團隊其他成員的開發進度。

這8 項升職加薪的技能,90%Android程序員都沒掌握!!!

現在呢,有了 Git,它是一套開源的分佈式版本控制系統,可以有效、高速的處理從很小到非常大的項目版本管理。它與 SVN 最大的不同之處,在於每個開發者的電腦上都會有一個本地倉庫(Local Repository),即便是沒有網絡也一樣可以提交版本,查看版本,以及比較版本;等到網絡連接上之後,再提交到服務器端。

源代碼管理工具最大的好處就在於它可以幫助我們保留不同文件更改的歷史記錄,並且允許多個開發人員對同一文件的代碼進行合併。舉個例子來講,小王完成了一項任務,然後提交了代碼;但他覺得有待改進,於是他重新修改了代碼並提交到了版本庫,誰知道,程序上線後出了 bug,這時候源代碼管理工具可以幫助他快速回滾到之前正常的版本。否則的話,小王只能被祭天了。

07、測試

測試真的是太重要了!但並不是所有的開發者都這樣認為,竟然有團隊成員不經測試就把代碼提交到代碼庫,並且是會報錯的那種,我天吶,遇到這種隊友我也是醉了。

在我回來之前,是在一家日企工作,測試是一項非常重要的工作,佔用的時間比代碼編寫的時間多多了。從單元測試到集成測試,所有的測試結果都要整理成冊,所有的邊界條件都要測試到,哪怕你覺得完全沒有必要。但正是這種一絲不苟的態度,成就了日企軟件高質量的美譽。

一個優秀的開發人員絕不允許他的代碼在交給別人之前不經測試,我想這是不容置疑的。

08、調試

說句實在話,在我做程序員的這 10 年裡,調試代碼的時間比編寫代碼的時間要多得多。因為解決 bug 的難度要比創造 bug 難得多,首先你要先復現問題的場景(真的是難啊),要復現問題就需要你擁有出神入化的調試技巧,否則只能錘爆鼠標,然後大喊“為什麼,為什麼,為什麼我的代碼無法正常運行呢?”

入門級的調試很簡單,你只需要在發生問題的代碼處打個斷點,然後再跑一跑,就能從堆棧信息和代碼的上下文中發現問題。難度再上升點的話,就需要你創造代碼執行的條件;再難的話,你甚至需要內網穿透,比如說微信公眾號開發;再再難的話,就不是一句半句能說得清楚了。

總之呢,調試就是為了讓你弄清楚代碼不能正常運行的真正原因,如果你的調試技巧不過關的話,甚至有可能會被表象矇騙,從錯誤的角度去修改 bug,從而引發更多、更大的問題。

09、最後

引用段落我們都知道,一個優秀的程序員是需要不斷學習的,從初級程序員到高級程序員,從初級架構師到資深架構師,或者走向管理,從技術經理到技術總監,每個階段都需要掌握不同的能力。

引用段落早早確定自己的職業方向,才能在工作和能力提升中甩開同齡人

題外話,我在一線互聯網企業工作十餘年裡,指導過不少同行後輩。幫助很多人得到了學習和成長。

我意識到有很多經驗和知識值得分享給大家,也可以通過我們的能力和經驗解答大家在IT學習中的很多困惑,所以在工作繁忙的情況下還是堅持各種整理和分享。但苦於知識傳播途徑有限,很多程序員朋友無法獲得正確的資料得到學習提升,故此將並將重要的Android進階資料包括自定義view、性能優化、MVC與MVP與MVVM三大框架的區別、NDK技術、阿里面試題精編彙總、常見源碼分析等錄播視頻免費分享出來。

這8 項升職加薪的技能,90%Android程序員都沒掌握!!!

這8 項升職加薪的技能,90%Android程序員都沒掌握!!!

需要的朋友,可以點擊關注+轉發+私信“學習”前往免費領取!

希望我能夠用我的力量幫助更多迷茫、困惑的朋友們,幫助大家在IT道路上學習和發展~真正實現升職加薪!


分享到:


相關文章: