本文是我一個朋友的經歷,謹以此文告訴那些嚮往更好的將來發展而一直努力奮鬥的朋友們。無論你如今身處什麼小公司,都不要氣餒,機會仍是有的,只要你勇於拼搏奮鬥,我相信你必定能夠成功的。html
首先介紹一個個人朋友:個人朋友小王,從小就能吃苦。他是一個不知名的大專畢業的,學歷不算很高,學的計算機專業。從學從來看,他是沒有優點的,不是985,也不是211,又不是本科。先行條件他都不具有。那麼究竟它是如何進入阿里的呢?請看下文詳細描述:前端
我這裏就大概歸納了幾點成功祕訣,僅供參考學習:vue
作技術和打仗是差很少的,你時時刻刻準備着開發,就爲了上線(上戰場)。首先你要對本身有個明確的認知,你會那些技術,哪些還不理解的。建議多去看看大公司的面試題和麪試要求,看看他們主要技術方向有哪些方面,而後做爲參考去鞏固學習。html5
技術測評這個建議每月作一次。這個能夠由你本人自評,也能夠小組內部評價。若是大家公司有明確的kpi考評的話,那麼你能夠把測評結果做爲kpi的輔助工具。java
通常來說,首先有一張很詳細的測評表,測評表主要包括技術分類,每個技術概要,評分,而後是將來發展方向等方面。經過這個表主要把你的當月所學到的技術,用到的技術點都羅列出來,而後根據掌握程度細分進行評價,而後下一步須要努力的方向,以及技術在項目中的運用等。雖然小公司不具有條件公司給你作技術測評,也多是獨立開發,沒有小組測評,建議仍是作一個我的測評,對你本身的技術有一個更好的瞭解,方便下階段的技術提升和擴展。python
技術更新很快,可能你今天學了,一段時間沒有用到,明天就忘了。因此我建議不光要學習,更重要的是要多複習,把你學過的東西不斷的去鞏固溫習。react
(1)關於作筆記工具選擇:程序員
爲了之後能夠更好地複習,要養成作筆記的好習慣,若是沒有紙質的日記本,能夠用有道雲筆記或者印象筆記之類的記憶工具,輔助你作筆記。面試
(2)關於思惟導圖:編程
每一次作筆記以後,咱們要作一個思惟導圖去把筆記整理成目錄,經過它一目瞭然的能夠看清楚整個筆記的結構,能夠清晰地看到你要複習的關鍵點。思惟導圖工具推薦:xmind、ProcessOn在線網站等。
(3)關於作筆記的方式:
關於作筆記不要僅僅是copy源碼,也不要僅僅是copy別人的博客,必定要抓住要點去作筆記。好比你查找一個劉海屏適配,你把別人的博客全文複製進來,收藏起來之後再去看,這種作筆記的方式是不可取的。你只須要抓住核心關鍵點就能夠了,好比它是用的什麼樣的適配,根據什麼適配的,核心代碼有哪些等等。而後就是以前收藏過哪些相似博客,作一個綜合分析等,這既是作筆記,也是一種總結和思考。
技術雖然重要,可是態度更重要。端正態度也許你距離成功也不遠了。
不恥下問這是一種態度,是一種很難的的精神。看到網友的面試經歷提到過:有些大廠出來的人動不動嘴上就掛着我是哪一個大廠出來的怎麼怎麼樣,常常炫耀,顯得本身很6的樣子。其實你要問他問題,他還一副高高在上的樣子,愛理不理的。其實能夠看出來,雖然這些人身處大廠,可是這種人的態度不是很友好。人都是生來平等的,沒有誰高誰低。今天你在大廠春光得意,明天就被人搞下臺。忘乎所以對你本身沒有一點好處,還落得一個很差的名聲。你會的別人不必定會,你不會的可是別人可能會,你要懂得不恥下問,你會發現,經過提問,你竟然能夠學到更多東西。
除不恥下問以外,一樣的還有一個很好的品質,那就是:謙虛。懂得尊重人,不恥下問的人基本都很謙虛。我那個朋友小王性格就很隨和,很謙虛,一點架子都沒有,戴着個眼鏡,看起來像是讀書人,其實他是一個技術大佬。
這裏講的是凡事都要有一個良好的規劃,無論是對工做任務的安排,學習的安排,仍是對將來前途的規劃,都須要首先有個規劃。 古話說:「凡事預則立不預則廢」,說的不是沒道理的。你如今身處小公司也不要緊,不要心灰意冷,也不要長吁短嘆,工做很忙很累也不要抱怨。
你首先要明確一點就是你的目標是什麼?
若是是混日子,那你基本就沒有什麼好的發展了,程序員吃的青春飯你們都理解的,正是學習的好時機你不努力,你對將來沒有規劃,那麼你就算離開了那家公司仍是沒有什麼好的發展的(創業或者家裏有礦除外)。
我相信你們都不想混日子的,都想有個更好的發展。那麼你就要從你進公司開始,作了計劃。你如今應該怎麼樣朝着目標前進。你的將來還缺乏什麼?有哪些要求是大廠須要的,你須要之後去跟進的?而後你就要制定一個短時間計劃,短時間內你要實現什麼突破,攻破什麼技術方案,有什麼成果,怎麼運用到項目中。這些你都要作一個計劃表,安排出來,天天抽取一兩個小時去按照計劃學習。
有人會問:「我一個小公司的,我作功能的時間那麼忙?哪有時間安排這安排那的?」其實這是一個誤區。時間是擠出來的,咱們天天能夠抽取一兩個小時學習吧,上班途中看公衆號,下班途中看書學習,這都是充分利用時間的示例。你去看看一些成功的大佬,他們的工做事情安排都是有計劃的,他們通常不會作無計劃的事。其實你能夠在網上發現王健林的做息時間,幾點起牀,幾點看書,幾點開會都有明確的安排。雖然咱們是通常人,可是咱們也能夠給本身作一些小目標,從一個個的小目標開始着手去學習。王健林說:「給本身一個目標,賺他一個億試試。」咱們固然不可能那麼作,咱們能夠這麼作:「先努力寫100W行代碼試試。」
好比你準備學習自定義控件。短時間一個月以內你能夠制定一個目標,研究自定義View的全部有關的API使用。若是沒有學完,那就繼續排期學習。後續當你熟悉以後,你就能夠繼續安排一兩個月甚至更長的時間去看View裏面的源碼,好比繪製流程,渲染機制,事件分發機制等,看看它們是如何進展的。再而後就是怎麼靈活的運用到項目中。
技術的發展太快,開發中的需求多樣,你如何快速把你所學的技術用來去開發一個需求,這是一大難題。每每有時候你看到一個需求,可是以你如今的能力還作不了,可是隨着你不斷的學習和積累,之後遇到一樣的需求,你就能夠駕輕就熟去作了。這就是一個技術的積累的問題。
另外技術的積累對於解決問題的能力的提高也很重要。當你的技術有了必定的積累的時候,你看到一個bug,你就會不自覺地大斷點調試,看Debug日誌,看上下文信息,看各個參數賦值信息,看代碼有沒有低級錯誤等多方面去檢查。再好比內存泄漏問題,當你使用工具檢測發現有內存泄漏時,你正常是不容易發現的,可當你平時學習了內存泄漏檢測方式和排查方案,你就會按照一些方案去解決內存泄漏,可能方案並非惟一的,可是經過逐步排查,總會找到問題的根源。這就須要技術的不斷積累和實踐才能夠作到。像小公司每天寫業務代碼,只要上線推廣便可,通常是不太會注重App質量的。可是做爲一個程序猿來說,對本身嚴格要求一點,App質量方面也儘量的去把控一下,就算公司沒要求,你也要本身去嘗試着作這件事,由於這對於一個大型應用是相當重要的,因此你能夠從小應用開始着手去鍛鍊積累你的技術。說不定某一天當你的用戶量增加到了幾百萬甚至幾千萬的時候,你有了前面的積累,再去作的話,就會有一些經驗可循了。
好比大廠的App基本上都會用到插件化你技術。那麼建議首先你去用一下熱門的插件化框架,拿來以後封裝一下用到項目中。而後就是深刻框架的源碼,結合一些大佬的博客和相關書籍,試着去分析源碼,本身作總結,研究實現原理,研究插件化框架跟java虛擬機有什麼聯繫,AMS,PMS,Binder機制這些是如何運用的,hook是如何作的。這是一個漫長的過程,看安卓framework源碼是很痛苦的,須要長久的目標才能夠作到。
身處小公司也不要灰心,相信本身是能夠的。不要由於別人的嘲笑就中止追逐的腳步,別人進了大廠只是比你快了一步而已,有啥可擔憂的?你要有足夠強大的心裏支撐,你才能夠抵擋住外界的質疑。俗話說:「燕雀安知鴻鵠之志?」只要你樹立信心,堅決不移的去作,哪怕項目再小,只要你作的可以體現出必定的水平,那也是很是可取的。畢竟面試第一步基本都是拿技術說話,無論是基礎的,仍是底層的,都不要怕,只要你掌握的足夠多,而且有實戰經驗,下一步就好辦了。
技術的發展太快,咱們是應該根據時代的發展選擇技術,仍是應該循序漸進用之前的舊方案,這是一個難題。這個問題應該辯證的去看待。
首先要把基本功練紮實,先從深度上去學習,就像前面所說的要制定計劃,要在技術上有積累。而後咱們要在廣度上去橫向拓展,不斷的擴展其餘的語言技術棧,好比腳本語言groovy、python;好比js、react、vue等前端技術。
如今的Android開發不像之前的開發那麼簡單了,如今純原生的少,混合開發多,跨平臺框架和工具層出不窮。可是無論怎麼變化,咱們必定首先要了解怎麼使用,而後咱們要理解核心機制,至於用不用到項目中須要結合項目實際作決定。好比rn前兩年很熱門,裏面無非就是react語法,核心是js橋接。好比Cordova也是用的js開發。因此咱們適當的掌握一些前端語言也是有好處的,好比js、html5這些建議學一下,就算不是很精通,可以寫就能夠了。還有react、vue這些框架建議瞭解一下。近兩年小程序也火了一波,熟悉前端技術棧,對於小程序開發是很快上手的,特別是react、vue等前端框架的使用能幫助更好的開發出質量高,好維護的小程序項目,也是值得推薦的。
2017年 Google I/O 大會上,谷歌介紹了Flutter,自此以後衆多Android開發者對此很感興趣,表示上手很容易,學習成本低,性能也不錯,其實也是一個不錯的跨平臺技術,能夠嘗試用一下,畢竟它是新出來的,社區還不完善,目前正式版還沒出來,用在項目中會有什麼意想不到的坑沒法得知,不過能夠本身寫一些小項目玩玩,體驗一下這個技術帶來的便捷和體驗。
這裏面的思想主要有兩種:技術和管理。
(1)技術層面來說,你想在技術上深耕,必需要對技術有足夠的認知度,無論是深度仍是廣度,你都要具有必定的水準。具體技術的要求能夠參照大廠面試的要求去提高本身。建議必定要有着架構的思想去看待編程。
1.寫代碼不能懶散,必定要規範去作,嚴格按照Java代碼規範去作,另外你能夠制定一個代碼準則,哪些須要約束的,哪些須要遵照的都是要有個準則,按照規則去作。
2.必定要有一個文檔,無論是接口文檔,仍是項目文檔,或者是項目自己的需求文檔之類的。小公司可能比較簡單,不少都是口頭說一下,扭頭就變了。建議必定要有書面的文檔作記錄,這麼作的好處:一是爲了記錄需求變動,有據可查;二是爲了規範流程,減小沒必要要的溝通、甩鍋和衝突。
3.必定要注重代碼質量,擴展性和穩定性都要兼顧。由於每每一個app的發展會不斷的迭代延續下去,修修改改是很正常的事情,那麼在寫代碼的時候儘量的多預留接口和開放的代碼,方便之後擴展。須要熟練掌握經常使用框架MVP,而MVC和MVVM(谷歌的)通常用的少不推薦,項目中靈活封裝MVP三層結構代碼。若是是獨立開發,那麼你從項目初期就要肯定項目應該如何去組織架構,怎麼分層,須要用到哪些技術?哪些開源庫我能夠本身去實現的?哪些須要修改源碼以便項目使用的?若是是接手老項目,首先也要熟悉業務邏輯,而後就是修改讓代碼更嚴謹,邏輯更清楚,層次更分明,擴展性更好。
4.上面也講過多多學習,學習開源庫的源碼,學習framework層的源碼,學習jvm。熟悉底層和源碼是作架構必備的技能之一,你掌握以後能夠有更多的解決途徑。
複製代碼
(2)管理層面來說,若是你有興趣當了小組長,管理開發組裏面的人,那麼你就必定要多看一些管理的書籍,專業的理論是必備的,如何合理的安排任務,確保任務按時完成,如何提升團隊開發效率,如何帶領團隊技術提高,如何給團隊帶來更多好處(好比項目獎金等),如何承擔該承擔的責任,維護團隊的利益,如何穩定開發組員的情緒,如何應對突發狀況,如何應對上下級之間的關係等。這些方面都是須要是瞭解和熟悉的,當你真正的作過管理以後,你纔會發現這裏面的門路實際上是很複雜的。
必定要跟着比你厲害的人學習,無論來自哪裏,你身邊若是都是優秀的人,那麼你也差不到哪裏去。有句古話說得好:「魚逐水草而居,鳥擇良木而棲」若是你想去大廠挑戰自我,必定要不斷的去和大廠的人多溝通,哪怕是實習生。多向他們學習如何開發的,團隊管理是怎麼作的,他們須要用的什麼技術等。
多出去走動,多參加一些論壇和技術活動,多認識牛人,多喝同行交流,開拓視野。當你的圈子愈來愈大的時候,你會發現內推其實也是很容易的。若是有常常寫博客,寫開源項目或者開公衆號的朋友,那就更好了,能夠向他們取經學習一下。這些東西既能夠鍛鍊你的文筆,同時也是你我的實力的一個展示的平臺,還能夠收到一些打賞,其實也是不錯的選擇,當你真正參與一些有意義有價值的開源項目的時候,其實這個含金量比你寫代碼相對來講是更高的,因此好好把握,前提是你有足夠多的積累和技術輸出,你開源的東西可以帶來真正實用型的幫助。
【最後】技術不是惟一賺錢的工具。開發是吃的青春飯,當你年紀大一點,基本都會轉管理路線了,或者有的本身創業了。你除了技術以外,還能夠關注一下管理,萬一哪天你進了大廠,恰好缺個組長,你不就有機會能夠去試試嗎?
另外面試是多方面因素決定的,好比你的技術、言辭、表情、衣着、以及給人的感受如何等這麼多因素都有可能影響結果。既然決定要去面試,那就要作好充分的準備,該記住的技術點必定要掌握好,天然發揮就好,大廠也沒有那麼可怕,相信本身,你能夠拿到大廠offer的。
本次徵文活動的連接 juejin.im/post/5b923a…