作為一個剛剛入職Android開發的應屆生,該如何走向架構師?
普通二本的應屆生,剛剛在杭州找到一份Android開發工作(公司還可以有600多人,大技術有200人吧),,
大學時的專業是EE, android是自學的.我的目標是做一個架構師,請問現在有什麼學習的方向么?是繼續深入學習android與java,日後再學別的?還是說現在開始就能涉獵更廣的知識了?
剛好最近看到一個infoq的帖子,大家可以先看看。
是時候開始招募移動架構師了
infoq就是一天到晚聊架構的,他們寫這種文章不奇怪。我個人以為:所謂嚴格的架構師崗位設定並無必要,沒必要為此專門設置一個title。
做技術本身就是不斷權衡各種技術方案的過程,小到實現一個feature, 大到所謂架構,其實都是一些技術方案的選擇,這些事情每個程序員每天都在做,只是隨著經驗的積累,技術的成長,總有一小撮人脫引而出,他們能夠根據情況做出相對正確的決定,因此獲得大家的信任,在一些重要的技術選擇上發揮影響力。這其實是一個順其自然的過程,所以架構師應該是在團隊內部逐漸成長起來的有技術影響力的人,他可以是一個工程師,也可以是一個Team Leader。
反之如果一個有架構師經歷的人,過來你們團隊負責所謂架構的事情,就不那麼接地氣,一個典型的問題是對業務的不熟悉,往往會影響他做出以往那樣正確的判斷,他也需要時間來證明自己的影響力,也需要跟大家一起在一線多做做feature, 體驗一下大家的苦逼所在,才能更好的改進開發效率。
從這個角度來說,架構師其實是一個偽命題,你可能需要的只是一個經驗豐富的工程師,他能快速學習適應新業務,洞悉目前項目中存在的問題,隨著需求的不斷變化,不斷地作出相對正確的技術判斷,改進生產率。
我最近運營了一個Android開發公眾號,AndroidTrending, 主要是一些經驗分享與Android最佳實踐,大家有興趣的話,歡迎關注。不要迷信架構師
我和題主很類似啊,從開始學習編程就想當一個軟體架構師,一直到現在,都快10年了啊也沒當成。根本就沒見哪個公司有「架構師」這麼一崗位。那有什麼「架構師」。無非是熟悉幾個領域,熟悉幾種框架,熟悉一些原理,掌握一些經驗,軟體開發過程中承擔一些設計工作,實現一些設計目標。別盲目什麼「架構師」了,還是好好的當一個優秀的程序員。優秀的程序員和一般的程序員差別在哪? - 程序員優秀久了就有人叫你架構師了。到不如說說該如何成為一個「優秀的」程序員。先看這個:https://www.quora.com/What-distinguishes-a-great-software-engineer-from-a-good-one鑒於題主還是個應界生又不是正經CS專業,第一步:把人家CS的基礎課程先學一遍,誰讓咱是跨專業呢。
第二步:自學的android,第一步做完基本也快兩年了吧,這期間把android framework 擼一遍吧。
第三步:上邊耗時快2年了吧。沒有女朋友的話也該找了吧。第四步:我編不下去了,我實在是不懂android。瀉藥 @Dennis Yang,能力有限,隨便答答。
寫出實用或能用的代碼並不難,但是很難寫出好的代碼。架構師和工程師之間的區別在於,工程師更關注實現的結果,而架構師關注實現的過程。
當然,並沒有純的意義上架構師和工程師之間的區別,架構師本身也是由工程師分化而來。當編碼達到一定經驗時,都會開始關注結果以外的東西,會發現任何東西都可以抽象、分層、解耦、整合,會開始關注「架構」層面上的東西,畢竟他們也寫夠爛的代碼了。
你們啊,老想著做什麼架構師,多積累點經驗、多點反思、多點沉澱啊。
題主應該先精通android開發再來問這個問題吧,注意是精通哦
談到安卓,不得不說,你的歸宿,你這輩子繞不開的話題。
現在應該有不少變化。
這是老馬天下布武,與老馬包圍網。
其中的包圍網的佼佼者
那麼問題來了。你要往哪裡走,選擇誰。
因為這些都是你未來的老闆。
怎麼進去呢
你要對硬體有個基礎的認識
這個也得懂。什麼樣的脈絡你得有個基礎的認識。
於是你,要開始學更多的東西
然後呢,某為的 10代手機,已經增加了ai晶元。
你已經準備好被淘汰了嗎
顫抖吧,少年
你真殘忍,居然還不點一下免費的贊。。。。。。。。。。。。
我服你了。。
你行。
你。。。。。。。。。。
感謝 感謝給我的未來架構師
聽說這小子太聰明了。於是。。。。就瓜娃子嗝屁了。
1. 沒有業務,就沒有架構。業務代碼寫得足夠多,才能明白業務過程中的痛點,才能明白架構是為了解決哪些問題。2. 解決問題的方式有很多種,你還要明白如今主流架構的優缺點,真正懂了這些架構。真正懂了,不是說看看網上說說就是懂了,要真正用過這些架構,思考問題與優點。所以,我覺得架構是自然而然的,到了某個階段,你自己就會去思考架構的問題。而不是「強行」架構。多學,多思考,多實踐。視野要大,思考要深,實踐要紮實。
學啊,200個技術總有比你厲害的吧,而且600人的公司,200個技術肯定有公司自己的框架,那麼問題來了,框架是誰寫的,找他學啊....
萬物皆對象。其實編程和做國家領導一樣,抽象治國。你像「改革開放」四個字都可以衍生出中國現在的大部分政策體系。堅持某某理論,高舉某某旗幟,深入貫徹落實某某。實現某某偉大復興。這幾句話是我國所有政策之本。所以要高瞻遠矚。永遠錯不了。地方執政經驗豐富的幹部才能進中央。你像習大大從知青一步一步干起的。從最小單位,開始熟悉其中的運作原理與關係。舉一反三,不斷的去面對問題,問題積累多了,就是經驗。
Android系統是開放源代碼的,裡面可以學習借鑒的東西簡直取之不盡 用之不竭。做了Android開發多年,有時也會涉及其他平台的開發。總體的感覺是技術是互通的,對於Android一些原理的深刻理解可以讓你輕易理解其他平台的架構和原理。所以有點慶幸從這麼一個優秀的博大精深的開源系統入手。
同樣是應屆畢業生,學Android不久。架構師覺得現在還離我比較遠,覺得架構師不是短期就可以做到的,必須要有長期的實踐基礎。自己獨立幫創業公司開發過APP,創業公司需求變化特別大,寫著寫著就覺得,怎樣寫可以讓每次需求改變時代碼修改方便一點呢?自己經驗不足,沒辦法在開發前就可以想到。如果一開始有個架構師,能把所有問題都考慮進去,那不就方便多了。目前我對架構師的理解就是這種~( ̄▽ ̄~)~後來邊開發,邊看其他書,或者別人的代碼,有種感悟,TMD寫得太漂亮了,一開始我寫成這種修改就方便多了。於是封裝一些工具類,定義一些介面。用起來還真的方便很多。雖然還是重複代碼很多。在我現在這種水平,覺得還不是考慮架構師的時候,我只要寫多點代碼,多積累一點,通過寫自己的代碼,修改自己的代碼,不斷提高自己。鍛煉到能在開發之前考慮大多問題,那個時候再來考慮架構師。現在連具體的功能都很難實現,連自己的垂直開發領域都沒辦法做到,還要花費精力去廣度發展,現在我還是沒能力做到。同樣是剛入門的,希望可以互相學習。之前知乎上也有人談論過這個問題。http://www.zhihu.com/question/31085907
年輕人好好寫代碼,不要空想
一般架構指的是服務端架構 比如垂直架構 分散式 流式架構 側重點在於承載量和分發量 客戶端能架構啥?會組合使用幾個框架就能叫架構師了嗎?客戶端目前我個人認為還達不到能談架構的地步
先給題主看看我的經驗總結的幾篇文章,可以說是android方面架構的入門:
Android項目重構之路:架構篇
Android項目重構之路:界面篇
Android項目重構之路:實現篇
好了,如果你上面幾篇全部看懂了,那你對android的架構設計至少不是門外漢了;如果你還沒看懂,那說明經驗還不夠,需要在不懂的地方多學習多積累;如果看完覺得這個架構存在各種問題,恭喜你,你已經不只是具備初級架構師的能力了。
年輕人,你能保證你的代碼寫得無敵了嗎?沒有的話,還是乖乖寫代碼吧!
因為,
步子大,容易扯著蛋!很多所謂的架構師不過是技術選擇總監罷了
隨著移動平台的發展和其應用的不斷改善,質量成為決定成敗的關鍵。用戶的要求也越來越高 。作為程序開發者,在當下時代的我們是非常榮幸的,因為有很多的參考資料和便利的開發工具方便我們去使用。但是同樣也意味著我們有很大的挑戰。如何保質保量的去有效率的開發,是沒有一個程序開發者所追求的。
以下是對應用開發者的10條建議,以便能幫助大家更有效的去編程,做一個高效率的碼農!
1)塑造一個良好的編碼風範
一個優秀的開發者應該善於運用常識、完善的演算法和標準設計模式。比如Java特點是面向對象的, 就意味著我們可以對其封裝,和簡化。做一個功能,就要把它當成人體一樣,手和腳能夠在同一時間內做不同的任務,相互之間不受影響,同時又收到到大腦中樞神經的控制。其次是要有資源釋放意識,打開了cursor就要記得關閉,盡量做到晚獲取,早釋放。
2)讓阻塞操作遠離主UI線程
1、Handler+Thread
2、AsyncTask
3、用服務的時候要用IntentService和自定義後台服務。
因為這些自帶的非同步處理的組件能幫你省了很大額內存開銷。當有其他程序運行時,不會讓你的應用滯後或中止。
3)要學會使用最新的Android SDK版本和API
使用Android和Java的最新sdk可以更快的與時代同步。畢竟新出來的API是較為穩定的,這樣一來可,擁有新的API可以更快的對問題進行解決和bug 的修復。新API有助於開發者編寫出更穩定的應用。要明白最佳的做法總是隨著時間的推移而變,聰明的開發者應該總是站在整個平台的最前沿。
4)學會異常的捕獲(UncaughtExceptionHandler)
Android系統碎片化造成應用程序崩潰嚴重,在模擬器上運行良好的程序安裝到某款手機上說不定就會出現崩潰的現象。而且,往往都是程序發布之後在用戶端出現了崩潰現象。所以,如何及時捕獲並收集Android平台的崩潰就顯得愈發重要
這個時候如果之前我們使用了異常捕捉機制,就方面多了。注意:
在Android應用程序中
全局的Application和Activity、Service都同屬於UI主線程,線程名稱默認為「main」。所以,在Application中應該為UI主線程添加UncaughtExceptionHandler這樣整個程序中的Activity、Service中出現的UncaughtException事件都可以被處理。
5)盡量少使用第三方框架
很多人過多的依賴於第三方框架,導致最基礎的東西都忘記了,記得網上有這樣一個搞笑圖片:不要給我說什麼底層原理,框架內核,老夫敲代碼就是一把梭! 難道我們都受這樣的影響!聰明的程序員大部分都是自己寫框架,牢固基礎!
6)確保UI布局簡單優雅
簡單的屏幕展示不僅方便閱讀,還能加快載入速度。與其在一個單一屏幕上堆砌太多不必要的功能,不如花時間去開發優雅的用戶界面。簡單優雅的UI不僅能提高應用性能,還能提高用戶使用該應用時的效率。
7)根據目標設備調整應用資源
為儘可能高效地載入,需要根據具體設備的配置調整相應資源,尤其是圖片資源。為使應用包文件合理適用不同設備,首先可只添加運行該應用需要的核心資源,然後再根據具體設備下載相關內容。
8)進行布局優化
1、使用HierarchyViewerUI性能分析工具,分析布局文件的性能,層級嵌套,UI布局複雜程度及冗餘分析,View嵌套的冗餘層級,View的性能指標:測量、布局、繪製的渲染時間。
2、Layoutopt是一款簡單的命令行工具,可幫助找到不必要的控制項嵌套以及縮減布局資源,從而使應用變得可能「苗條」。控制項越少、布局層次越淺,性能就越好。
9)要學會用工具進行分析
1、 使用Traceview性能分析工具分析
2、 如果使用eclipse的話可以選擇MAT工具
3、 第三方更智能的性能分析工具BlockCannery一個強大的Android程序調試工具,輕鬆幫你找出卡頓
4、 使用強大的AndroidStudio調試工具——Stetho
5、學會DDMS
6、 使用Hierachy Viewer可視化調試工具
7、 Hierachy Viewer能很方便地在開發者設計,調試和調整界面時,快速定位問題,解決問題,提高開發效率。
Android SDK自帶了很多用於應用分析的工具,其中最受歡迎的是Traceview,這款圖形工具可以幫助調試和找到應用中的性能瓶頸。
10)不要貪多,先把自己的飯碗的學精
無論你是做java方面的也好,做移動端的也好,且不能見什麼就學習什麼。反正我就是這樣的,如果學習另外一門語言,已經掌握7分度了。就算我們的android有些東西半年不用也會有所忘記的吧!每個人都有健忘性,也可能是我上了年紀了吧!我想作為常人的你門也是如此吧!
畢竟沒有哪一門是最吃香的,畢竟沒有哪一門是最差的。要記住Android 開發者高薪多的去了,相信你就是下一個他!
11)為什麼一定要注重Java基礎?
對於一個學習Android和Java的開發者來說,Java基礎十分的重要。為什麼這麼說呢?
可能大多數人都忽略了這個問題。群里有位兄弟問我:為什麼我工作三四年了,面試大公司老被虐,尤其是BAT這樣的大公司,有時候最基本的問題都回答的不好!
他說一個在某金融公司的面試題,用Node結點來模仿列表進行增刪改查。於是他琢磨了半天寫的是一塌糊塗。
看到這樣的情況,我竟有點吃驚!這不就是最簡單的自定義單鏈表嗎?於是我狠狠地『批評』了他,編程的時候不要只用第三方的,對你來說也許最簡單的往往也是最最重要的,要注重Java方面的基礎!
是的,有些人確實已經做了三年多的開發,進大公司總是非常困難,其實原因可想而知。這就是為什麼別人能夠寫一些開源框架而你不能!
結語
作為新時代的碼農,靜下心來,循序漸進。程序員,你一屋不掃何以掃天下?這裡我提出了自己的一些見解,如果有那些地方說的不到位,還望大家交流指正。
最後祝願大家在這條道路上走的更高,更遠!
閱讀更多
上半年技術文章集合—184篇文章分類匯總
NDK項目實戰—高仿360手機助手之卸載監聽
最新2017(Android)面試題級答案(精選版)
「你還有什麼事想問」——如何回答面試官的問題
Android 圖片選擇到裁剪之步步深坑
相信自己,沒有做不到的,只有想不到的
在這裡獲得的不僅僅是技術!
這裡學到不僅僅是技術
看到很多大佬都關注了這個問題,我也關注一波吧。
簡單說說我的拙見,移動端開發天花板不高(相比較來說),也許能走上架構師的人都很大程度是拼人品和情商的吧,能帶團隊,會推銷自己。當然了,肯定也要有一定戰鬥力(技術上)的。
努力很重要,但也要看歷史進程嘛 : )
我們還沒到拼人品的時候,還是好好提高自己技術吧,該來的總會來的,逃~
現在還在努力碼代碼中。。。
業務是王道,工具只是實現手段,業務才有架構之說
推薦閱讀:
※遊戲圖形程序員的發展方向與競爭力?
※程序員的職業發展路線應該是由廣度到深度還是由深度到廣度?
※碼農如何進動畫影視公司,後續發展怎麼樣?
※程序員使用無功能鍵區的鍵盤+IDE開發,是一種怎樣的體驗?
※為什麼知乎上這麼多人推薦 HHKB,卻不反覆強調說該鍵盤不適合一部分程序員?