面向開發者,開發主管,總監,CEO等。
經驗之談,比較雜亂,僅供參考。
專案定義
不同型別的專案當以不同的處理方式。
1. 專案型
該型別專案,重點在於完成專案,取決於客戶需求,或難或易,開發者能做的就是深入挖掘需求,細化工作量,以表明服務態度,避免返工。
2. 產品型
該型別專案,重點在於開發一個好的產品,逐步實現產品定義的功能,除此之外,還需要不斷的優化架構,重構程式碼,提高產品質量,把好的產品輻射到好的測試,好的架構,好的實現,好的效能等等。
下文將將基於產品型專案展開。
迭代開發
相對於大階段佈局,小步伐的迭代式開發更具靈活性,更能應付專案的變化因素。
1. 每日會議
通過每日會議的形式,回顧和分析昨天遺留問題,安排今天的計劃,有效把握開發節奏,防止懶惰情緒的滋生。
2. 定義大版本和小版本
把核心重要的大更新,定義為大版本。把不核心或者輔助的更新,定義未小版本。
開發大版本的時候,捨棄一些不是必需的更新,放到後面的小版本上。
開發小版本的時候,完善之前大版本沒完成的,同時優化程式碼,甚至新增一些小改動,增加一些小功能。
技術能力
除了上述巨集觀的把控,提高自身能力也格外重要。
1. 更好的解決方案
一定要以自己的實際經驗來總結和評估解決方案,並通過比較選擇一個更好的解決方案。
不能人云亦云,也不能滿足於自己現有的成果,求真務實才能更進一步。
這裡列舉幾個方面我所瞭解的解決方案:
1.1. 基本
- 搭架子 – 1. 目前以多Tab + Fragment為主,已成型; 2. 專案結構
- 非同步載入圖片 – UIL,Glide
- 網路請求 – robospice + google http client
- Json – jackson2
- 快取機制 – robospice
- 自動更新 – lesscode
- 事件通訊 – event bus, otto
- 資料庫 – litepal
- 記憶體檢測 – leakcanary
- 其他各種UI和功能類庫
1.2. 服務
- 統計服務 – 友盟、百度
- 雲端儲存服務 – 七牛
- 推送服務 – 極光,個推,小米
- 支付服務 – 支付寶、微信、銀聯、連連支付、現在支付、充話費、語音支付等
- 分享 – share sdk
- 第三方登入 – 各大開放平臺sdk
1.3. 工程
- 多渠道打包 – gradle flavor
- 持續整合 – jenkins
- APK瘦身 – Proguard, AndResGuard, webp等
2. 持續優化的重要性
把一個專案做到可以滿足需求的基本執行,對於開發者開說,說明你成功了,但是隻是第一階段的成功:實現。
接下來你要面臨的問題,很有可能會是一大波新的變化需求,程式碼混亂,效能低下,錯誤異常率下不來等等,這就需要:優化,並且是持續的優化。
持續的優化,不僅能解決很多問題,而且能保證程式碼有效健壯的發展,這對開發者來說,尤為重要,誰都喜歡寫更好的程式碼,都不喜歡改那些亂到掉渣的程式碼。
做專案評估的時候,考慮一下基本優化的工作量;迭代版本的時候,留一定的持續優化的工作量。
3. 困難挫折警示
經常碰到困難,經常被技術問題卡住,經常粗心大意 … …
說明什麼?
要麼太沒經驗,要麼能力不足。
我們可以從多個方面著手擴充技術視野、提高動手能力、優化放錯機制等等:
- 關注社群動向
官方資訊,github, 技術部落格(國內外),視訊(慕課網、極客學院等)… …- 勤於實踐
把別人的一些好的經驗或者效果,動手實現,轉化為自己的經驗,甚至進一步昇華成更好的成果。- 多參與專案
珍惜參加專案的機會,多參與,用行動改進,不做旁觀者。- 善假於物
多學習一些工具git,linux,python,tcpdump等等,用的比較多的,最好能吃透一點(比如git),小工具,大用處。- 細節決定成敗
成也細節,敗也細節。會區分同類的不同點,能從小的地方改進,遇到困難沉著應付一個一個的攻克細節…
小結
兩個字:落實!