在過去五年中,我一直做Android相關的工作。在這期間,我與不同背景,不同水平的工程師進行過合作。有些工程師有非常豐富的經(jīng)驗,有些是剛走出校園的應屆生,它們擁有的只是學校學習到的知識并利用業(yè)余時間進行App的開發(fā)。還有些工程師甚至不是CS專業(yè),僅僅是自學的。在合作過程中,我目睹了不同類型工程師的工作交付內(nèi)容和方式。
所以,如果你是一個Android軟件工程師,可以嘗試讀一下這篇文章。首先,很多人誤認為移動開發(fā)非常簡單,移動應用就是把根據(jù)后端的設計把一些界面組合在一起。真的是這樣嗎,其實這與實際情況差的很遠。實際上,如果你看一下PlayStore上的應用,你就會發(fā)現(xiàn)app的質(zhì)量分布其實是一個高斯分布,低質(zhì)量的app很少,同時高質(zhì)量的app也很少。
這里我定義一下平庸的App是什么
在一個非?;镜膶用嫔?, 一個平庸的app 與操作系統(tǒng)不能很好地兼容。首先,不遵循平臺要求的 設計語言,這會使得用戶感到困惑。第二,不考慮運行環(huán)境(內(nèi)存、cpu、帶寬、電量)實際上是有限制的。第三,在某些條件下不能工作(比如在弱網(wǎng)環(huán)境下)?,F(xiàn)在的大部分軟件都存在最后一個問題。
簡而言之,以上三點就是構(gòu)建一個好的移動應用的挑戰(zhàn)。此外,App需要與公司的基礎需求合理地整合,適應不斷變化的業(yè)務需求。
所以如果我要尋找可以處理以上三個挑戰(zhàn)的軟件工程師,以下幾點是我關注的:
較好的軟件工程和技術(shù)水平 這包括:SOLID(面向?qū)ο笤O計)原則,clean code,應用架構(gòu)和測試。數(shù)據(jù)結(jié)構(gòu)和算法也很重要。但是我不在意面試者是否可以平衡二叉排序樹。我關注面試者是否理解基本的數(shù)據(jù)結(jié)構(gòu)(Lists, queues, trees, hash maps),是否理解 O 是什么,可以討論時間和空間的交換,就是最基本的技能。
熟悉java語言(如果面試者非常熟悉其他的語言,我也不會拒絕)。
理解并發(fā) 因為App是響應式的,所以不可以在主線程中執(zhí)行耗時任務。很多事情需要在其他線程執(zhí)行,如果面試者不能處理并發(fā)編程,他們需要在工作和項目中學習。
理解分布式系統(tǒng) 隨著移動應用變得越來越靈敏,需要設計為可以離線使用。這意味著如果網(wǎng)絡有故障,相同的用戶可能會面對不同的狀態(tài)。因此,面試者需要了解CAP(Consistency,Availability,Partition Tolerance theorem)理論和分布式系統(tǒng)的共識模型。
分析解決問題的能力 面試者需要對事物的工作原理保持好奇,并且有大局觀。
較好的口頭和書面表達能力 在技術(shù)上,溝通交流非常重要。面試者清晰地表達自己的想法,同時合理的文檔說明是非常重要的。其實,是否擅長寫文檔一定程度上也代表了代碼能力。
理解當前的技術(shù)環(huán)境和對設計與工程的影響
我并不擔心面試者是否對SDK本身理解多少。如果面試者理解以上的幾點,即使他只是一個Android的用戶,也可以快速地學習。也就是說,面試者同時擁有好的CS背景,了解android生態(tài)環(huán)境,還要知道以下的一些基本概念:
可以畫出Android的基本架構(gòu)
可以描述在點擊Android studio的一個按鈕之后具體發(fā)生了什么邏輯
理解基本的Dalvik和ART 虛擬機
Android進程間通信原理
app的沙箱機制以及為什么要用沙箱
權(quán)限系統(tǒng)(權(quán)限在底層是如果實現(xiàn)的)
進程和應用生命周期
還有一點是可以和面試者聊他擅長的話題,如果他擅長ui,就可以和他聊UI。
可以發(fā)現(xiàn)重要的是判斷面試者是否知道核心的基礎和概念,從而較好地處理分給他們的任務。一定不要雇傭只會使用一兩個library的員工。工程師不僅在必要時會使用library,而且可以在提供解決問題的方法之前可以分析使用情景,預見可能的問題。
再次強調(diào),一定不要雇傭只會使用一兩個library的工程師。
當然,我這里描述的條件適用于senior 工程師。同樣也需要雇傭一些junior工程師。但是一定要控制好兩種工程師的比例。如果團隊中有太多初級工程師,那么開發(fā)過程非常艱難,需要修改一個接一個的線上問題,直到可以代碼達到維護性和測試性良好的程度。
-
Android
+關注
關注
12文章
3973瀏覽量
130221 -
軟件工程師
+關注
關注
8文章
243瀏覽量
21401
發(fā)布評論請先 登錄


硬件工程師看了只會找個角落默默哭泣#硬件工程師 #MDD #MDD辰達半導體 #產(chǎn)品經(jīng)理 #軟件工程師


如何成為一名嵌入式軟件工程師?



嵌入式軟件工程師就業(yè)好不好?
Testin云測獲智能化軟件工程工作組優(yōu)秀單位榮譽

不同時期的硬件工程師,最怕發(fā)生的事 #電子工程師 #硬件工程師 #內(nèi)容過于真實 #YXC晶振 #揚興科技
特斯拉招募軟件工程師強化無人駕駛與機器人遠程操作

FPGA算法工程師、邏輯工程師、原型驗證工程師有什么區(qū)別?

評論