2016年7月27日 星期三

[轉錄] GitHub Android Libraries Top 100 簡介


本文轉錄自https://github.com/Freelander/Android_Data/blob/master/Android-Librarys-Top-100.md#rd




本項目主要對目前 GitHub 上排名前 100 的 Android 開源庫進行簡單的介紹, 至於排名完全是根據 GitHub 搜索 Java 語言選擇 (Best Match) 得到的結果, 然後過濾了跟 Android 不相關的項目, 所以排名並不具備任何官方效力, 僅供參考學習, 方便初學者快速瞭解當前一些流行的 Android 開源庫.
感謝 @GitHubDaily 的大力支持, 以及 @stormzhang 的指點
若有任何疑問可通過郵件微博聯繫我
項目名稱項目簡介
1. react-native這個是 Facebook 在 React.js Conf 2015 大會上推出的基於 JavaScript 的開源框架 React Native, 該框架結合了 Web 應用和 Native 應用的優勢, 可以使用 JavaScript 來開發 iOS 和 Android 原生應用
2.Android-Universal-Image-LoaderImageLoader 是最早開源的 Android 圖片緩存庫, 強大的緩存機制, 早期被廣泛 Android 應用使用, 至今仍然有很多 Android 開發者在使用
3. RxJavaRxJava 是一個在 Java VM 上使用可觀測的序列來組成異步的, 基於事件的程序的庫, 簡單來說它就是一個實現異步操作的庫, RxJava 的優點在於一個詞 "簡潔", 使用它就算你程序邏輯有多麼複雜, 它依然能夠保持簡潔易懂
4. retrofitRetrofit 是 Square 公司出品的 HTTP 請求庫, 同時是 Square 是最早開源項目之一, Retrofit 是目前 Android 最流行的 Http Client 庫之一, 目前版本是 Retrofit2.0 Beta4, 越來越多 Android 開發者開始使用這個請求庫了
5. okhttpOkHttp 是 Square 公司出品的 HTTP 另一個請求庫, Google 不推薦人們使用 HttpClient, 可是 HttpURLConnection 實在是太難用了, 因此很多人使用了 OkHttp 來解決這問題, 據說 Android4.4 的源碼中可以看到 HttpURLConnection 已經替換成 OkHttp 實現呢
6. SlidingMenu(不建議使用)一個側滑菜單開源庫, 在 Google 自己原生態的側滑菜單 NavigationDrawer 沒有出現之前, 這個庫就已經被廣泛使用, 可是到現在這個庫已經被放棄了
7. picassoPicasso 是 Square 公司出品的一款圖片緩存庫, 主導者是 JakeWharton 大神
8. android-best-practicesAndroid 開發最佳實踐, 裡面所介紹的經驗都是來自於 Futurice 公司 Android 開發者, 介紹內容有 Android 開發規範, 架構, 佈局技巧, 以及使用一些有助於快速開發相關工具等等, 非常適合新手去學習
9. EventBusEventBus 是 Android 事件管理總線, 使用它可以替帶 Android BroadCast, BroadCastReceiver, Handler 在 Activity, Fragment, Service, 線程之間傳遞消息, 大大簡化了事件傳遞邏輯
10. android-async-httpAndroid-Async-Http 是 Android 一款老牌異步請求庫, 專門對 Android 在 Apache 的 HttpClient 基礎上構建的異步 http 連接, 該庫有很多特徵, 例如: 庫的 size 小, 支持文件上傳不需使用第三方庫支持, 內部使用線程池來處理並發, 等等
11. frescoFresco 是 FaceBook 公司出品的一款圖片緩存庫, Fresco 是一個強大的圖片加載組件, 支持加載 Gif 圖和 WebP 格式, 支持 Android2.3(API level 9) 及其以上系統, Fresco 中設計了 Image pipeline 和 Drawees 兩個模塊各施其職, 使得圖片完美加載出來, 想知道更多 image pipeline 和 Drawees 有關於它的特性, 可以到它官方平台看介紹
12. zxingZXing 是二維碼領域中名氣最大的開源項目, 它提供了多個平台的二維碼/條形碼掃瞄解決方案, 擁有掃瞄快, 識別率高, 使用簡單等特點
13. leakcanaryLeakCanary 是 Square 公司出的一款檢測內存洩露工具, 該工具能幫助你在開發階段方便的檢測出內存洩露的問題, 使用起來非常簡單方便
14. butterknife由 JakeWharton 大神開發出來的, ButterKnife 是 View 注入框架, 使用它為了簡寫很多 findViewById 代碼, 同時還支持 View 的一些事件處理函數
15. MPAndroidChartMPAndroidChart 是一款強大的 Android 圖表庫, 支持各種各樣圖表顯示, 能想到的圖表樣式這裡幾乎都有, 圖表還支持選擇, 拖放和縮放動畫效果
16. ActionBarSherlock (不建議使用)ActionBarSherlock 這個庫是 JakeWharton 大神開發出來支持 Android3.0 以下版本的, 後來慢慢的 Google 也提供了 AppCompat 庫來支持 Android3.0 以下版本使用 ActionBar, 因此作者不建議我們再使用這個庫了
17. androidannotationsAndroidAnnotations 是一個能夠讓你快速進行 Android 開發的開源框架, 它能讓你專注於真正重要的地方, 使代碼更加精簡, 使項目更加容易維護, 它的目標就是 "Fast Android Development.Easy maintainance"
18. ViewPagerIndicator由 JakeWharton 大神開發出來的一個 ViewPager 指示器, 使用起來簡單方便, 可高度定製, 開發出各種各樣動畫效果
19. glideGlide 是 Google 員工的開源項目, 廣泛應用於 Google 一些 App 上, 在2014年 Google I/O 大會上被推薦使用, Glide 和 Picasso 被人拿來比較研究過, Glide 與 Picasso 有 90% 的相似度, 但在一些細節上還是有點區別的, 各有各優缺點看君選擇
20. HomeMirror開發者是由一名程序媛 Hannah Mittelstaedt , HomeMirror 是一款 Android 鏡子應用, 目前它能實現日期, 時間, 天氣, 生日信息, 事件提醒器, 騎車天氣的推薦, 股票信息, XKCD 漫畫網站的新帖等等
21. Android-PullToRefresh(不建議使用)一個強大的拉動刷新開源項目, 支持各種控件下拉刷新, ListView, ViewPager, WebView, ExpandableListView, GridView, ScrollView, Horizontal ScrollView, Fragment 上下左右拉動刷新, 不過現在這個項目已經停止維護更新了, 推薦使用Android-Ultra-Pull-To-Refresh
22. MaterialDesignLibrary這個庫控件都是遵循了 Google Material Design 設計規範開發出來, 例如有: Flat Button, Rectangle Button, CheckBox, Switch, Progress bar circular indeterminate 等等
23. PhotoViewPhotoView 是 ImageView 的子類, 支持所有 ImageView 的源生行為, 例如: 支持 Pinch 手勢自由縮放, 支持雙擊放大/還原, 支持平滑滾動等等, 並且非常方便的與 ImageLoader/Picasso 之類的網絡圖片讀取庫集成使用, 還方便的與 ViewPager 等同樣支持滑動手勢的控件集成
24. RxAndroid由 JakeWharton 大神主導開發的項目, RxAndroid 是 RxJava 的一個針對 Android 平台的擴展, 主要用於 Android 開發
25. material-dialogsMaterial Dialogs 是一個可高度定製易用, 符合 Material Design 風格的 Dialogs, 兼容 Android API8 以上版本, 個人使用感覺它完全可替代 Android 原生那個, 比原生那個更加簡單易用
26.Android-ObservableScrollViewObservableScrollView 是一款用於在滾動視圖中觀測滾動事件的 Android 庫, 它能夠輕而易舉地與 Android 5.0 Lollipop 引進的工具欄 (Toolbar) 進行交互, 還可以幫助開發者實現擁有 Material Design 應用視覺體驗的界面外觀, 支持ListView, ScrollView, WebView, RecyclerView, GridView組件
27. Android-BootstrapAndroid 版的 Bootstrap, 利用這個庫能夠實現很多 Bootstrap 樣式風格, 之前有學過 Html 的人就知道 Bootstrap 是什麼玩意啦
28. AndroidSwipeLayout開發者是代碼家, AndroidSwipeLayout 是一個支持ListView, GridView, ViewGroup等等左右上下滑動出操作菜單, 類似 qq 消息列表向左滑動顯示出多某條信息的操作菜單
29. daggerDagger 是 Square 公司出品的一個針對 Android 和 Java 的快速依賴注入器, 能夠有效減少你敲代碼量
30. ListViewAnimations一個輕輕鬆鬆給 Android ListView 添加動畫效果的庫, 支持的動畫有: Alpha, SwingRightIn, SwingLeftIn, SwingBottomIn, SwingRightIn and ScaleIn等等, 使用它能很容易就實現帥爆的效果
31.PagerSlidingTabStrip(不建議使用)PagerSlidingTabStrip 是一個給 Android ViewPager添加上 ViewPager 滑動指示器, 從 GitHub 上面看, 這個庫似乎沒有人在維護了, 因此不建議使用, 可使用SmartTabLayout 來代替
32. AndroidViewAnimations開發者是代碼家, 這個庫實現很多很酷炫的 Android 動畫, 動畫效果是借鑑 Animate.css 來實現的, 非常酷, 而且這個使用起來也是非常簡單
33. AndroidSlidingUpPanelAndroidSlidingUpPanel 是一個上拉麵板, 就是向上滑動的時候往上飛出一個顯示面板控件, 該庫效果在 Google Music, Google Maps and Rdio等 App 應用到
34. MaterialDrawerMaterialDrawer 是一個類似 Google 官方 NavigationView 側滑顯示控件, 個人認為 NavigationView 並沒有 MaterialDrawer 實用, 因為 NavigationView 自由度不是很好, 很多都寫死了不可以自由定義佈局, 而 MaterialDrawer 能夠實現跟 NavigationView 一樣的效果, 同時還支持自定義效果, 自由度非常高
35. Material-AnimationsMaterial-Animations 是一個很好過渡動畫庫, 可以應用於 Activity 與 Activity 之間的跳轉, Fragment 與 Fragment 之間的跳轉, 以及各個 View 變化前後的過渡動畫
36. MaterialViewPager一個簡單易用 Material Design 風格的 ViewPager 庫
37. ionion 是一個讓 Android 的網絡操作變得極其簡單, 支持異步獲取和處理JSON, 支持 Android 文件下載 (同時支持下載進度條綁定), 支持安全鏈接和代理
38. stethoStetho是 Facebook 出品的一個強大的 Android 調試工具,使用該工具你可以在 Chrome Developer Tools查看App的佈局, 網絡請求(僅限使用Volley, okhttp的網絡請求庫), sqlite, preference, 一切都是可視化的操作,無須自己在去使用adb, 也不需要root你的設備
39. fastjsonFastjson 是一個 Java 語言編寫的高性能功能完善的 JSON 庫. 它採用一種「假定有序快速匹配」的算法, 把 JSON Parse的性能提升到極致, 是目前Java語言中最快的JSON庫. Fastjson接口簡單易用, 已經被廣泛使用在緩存序列化, 協議交互, Web輸出, Android客戶端等多種應用場景
40. cardslib (不建議使用)Cardslib 是早期由 Gabriele Mariotti 開發的一個為開發者方便實現各種 Card UI 的 Android 開源代碼庫, 後來 Google 官方提供自己封裝了 CardView 在 v7 包下, 使用 Google 官方的可以完全替代了這個庫, 因此這個也被棄用了
41. Android-Ultra-Pull-To-Refresh開發者是廖祜秋, 這個是一個非常強大的下拉刷新庫, 繼承 ViewGroup 可以包含任何 View, 功能甚至比 SwipeRefreshLayout 強大, 使用起來也非常容易, 還可以自由定製自己的 UI 樣式
42. greenDAOgreenDAO 是一個可以幫助 Android 開發者快速將 Java 對象映射到 SQLite 數據庫的表單中的 ORM解決方案, 通過使用一個簡單的面向對象 API, 開發者可以對 Java 對象進行存儲, 更新, 刪除和查詢, greenDAO 相對 OrmLite, AndrORM 這兩個 ORM 開源庫, 性能是最高的
43. AndroidStaggeredGridAndroidStaggeredGrid 是一個支持多列並且每一行的 item 大小不一, 交錯排列的 GridView, 就是實現瀑布流樣式效果, 目前該庫已經被棄用了, 開發者建議我們使用 Google 官方控件 RecyleView 中的 StaggeredGridLayoutManager 佈局來實現瀑布流效果
44. ottoOtto 是 Square 公司出的一個事件庫 (pub/sub 模式), 用來簡化應用程序組件之間的通訊, otto 修改自 Google 的 Guava 庫, 專門為 Android 平台進行了優化, 與上面介紹的 EventBus 相比, 兩個庫各有各的優點, 完全取決於我們自己項目的需求來選擇它們哪一個
45. xUtilsxUtils 是一個快速開發框架, 裡面包含 DbUtils, ViewUtils, HttpUtils, BitmapUtils 四大模塊, 可用於快速開發, 支持大文件上傳, 擁有更加靈活的 ORM, 最低兼容 Android 2.2
46. realm-javaRealm 一個輕量的 Android 版本的數據存儲庫, 比 Android 原生系統的 SQLite 更加簡潔快速對數據進行操作
47.Android-CleanArchitectureCleanArchitecture 是一個非常典型使用 MVP 架構的項目, 大家如果還沒有理解 MVP 架構的可以看看這個項目
48. StickyListHeadersStickyListHeaders 是一個實現能夠固定在屏幕頂部的ListView Section Header庫, 就是當前 section 的 header 固定在屏幕頂部, 當滑動到其他 section 時, 其他 section 的 header 會代替之前的 section 的 header, 固定到屏幕頂部, 類似於 Android4.0 的手機通訊錄的效果
49. AppIntroAppIntro 是一個讓人輕鬆快速搭建漂亮酷炫的引導頁庫
50. ActiveAndroidActiveAndroid 是採用Rails中的 Active Record架構模式設計的適用於 Android 平台的輕量級 ORM 架構, 幾乎可以不用寫任何 SQL 代碼實現快速開發
51. android-volleyVolley 是谷歌官方開發團隊在 2013 年 Google I/O 大會推出的一個新的網絡通信框架, 這個框架把 AsyncHttpClient 和 Universal-Image-Loader 的優點集於了一身,既可以像AsyncHttpClient 一樣非常簡單地進行 HTTP 通信,也可以像 Universal-Image-Loader 一樣輕鬆加載網絡上的圖片, 這個庫並不是官方的, 只是託管同步在 Maven, 官方只提供的 Jar 包
52. twoway-viewTwoWayView 是簡化 RecyclerView 開發的一個庫, 可以在其 Base LayoutManager 基礎上構建各種各樣的佈局, 該庫內置了幾個常用佈局 List, Grid, Staggered Grid,Spannable Grid
53. ShowcaseViewShowcaseView 是一個非常適合用於對用戶進行第一次使用進行指導的庫,使用起來非常簡單還可以自定義樣式
54. CalligraphyCalligraphy 是一個用來簡化 Android 應用使用自定義字體的類庫, 該類庫會自動查找應用中的 TextView 並設置其使用的字體
55. NineOldAndroidsNineOldAndroids 由 JakeWharton 大神開發的一個向下兼容的動畫庫, 主要是使低於API 11的系統也能夠使用 View 的屬性動畫, 不過現在 JakeWharton 大神已經不推薦使用該庫, 而是推薦我們使用官方封裝在 Support 庫裡面的動畫
56. android-floating-action-buttonFloatingActionButton 是一個懸浮操作按鈕, 官方在 Support Design 包下也有封裝一個類似這個庫效果的 FloatingActionButton, 值得說明的是這個庫是早在官方封裝之前就存在的, 個人感覺這個庫比官方那個更加好用
57. CircleImageViewCircleImageView 是一個輕鬆幫你實現圓形效果 ImageView 圖片庫, CircleImageView 是基於 ImageView 擴展出來, 因此它擁有 ImageView 控件所有屬性, 簡單易用值得你使用的庫
58. materialMaterial 是將 Material Design 風格控件封裝在該庫當中, 目前封裝有Progress, Button, Switch, Slider, Spinner, Text Field, TabPageIndicator, SnackBar, Dialog, BottomSheetDialog, Dynamic theme
59. ActionBar-PullToRefreshActionBar-PullToRefresh 是一個下拉刷新, 下拉刷新時在 ActionBar 出現加載中提示的庫
60. FloatingActionButton又一個懸浮操作按鈕庫, 該庫添加支持監聽滑滾動事件, 當向下滑時按鈕隱藏, 向上滑時按鈕顯示, 還有動畫效果, 支持監聽 ListView, ScrollView, RecylerView
61. AndroidAsyncAndroidAsync 是一款基於 NIO 的低端 Android 異步 socket, http (client+server), websocket 和 socket.io 網絡通信協議類庫
62. reboundRebound 是 Facebook 推出的一個彈性動畫庫, 可以讓動畫看起來真實自然, 像真實世界的物理運動, 帶有力的效果, 使用的參數則是 Facebook 的 origami 中使用的
63. android-commonandroid-common-lib 是 Trinea 大神收集的一些開發通用的緩存, 公共 View 以及一些常用工具類
64. RippleEffectRippleEffect 是一個實現在 Android 任何組件點擊出現 Material Design 的波紋效果, 向下兼容到 Android API9
65. SmoothProgressBarSmoothProgressBar 是一個幫你的 App 方便實現可定製, 平滑動畫的水平滾動進度條庫
66. recyclerview-animatorsRecyclerView Animators 是一個對 Recycler 控件的 Item 添加以及刪除增加動畫效果, 動畫效果有Scale, Fade, Flip, Slide 裡面各種各樣效果
67. circular-progress-button一個帶進度顯示的 Button, 效果和動畫做的都非常贊
68. DroidPluginDroidPlugin 是 360 手機助手在 Android 系統上實現了一種新的插件機制: 它可以在無需安裝, 修改的情況下運行APK文件, 此機制對改進大型APP的架構, 實現多團隊協作開發具有一定的好處
69. dynamic-load-apk開發者是 singwhatiwanna(任玉剛), 是《Android 開發藝術探索》書籍的作者, 這個是作者聯合另兩位開發者嘯(時之沙)和宋思宇花了幾個月時間研究出來的 Apk 動態加載框架, 想瞭解更多關於這框架可到作者博客看 這篇文章 有詳細介紹
70. ExoPlayerExoPlayer 是Google 開發團隊開源出來的一個媒體播放庫, 比 Android 框架原生的 MediaPlayer 擁有更多優點支持動態的自適應流 HTTP(DASH) 和 平滑流, 支持高級的HLS特性, 支持自定義和擴治你的使用場景等等
71. Crouton (不建議使用)Crouton 是一個顯示提示信息的顯示工具類, 可以用來代替 Toast, 默認顯示在窗口的頂部, 可以按隊列一個接著一個顯示, 不過該庫已經被棄用, 不推薦使用
72. robospiceRoboSpice 是一個使你建立異步的長時間的運行任務異常輕鬆的一個網絡庫,在網絡請求,緩存支持,和提供開箱即用的 rest 請求方面尤為強大
73. hugoHugo 是 JakeWharton 大神推出的一個用於打印 Log, hugo 是基於註解被調用的, 引入相關依賴後, 在方法上加上 @DebugLog 即可輸出 Log, 使用非常簡單
74. async-http-clientAsyncHttpClient 是又一款 Android 異步請求庫, 該庫支持 WebSocket 協議, 使用起來也比較簡單易用
75. UltimateRecyclerViewUltimateRecyclerView 是一個功能強大的 RecyclerView(advanced and flexible version of ListView), 包括了下拉刷新, 加載更多, 多種動畫, 空數據提示, 拖動排序, 視差處理, 工具欄漸變, 滑動刪除, 自定義floating button, 多種刷新效果, scrollbar, sticky header, 多 layout 支持等等元素, 而且使用起來跟 RecyclerView 一樣的方便
76. MaterialEditTextMaterialEditText 是就職於 Flipboard 的員工 扔物線 開發的, 在 AppCompat v21 中也提供了 Material Design 的控件 EditText, 可是由於比較難用, 沒有提供設置顏色的 Api, 於是就產生這個第三方庫
77. Side-Menu.AndroidSide Menu 是 Yalantis 組織開源出來, 該組織因開源出一些動畫很棒的開源庫為大家所熟知該庫是其中一個, 該庫是提供翻頁動畫效果的側邊菜單, 動畫體驗超讚的
78. drag-sort-listviewDragSortListView 是一個可以實現拖動排序, 滑動刪除的 listview 控件, 注意的是作者對該庫已經放棄維護更新了, 不過感興趣的人可以去研究一下
79. android-times-squareTimesSquare 是 Square 公司出品的一款顯示日曆選擇日期的控件, 可以讓用戶選擇多個日期
80. GreenDroid(不建議使用)GreenDroid 是一個封裝好的 Android UI 界面庫, 不過該庫已經被棄用了, 不建議使用
81. loggerLogger 是一個簡單, 漂亮, 強大 Android 打印日誌庫
82. acraAcra 是一個能夠讓 Android 應用自動將崩潰報告以谷歌文檔電子錶的形式進行發送的庫, 旨在當應用發生崩潰或出現錯誤行為時, 開發者可以獲取到相關數據
83. FadingActionBarFadingActionBar 是一個支持 ListView, ScrollView, WebView 向下滾動時逐漸顯示 ActionBar 庫
84. AndroidImageSliderAndroidImageSlider 庫開發者是代碼家, 該庫是為 Banner 圖片滑動提供多種動畫效果, 還可以輕易為 Banner 加載網絡圖片
85. SystemBarTintSystemBarTint 是一個實現沉浸式狀態欄庫, 適用於 Android 系統 4.4 其以上的版本
86. android-menudrawerMenuDrawer 是一款滑出式菜單庫, 通過拖動屏幕邊緣滑出菜單, 支持屏幕上下左右劃出, 支持當前 View 處於上下層, 支持 Windows 邊緣, ListView 邊緣, ViewPager 變化劃出菜單等
87. RoundedImageViewRoundedImageView 一個快速支持圖片圓角顯示效果的庫, 該庫特點是能快速加載, 為了提高加載速度, 該庫不用創建原始位圖的副本, 不使用 clipPath, 不使用 setXfermode 裁剪的位圖等方式來實現 ImageView 圓角, 使用也非常簡單
88. afinalAfinal 是一個 android 的 sqlite orm 和 ioc 框架, 同時封裝了 android 中的 http 框架, 使其更加簡單易用, 使用 finalBitmap, 無需考慮 bitmap 在 android 中加載的時候 oom 的問題和快速滑動的時候圖片加載位置錯位等問題, Afinal 的宗旨是簡潔, 快速, 約定大於配置的方式, 儘量一行代碼完成所有事情
89. android-pulltorefresh(不建議使用)另一個下拉刷新庫, 但是該庫已經停止維護, 因此不建議使用, 推薦使用 Android-Ultra-Pull-To-Refresh
90. Bolts-AndroidBolts 是一款底層類庫集合, 在後台實現異步操作, 並提供接口反饋當前異步執行的程度 (可以通過接口實現UI進度更新), 最後反饋執行的結果給UI主線程, 與AsyncTask比較: (1)使用的是無大小限制的線程池; (2)任務可組合可級聯,防止了代碼耦合
91. NumberProgressBarNumberProgressBar 開發者是代碼家, 這是一個帶簡約性感數字顯示的進度條庫, 使用非常簡單方便
92. SwipeBackLayoutSwipeBackLayout 是一個支持屏幕上下左右滑動返回上層 Activity, 關閉當前 Activity, 類似簡書 App
93. android-gif-drawable一個支持 gif 顯示的 view, 用 jni 實現的, 編譯生成 so 庫後直接 xml 定義 view 即可, 簡單易用
94. VitamioBundleVitamio 是一款 Android 與 iOS 平台上的全能多媒體開發框架, 特點:(1) 全面支持硬件解碼與 GPU 渲染, (2) 能夠流暢播放 720P 甚至 1080P 高清 MKV, FLV, MP4, MOV, TS, RMVB 等常見格式的視頻, (3) 在 Android 與 iOS 上跨平台支持 MMS, RTSP, RTMP, HLS(m3u8)等常見的多種視頻流媒體協議, 包括點播與直播
95. SmartTabLayoutSmartTabLayout 是一個自定義的 Tab title strip, 基於 Google Samples 中的 android-SlidingTabBasic 項目, 滑動時 Indicator 可平滑過渡
96. uCropuCrop 是Yalantis 組織開源的圖片裁剪庫, 支持縮放, 旋轉圖片, 支持各種比例的裁剪框, 非常強大的一個圖片裁剪庫
97. android-crop又一個圖片裁剪庫, 向下兼容到 Api 10, 個人感覺這個庫並沒有比上面介紹的 uCrop 強大
98. HoloEveryWhereHoloEveryWhere 是一套 Android 開發庫, 提供了全套 Holo Style 控件, 它的外觀與功能和標準 Holo Style 控件基本相同, 唯一不同的是它可以運行在低於 4.0 版本的 Android 系統上
99. AVLoadingIndicatorViewAVLoadingIndicatorView 庫含有各種各樣漂亮的加載動畫效果, 使用起來也非常簡單, 和平時使用 ProgressBar 一樣
00. sweet-alert-dialogAndroid 版的 SweetAlert, 清新文藝, 快意靈動的甜心彈框, 靈感來源於 JS 版SweetAlert

粗計

Square 公司佔有 7 席

項目名稱排名
Retrofit4
OkHttp5
Picasso7
LeakCanary13
Dagger29
Otto44
TimesSquare79

FaceBook 公司佔有 4 席

項目名稱排名
React Native1
Fresco11
Stetho38
Rebound62

JakeWharton 大神佔有 5 席

項目名稱排名
Butter Knife14
ActionBarSherlock16
ViewPagerIndicator18
NineOldAndroids55
Hugo73

代碼家大神佔有 4 席

項目名稱排名
AndroidSwipeLayout28
AndroidViewAnimations32
AndroidImageSlide84
NumberProgressBar91

感謝

感謝所有為開源而辛辛苦苦付出努力的人, 相信有你們 Android 會發展的更加美好, 讓我們一起為他們辛辛苦苦付出的努力鼓掌吧!!

2016年5月23日 星期一

使用功能開關而不引入technical debt

http://blog.launchdarkly.com/how-to-use-feature-flags-without-technical-debt/


https://wanqu.co/2016-05-19-how-to-use-feature-flags-without-technical-debt.html?s=/issues

文中的辦法不錯:建立倆branch,第一個加功能開關,第一個刪除;先merge加功能開關的那個branch,上線代碼;過了一段時間,確認可以刪功能開關了,就merge第二個branch。
使用feature flags(功能開關)最終會在代碼裡留下一堆if .. else,上線功能大半年後早已忘記功能開關這回事,即使記得也懶得去刪、或者沒把握刪除後會不會引入bug。文中的辦法好處在於,加功能開關的時候,已經熟悉部分代碼,刪除的時候很有信心,順手刪除,為以後節省時間。

2016年5月9日 星期一

2015年5月7日 星期四

[Summary] Peopleware: Productive Projects and Teams, 2nd ed.

[Summary] Peopleware: Productive Projects and Teams, 2nd ed.

1)
Owning part of a good work somehow feels better than owning all of it. This
may seem like an odd notion, but if you've ever been part of a well-formed
team or a harmonious work group, you'll know what we mean.

2)
It's only after you're finished that you know how the thing really should
have been done.

3)
The folklore is full of easy remedies: Take the worker's
estimate and double it. Keep the pressure on. Don't let people
work at home, they'll only goof off.

4)
Most managers are willing to concede the idea that they've got
more people worries than technical worries. But they seldom manage
that way.

5)
The main reason we tend to focus on the technical rather than
the human side of the work is not because it's more crucial, but
because it's easier to do.


6)
Development is inherently different from production.


7)
You may be able to kick people to make them active, but
not to make them creative, inventive, and thoughtful.

Even if kicking people in the backside did boost their short term
productivity, it might not be useful in the long run.

8)
The project that has to be done by an impossible fixed date is the very one
that can't afford not to have frequent brainstorms and
even a project dinner or some such affair to help the individual participants
knit into an effective whole.


9)

Nobody can really work much more than forty hours, at least not
continually and with the level of intensity required for creative work.

Overtime is like sprinting: It makes some sense for the last
hundred yards of the marathon for those with any energy left, but if
you start sprinting in the first mile, you're just wasting time.


10)
People under time pressure don't work better;
they Just work faster.
In order to work faster, they may have to sacrifice the quality
of the product and their own job satisfaction.


11)
In the workplace, the major arouser of emotions is threatened self-esteem.


12)
Managers jeopardize product quality by setting unreachable deadlines.
They don't think about their action in such terms; they think
rather that what they're doing is throwing down an interesting challenge
to their workers, something to help them strive for excellence.

12-1)
Workers know that under the gun, their efforts will be overconstrained.
There will be no freedom to trade off resources to make on-time
delivery possible.
They won't have the option of more people or reduced function.
The only thing to give on will be quality. Workers kept under
extreme time pressure will begin to sacrifice quality. They will push
problems under the rug to be dealt with later or foisted off onto the
product's end user. They will deliver products that are unstable and
not really complete. They will hate what they're doing, but what
other choice do they have?


13)
The notion that work expands to fill the time allocated for it,
now known as Parkinson's Law.


14)
Programmers seem to be a bit more productive when they can do the estimate
themselves,
compared to cases in which the manager does it without even consulting them.
When the two do the estimating together, the results tend to fall in between.

15)
The manager's function is not to make people work, but to make it possible
for people to work.


16)
There are a million ways to lose a work day, but not even a single way to get
one back.


17)
• Count on the best people outperforming the worst by about 10:1.
• Count on the best performer being about 2.5 times better than the median
   performer.
• Count on the half that are better-than-median performers outdoing the
   other half by more than 2:1.


18)
Do you often interrupt a discussion with co-workers or friends
to answer a phone? Of course you do. You don't even consider not
answering the phone. Yet what you're doing is a violation of the
common rules of fairness, taking people out of order, just because
they insist loudly (BBBRRRRHINNNNGGGGG!) on your attention. Not
only do you do this to others, you let them do it to you. And you're
so inured to this abuse that you hardly take note of it.

19)

The Timeless Way of Building. New York: Oxford University Press, 1979




20)
THE RIGHT PEOPLE
The final outcome of any effort is more a function of who
does the work than of how the work is done. Yet modem management
science pays almost no attention to hiring and keeping the right
people.


21)
Management science is much more concerned with the boss's
role as principal strategist and tactician of the work. You are taught
to think of management as playing out one of those battle simulation
board games. There are no personalities or individual talents to be
reckoned with in such a game; you succeed or fail based on your
decisions of when and where to deploy your faceless resources.

22)
• get the right people
• make them happy so they don't want to leave
• turn them loose

23)
For most efforts, success or failure is in the cards from the moment
the team is formed and the initial directions set out. With talented
people, the manager can almost coast from that point on.



24)
Born Versus Made
A recurrent theme through all the novels is Hornblower*s gloomy
presentiment that achievers are born, not made.


25)

So the people who work for you through whatever period will be more or less
the same
at the end as they were at the beginning. If they're not right for the
job from the start, they never will be.

---
Parents do have a shaping effect on their children over the years,
and individuals can obviously bring
about huge changes in themselves. But managers are unlikely to
change their people in any meaningful way. People usually don't
stay put long enough, and the manager just doesn't have enough
leverage to make a difference in their nature.
So the people who work for you through whatever period will be more or less
the same
at the end as they were at the beginning. If they're not right for the
job from the start, they never will be.


26)

The managers with shaky self-confidence are uncomfortable with any
kind of behavior that is different from average. They need to impose
safely homogenized mores on those beneath them to demonstrate
that they are in charge.

The term unprofessional is often used to characterize surprising
and threatening behavior. Anything that upsets the weak manager
is almost by definition unprofessional. So popcorn is unprofessional.
Long hair is unprofessional if it grows out of a male
head, but perfectly okay if it grows out of a female head.

Conversely, professional means unsurprising. You will be
considered professional to the extent you look, act, and think like
everyone else, a perfect drone.

----

An anti-popcorn standard or even a dress standard might be
understandable if you worked in the Customer Relations Department
or in Sales. But in any other area, it makes no sense at all. There is
seldom if ever a client wandering through such space. These
"standards" have nothing to do with the organization's image as
perceived by outsiders. It's the image perceived by insiders that
matters. The insiders in question—typically second- and third-level
managers with shaky self-confidence—are uncomfortable with any
kind of behavior that is different from average. They need to impose
safely homogenized mores on those beneath them to demonstrate
that they are in charge.

The term unprofessional is often used to characterize surprising
and threatening behavior. Anything that upsets the weak manager
is almost by definition unprofessional. So popcorn is unprofessional.
Long hair is unprofessional if it grows out of a male
head, but perfectly okay if it grows out of a female head. Posters of
any kind are unprofessional. Comfortable shoes are unprofessional.
Dancing around your desk when something good happens is unprofessional.
Giggling and laughing is unprofessional. (It's all right to
smile, but not too often.)
Conversely, professional means unsurprising. You will be
considered professional to the extent you look, act, and think like
everyone else, a perfect drone.
Of course, this perverted sense of professionalism is pathological.

27)
Corporate Entropy
Entropy is levemess or sameness. The more it increases, the less
potential there is to generate energy or do work. In the corporation
or other organization, entropy can be thought of as uniformity of
attitude, appearance, and thought process. Just as thermodynamic
entropy is always increasing in the universe, so too corporate
entropy is on the rise:
SECOND THERMODYNAMIC LAW OF MANAGEMENT:
Entropy is always increasing in the organization.
That's why most elderly institutions are tighter and a lot less fun
than sprightly young companies.
There is not much you can do about this as a global phenomenon,
but you've got to fight it within your own domain. The
most successful manager is the one who shakes up the local entropy
to bring in the right people and let them be themselves, even though
they may deviate from the corporate norm. Your organization may
have rigor mortis, but your little piece of it can hop and skip.


28)
Holding an Audition
The business we're in is more sociological than technological, more
dependent on workers' abilities to communicate with each other than
their abilities to communicate with machines. So the hiring process
needs to focus on at least some sociological and human communication
traits. The best way we've discovered to do this is through
the use of auditions for job candidates.
The idea is simple enough. You ask a candidate to prepare a
ten- or fifteen-minute presentation on some aspect of past work. It
could be about a new technology and the experience with first trying
it out, or about a management lesson learned the hard way, or about
a particularly interesting project. The candidate chooses die subject.
The date is set and you assemble a small audience made up of those
who will be the new hire's co-workers.
Of course the candidate will be nervous, perhaps even reluctant
to undertake such an experience. You'll have to explain that all
candidates are nervous about the audition and give your reasons for
holding one: to see the various candidates' communication skills,
and to give the future co-workers a part in the hiring process.
At the end of the audition and after the candidate has left, you
hold a debriefing of those present. Each one gets to comment on the
person's suitability for the job and whether he or she seems likely to
fit well into the team. Although it's ultimately your responsibility to
decide whether to hire or not, the feedback from future co-workers
can be invaluable. Even more important, any new person hired is
more likely to be accepted smoothly into the group, since the other
group members have had a voice in choosing the candidate.


29)
HAPPY TO BE HERE
This chapter begins with a pop quiz:
Ql. What annual employee turnover has your organization
experienced over the last few years?
Q2. How much does it cost on average to replace a person
who leaves?
Score yourself as follows: If you had any answer at all to the two
questions, you pass. Otherwise you fail. Most people fail.
In all fairness, perhaps it's not your job to know about such
things. Okay, we'll re-score your quiz. You pass if anyone in your
organization has a real answer to the two questions. Most people
still fail. We avoid measuring turnover for the same reason that
heavy smokers avoid having long serious talks with their doctors
about longevity: It's a lot of bother that can only result in bad news.
Turnover: The Obvious Costs


30)
The total cost of replacing each
person is the equivalent of four-and-a-half to five months of
employee cost or about twenty percent of the cost of keeping that
employee for the full two years on the job.

31)
The Hidden Costs of Turnover
Employee turnover costs about twenty percent of all manpower
expense. But that's only the visible cost of turnover. There is an
ugly invisible cost that can be far worse.
In companies with high turnover, people tend toward a
destructively short-term viewpoint, because they know they just
aren't going to be there very long. So if you find yourself campaigning
for better workspace for your staff, for example, don't be
surprised to bump into someone up the hierarchy who counters with
an argument like this:
"Hold on there, Buster. You're talking about big bucks.
If we gave our engineers that much space and noise protection
and even privacy, we might end up spending fifty
dollars per person per month! Multiply that times all the
engineers and you're into the tens of thousands of dollars.
We can't spend that kind of money. I'm as much
in favor of productivity as the next guy, but have you
seen what a terrible third quarter we're having?"
Of course, the irrevocably logical answer to this is that investing
now in a sensible environment will help to avoid terrible third quarters
in the future. But save your breath. You have encountered a
short-term perspective that no amount of irrevocable logic is going
to sway. This person is on his or her way out of the company. The
short-term cost is very real, but the long-term benefit has no meaning
whatsoever.

32)
In an organization with high turnover, nobody is willing to
take the long view. If the organization is a bank, it will lend money
to the Ugandan Development Corporation because the twenty-two
percent interest looks terrific on this quarter's books. Of course, the
UDC will default in a couple of years, but who's even going to be
here then? If the organization is a development shop, it will optimize
for the short term, exploit people, cheat on the workplace, and
do nothing to conserve its very lifeblood, the peopleware that is its
only real asset. If we ran our agricultural economy on the same
basis, we'd eat our seed corn immediately and all starve next year.
If people only stick around a year or two, the only way to
conserve the best people is to promote them quickly. That means
near beginners being promoted into first-level management positions.
They may have only five years of experience and perhaps
less than two years with the company.

33)
There is something very disconcerting about these numbers.
A person with a work life of, say, forty years will spend five years
working and thirty-five managing. That implies an exceedingly tall,
narrow hierarchy. Fifteen percent of the staff is doing work, with
eighty-five percent managing. As little as ten percent of the cost
could be spent on the workers, with ninety percent going to reward
the managers. Even Marx didn't foresee such top-heaviness of capitalistic
structures.
Not only is the structure wastefully top-heavy, it tends to have
very lightweight people at the bottom. This is somewhat true
throughout the industry, but strikingly true in high-turnover companies.
It's not unusual to see serious, mature companies turning
out products that are developed by workers with an average age in
their twenties, and average experience of less than two years.


34)
Many of us have come to believe that companies that promote
early are where the action is. That's natural, because as young
workers we're eager to get ahead. But from the corporate perspective,
late promotion is a sign of health. In companies with low
turnover, promotion into the first-level management position comes
only after as much as ten years with the company. (This has long
been true of some of the strongest organizations within IBM, for
example.) The people at the lowest level have on the average at least
five years'experience. The hierarchy is low and flat.

35)
Why People Leave
For the individuals considering a change in job, the reasons can be
as many and varied as the personalities involved. For the organization
with pathologically high turnover (anything over fifty percent),
a few reasons account for most departures:
? a just-passing-through mentality: Co-workers engender no
feelings of long-term involvement in the job.
? a feeling of disposability: Management can only think of
its workers as interchangeable parts (since turnover is so
high, nobody is indispensable).
* a sense that loyalty would be ludicrous: Who could be
loyal to an organization that views its people as parts?

The insidious effect here is that turnover engenders turnover.
People leave quickly, so there's no use spending money on training.
Since the company has invested nothing in the individual, the individual
thinks nothing of moving on. New people are not hired for
their extraordinary qualities, since replacing extraordinary qualities
is too difficult. The feeling that the company sees nothing extraordinary
in the worker makes the worker feel unappreciated as an individual.
Other people are leaving all the time, so there's something
wrong with you if you're still here next year.

36)
You can prove that community gardens don't make any sense
at all in the short term. Whatever costs there are will come right out
of this quarter's bottom line. At most companies, that would be
enough to quash the concept immediately. But in the best organizations,
the short term is not the only thing that matters. What matters
more is being best. And that's a long-term concept.
People tend to stay at such companies because there is a
widespread sense that you are expected to stay. The company
invests hugely in your personal growth. There may be a Master's
program or an extensive training period for new hires, as much as a
year in some places. It's hard to miss the message that you are
expected to stay, when the company has just invested that much in
your formation.

A common feature of companies with the lowest turnover is
widespread retraining. You're forever bumping into managers and
officers who started out as secretaries, payroll clerks, or mail-boys.
They came into the company green, often right out of school. When
they needed new skills to make a change, the company provided
those skills. No job is a dead end.
Again, one can prove that retraining is not the cheapest way to
fill a new slot. It's always cheaper in the short run to fire the person
who needs retraining and hire someone else who already has the
required skills. Most organizations do just that. The best organizations
do not. They realize that retraining helps to build the mentality
of permanence that results in low turnover and a strong sense
of community. They realize that it more than justifies its cost.


37)
Methodology Madness
Of course, if your people aren't smart enough to think their way
through their work, the work will fail. No Methodology will help.
Worse still, Methodologies can do grievous damage to efforts in
which the people are fully competent. They do this by trying to
force the work into a fixed mold that guarantees
• a morass of paperwork,
• a paucity of methods,
• an absence of responsibility, and
• a general loss of motivation.

38)
Perhapsit's time to introduce this contrary and heretical notion:
Voluminous documentation Is part of the problem, not part of the solution.

40)
Concept of the Jelled Team
A jelled team is a group of people so strongly knit that the whole is
greater than the sum of the parts. The production of such a team is
greater than that of the same people working in unjelled form. Just
as important, the enjoyment that people derive from their work is
greater than what you'd expect given the nature of the work itself.

41)
Management by Hysterical Optimism
Some managers are disturbed by the sentiments of the preceding
paragraph. They find it distasteful to consider any artifice for getting
workers to accept corporate goals. Why should we need to form
elaborate social units to do that? After all, professional developers
are supposed to accept their employer's goals as a condition of
employment. That's what it means to be a professional.
Believing that workers will automatically accept organizational
goals is the sign of naive managerial optimism. The mechanism by
which individuals involve themselves in the organization's objectives
is more complex than that. You wouldn't be surprised to
learn, for example, that the fellow you know as a database specialist
is more inclined to describe himself as a father, a boy scout leader,
and a member of the local school board. In these roles, he makes
thoughtful value judgments all the time. What would be a surprise
is if he stopped making value judgments when he arrived at work.
He doesn't He is continually at work examining each claim for his
individual energies and loyalty. Organizational goals come in for
constant scrutiny by the people who work for the organization, and
most of those goals are judged to be awfully arbitrary.

The dilemma here is that as boss, you have probably accepted
the corporate goal (bring the project home by next April for less than
$750,000), and accepted it wholeheartedly. If your staff isn't just
as enthusiastic, you're disappointed. Their lack of interest might
seem almost treasonous to you. But hold on here, is it possible that
your own strong identification with a corporate goal stems from
something beyond mere professionalism? Isn't it true that some artful
engineering on the part of your boss and the powers above has
made that corporate goal line up exactly with one of your own?
Meeting the corporate aims is certain to lead directly to more authority
and responsibility for you: "Today the Sysboombah Project,
tomorrow the world!" Throughout the upper ranks of the organization,
there is marvelous ingenuity at work to be sure that each manager
has a strong personal incentive to accept the corporate goals.
Only at the bottom, where the real work is performed, does this
ingenuity fail. There we count on "professionalism" and nothing else
to assure that people are all pulling in the same direction.
Lots of luck.


42)
The Guns of Navarone
Goals of corporations are always going to seem arbitrary to people—
corporations seem arbitrary to people—but the arbitrariness of
goals doesn't mean no one is ever going to accept them. If it did,
we wouldn't have sports. The goals in sports are always utterly arbitrary.
The Universe doesn't care whether the little white ball goes
between the posts at Argentina's end of the field or those at Italy's.
But a lot of people get themselves very involved in the outcome.
Their involvement is a function of the social units they belong to.
Those at the periphery of a team may be mildly interested in
the team's success or failure, but their interest is tiny compared to
that of the team members. People who work on jelled teams often
get so involved that they're psyched up enough to storm the guns of
Navarone, all just to pass the version 3 acceptance test for the pension
trust system. You have to remind them that what they're striving
to accomplish is not the Moral Equivalent of War.

43)
Signs of a Jelled Team
A few very characteristic signs indicate that a jelled team has
occurred. The most important of these is low turnover during projects
and in the middle of well-defined tasks. The team members
aren't going anywhere till the work is done. Things that matter
enormously prior to jell (money, status, position for advancement)
matter less or not at all after jell. People certainly aren't about to
leave their team for a rinky-dink consideration like a little more
salary. Sadly, managers often miss this strong indication of their
own success. They are disinclined to pay attention to turnover even
when it's killing them; when turnover is low, they don't think about
it at all.


44)
Jelled teams are usually marked by a strong sense of identity.
The teams you hear discussed in the industry have colorful names:
the "Okie Coders" at General Electric, etc.


45)
Teammates may all use the same catch phrases and share many injokes.
There may be obvious team space. The teams may congregate
at lunch or hang out at the same watering hole after work.
There is a sense ofeliteness on a good team. Team members
feel they're part of something unique. They feel they're better than
the run of the mill. They have a cocky, SWAT Team attitude that
may be faintly annoying to people who aren't part of the group.


46)
There is invariably a feeling of joint ownership of the product
built by the jelled team. Participants are pleased to have their names
grouped together on a product or a part of one. The individual is
eager for peer review. The team space is decorated with views of
the product as it approaches completion.
The final sign of a jelled team is the obvious enjoyment that
people take in their work. Jelled teams just feel healthy. The interactions
are easy and confident and warm.


47)

There's one area, though, where defensiveness will always
backfire: You can't protect yourself against your own people's
incompetence. If your staff isn't up to the job at hand, you will fail.
Of course, if the people are badly suited to the job, you should get
new people. But once you've decided to go with a given group,
your best tactic is to trust them. Any. defensive measure taken to
guarantee success in spite of them will only make things worse. It
may give you some relief from worry in the short term, but it won't
help in the long run, and it will poison any chance for the team to
jell.

48)
Bureaucracy
Studies conducted by Capers Jones in the 1970s and 1980s reported
on systems development costs by work category. One of the
categories was "Paperwork." What Jones calls paperwork is
more or less mindless paper pushing, since the thinking time necessary
to decide what to put on the paper is categorized as some
other activity, such as analysis, design, or test planning. In other
words, his "paperwork" category is pure bureaucracy. Jones concluded
that paperwork is the second largest category of systems
development work. It accounts for more than thirty percent of the
cost of producing a given product.
There is a depressing modern trend to make development
workers more and more into bureaucrats. Perhaps this is a sign of
epidemic defensive management


49)
Mindless paper pushing is a waste. It ought to be attacked
because it keeps people from working. But our point here is a
slightly different one. It is that bureaucracy hurts team formation.
The team needs to believe in whatever goal it forms around. That
goal can be arbitrary, but at least it has to exist. There has to be
some evidence that management believes in it. Just telling your
people that the goal matters won't be enough if you also have to
tell them they should spend a third of their time pushing paper.
Paper pushers just can't get themselves into SWAT Team mode.
They can't see themselves hellbent for success.


50)
Fragmentation is bad for team formation, but it's also bad for
efficiency. (Perhaps you've begun to pick up a trend here.) People
can keep track of only so many human interactions. When they try
to be part of four working groups, they have four times as many
interactions to track. They spend all their time changing gears.
No one can be part of multiple jelled teams. The tight interactions
of the jelled team are exclusive. Enough fragmentation and
teams just won't jell. The saddest thing is we allow far more fragmentation
than is really necessary. We tend to concede this battle
without even a fight.


51)
In the typical phony deadline spiel, the manager announces
that the work must be done on such and such a date. The date mentioned
is impossible to meet, and everyone knows it. The effort will
certainly slip (so much for the idea that the deadline is absolute).
The work has been defined in such a way that success is impossible.
The message to the workers is clear: The boss is a Parkinsonian
robot with no respect or concern for them. The boss believes they
won't do a stroke of work except under duress. Don't expect a
jelled team on that project.


52)
The best boss is the one who can manage this over and over again
without the team members knowing they've been "managed." These bosses are
viewed by their peers as just lucky. Everything seems to break right
for them. They get a fired-up team of people, the project comes
together quickly, and everyone stays enthusiastic through the end.
These managers never break into a sweat. It looks so easy that no
one can believe they are managing at all.


53)
The more comforting it is to the manager, the more it saps
the lifeblood of the team.

54)
ITS SUPPOSED TO BE FUN
TO WORK HERE
Somewhere deep in our ancestral memory is buried the notion
that work is supposed to be onerous. If you enjoy doing something,
it isn't really work. If you enjoy it enough, it's probably sinful.
You ought not to do it too much or even at all. You certainly
shouldn't be paid for it. What you really ought to do is find something
else to work at, something that feels like work. Then you can
be bored, tired, and generally miserable like everybody else.
If you're a manager, this vestigial memory requires you to
make sure that your people never have any fun on the job. Any evidence
of pleasure or joy in the workplace is a sure sign that some
manager is not doing the job properly. Work is not being extracted
with maximum efficiency from the workers, otherwise they
wouldn't be having such a good time.
Of course nobody ever says outright that work ought not to be
fun, but the idea is there, burned into our cultural subconsciousness.
It turns up in the guilty sheepishness we feel if we're ever caught
giggling in delight at the task at hand. It surfaces in our reluctant
acceptance of the dress code, the anti-popcorn code, and the general
furrowed-brow attitude that distinguishes so-called professionals
from people who are enjoying themselves.

55)
In any event, progress toward
more orderly, controllable methods is an unstoppable trend. The
thoughtful manager doesn't want to stop the trend, but may
nonetheless feel a need to replace some of the lost disorder that has
breathed so much energy into the work. This leads to a policy of
constructive reintroduction of small amounts of disorder.
Once the idea is stated so baldly, it's simple enough to compile
a list of ways to implement this policy:
pilot projects
war games
brainstorming
provocative training experiences
training, trips, conferences, celebrations, and retreats
For this list, we've limited ourselves to disorder-reintroduction
techniques that we have seen used successfully. Your own list
ought not to be so limited.


56)
A pilot project is one in which you set the fat book of standards
aside and try some new and unproved technique. The new technique
will be unfamiliar initially, and so you can expect to be inefficient
at the start in applying it. This is a cost of change. On the
other side of the ledger is the improvement in productivity gained
from using the new technique. Also on the plus side of the ledger is
the Hawthorne Effect, the boost in energy and interest that infuses
your people when they're doing something new and different.

--
the Hawthorne Effect, the boost in energy and interest that infuses
your people when they're doing something new and different.

57)
As facilitator, you want to impress on everyone to strive for quantity
of ideas, not quality, and to keep the proceedings loose, even silly.
Sometimes an apparently foolish idea, one that wouldn't even be
mentioned in a more formal session, can turn out to be the prize.
There is no evaluation of proposed ideas during the brainstorming.
The evaluation phase comes later. Discourage negative comments,
like "That's a dumb idea," since dumb ideas often lead others to
think of smart ideas.

As facilitator, try these ploys to restart participants' thinking
when the idea flow slows down:
• analogy thinking (How does nature solve this or some
similar problem?)
• inversion (How might we achieve the opposite of our
goal?)
• immersion (How might you project yourself into the
problem?)


58)
Management here believes that these virtues can be improved
with posters rather than by hard work and managerial talent.
Everyone quickly understands that the presence of the posters is a
sure sign of the absence of hard work and talent.


59)
Overtime: An Unanticipated Side Effect
You may already have picked up a certain bias in the book's original
chapters against the use of overtime. It has been our experience
that the positive potential of working extra hours is far exaggerated,
and that its negative impact is almost never considered.
That negative impact can be substantial: error, burnout, accelerated
turnover, and compensatory "undertime." In this section, we
examine yet another negative effect of overtime: its teamicidal
repercussions on otherwise healthy work groups.

60)
What's happened here? A team that was positively humming
with the good effects of jell has been pried apart by an overtime
policy that could not be applied uniformly to the team members.
But the members of good teams are never uniform in any
respect, certainly not in their abilities to "borrow" time from their
personal lives. In almost any team of four or five or six people,
there are bound to be a few who can't be expected to put in the
kind of overtime that might fit pretty well into some of the others'
lives. All that can be shrugged off as unimportant if the overtime
is only a matter of a few long evenings and maybe one extra
weekend day. But if the overtime drags on over months and starts
to exact a real toll on even the most willing team members, there
is bound to be damage to team cohesion. The people who aren't
sharing the pain will become, little by little, estranged from the
others. And the team magic will be gone.

Extended overtime is a productivity-reduction technique,
anyway. The extra hours are almost always more than offset by
the negative side effects. This is true even if you don't consider
the disruption of the team.

61)
Most managers have at least a suspicion that overtime doesn't
help, that projects that work a lot of overtime are not much of a
credit to their managers' skills and talents. But they end up allowing
or encouraging overtime, anyway. Why is this? Jerry
Weinberg has an answer of sorts: He suggests that we don't work
overtime so much to get the work done on time as to shield ourselves
from blame when the work inevitably doesn't get done on
tune.


62)
Does It Matter? The Importance of Coaching
What is the long-term effect of heightened competition among
people who need to work together? One of the first victims is the
easy, effective peer-coaching that is ubiquitous in healthy teams.
As a manager, you may have convinced yourself that you
ought to be the principal coach to the team or teams that report to
you. That certainly was a common model in the past, when hightech
bosses tended to be proven experts in the technologies their
workers needed to master. Today, however, the typical team of
knowledge-workers has a mix of skills, only some of which the
boss has mastered. The boss usually coaches only some of the
team members. What of the others? We are increasingly convinced
that the team members themselves provide most of the
coaching.
When you observe a well-knit team in action, you'll see a
basic hygienic act of peer-coaching that is going on all the time.
Team members sit down in pairs to transfer knowledge. When
this happens, there is always one learner and one teacher. Their
roles tend to switch back and forth over time with, perhaps, A
coaching B about TCP/IP and then B coaching A about implementation
of queues. When it works well, the participants are
barely even aware of it. They may not even identify it as coaching;
to them it may just seem like work.
COMPETITION 183
Whether it is named or not, coaching is an important factor
in successful team interaction. It provides coordination as well as
personal growth to the participants. It also feels good. We tend
to look back on significant coaching we've received as a near
religious experience. We feel a huge debt to those who have
coached us in the past, a debt that we cheerfully discharge by
coaching others.
The act of coaching simply cannot take place if people don't
feel safe. In a suitably competitive atmosphere, you would be
crazy to let anyone see you sitting down to be coached; it would
be a clear indication that you knew less than your coach about
some subject matter. You would be similarly crazy to coach
someone else, as that person may eventually use your assistance
to pass you by.
Internal competition has the direct effect of making coaching difficult
or impossible. Since coaching is essential to the workings
of a healthy team, anything the manager does to increase competition
within a team has to be viewed as teamicidal. Here are
some of the managerial actions that tend to produce teamicidal
side effects:
• annual salary or merit reviews
• management by objectives (MBO)
• praise of certain workers for extraordinary accomplishment
• awards, prizes, bonuses tied to performance
• performance measurement in almost any form
But hold on here, aren't these the very things that managers spend
much or even most of their time doing? Sadly, yes. And yet
these actions are likely to be teamicidal.


63)
If you are already a CMM Level 2 or higher organization,
remember this:
The projects most worth doing are the ones that will
move you DOWN one full level on your process scale
Maybe those are the only ones you can afford to do.

64)
MANTRA: The fundamental response to change is not
logical, but emotional.
As systems developers, we have selected ourselves into the
world of cool, calming, rational thought. Either our code compiles,
or it doesn't. The compiler is never happy for us, nor mad
at us. Perhaps this is why we tend to apply logic as our main
device for resolving disputes.


65)
Organizations have need of ceremony. It's perfectly reasonable
to call a meeting with a purpose that is strictly ceremonial,
particularly at project milestones, when new people come on
board, or for celebrating good work by the group. Such meetings
do not waste anyone's time. They fulfill real needs for appreciation.
They confirm group membership—its importance and its
value. Ceremonial meetings that only celebrate the bossness of
the boss, however, are a waste.
When bosses are particularly needy, the burden of ceremonial
status meetings can grow almost without bound. We know of
one organization, for example, where daily two-hour status meetings
are the norm. When participants are off-site during a meeting,
they are expected to call in and participate by speakerphone
for the whole duration. Nonattendance is regarded as a threat and
is subject to serious penalties.

--
Ceremonial meetings that only celebrate the bossness of
the boss, however, are a waste.

66)
Projects begin with planning and design, activities that are
best carried out by a smallish team. When design is important (as
it is for anything but a simple formula project), it can require as
much as half the full project duration.

67)
The waste is concealed
in the slow restart of his or her design work, the direct
result of interrupted flow.
Fragmentation is particularly injurious when two of the
tasks involve qualitatively different kinds of work habits. Thus,
the mix of a design task (which requires lots of immersion time,
relative quiet, and quality interaction time with a small group)
with a telephone support task (which requires instant interruptibility,
constant availability, quick change of focus) is sure to make
progress on the more think-intensive of these tasks virtually
impossible. The time wasted continually trying to get restarted is
perceived only as frustration by the worker. You may never hear
about it, because the people who suffer from this problem are all
too likely to blame themselves.


68)
Community doesn't just happen on the job. It has to be made.
The people who make it are the unsung heroes of our work experience.
The science of making communities, making them healthy
and satisfying for all, is called politics. We hasten to add that it's
not the shameless shenanigans of corporate infighting that we're
going to address here; those are the pathologies of politics. What
we need to look at instead is "Politics, the Noble Science," as first
described by Aristotle.

Aristotle included Politics among the five interlinked Noble
Sciences that together make up Philosophy. The five are
• Metaphysics: the study of existence, the nature of the
universe and all its contents
• Logic: the ways we may know something, the set of permissible
conclusions we may draw based on our perceptions,
and some sensible rules of deduction and inference
• Ethics: what we know about man and what we may
deduce and infer (through Logic) about acceptable interactions
between pairs of individuals
• Politics: how we may logically extend Ethics to the larger
group, the science of creating and managing such
groups consistent with ethical behavior and logical
recognition of the metaphysical entities—humans and
the community made up of humans
• Aesthetics: the appreciation of symbols and images of
metaphysical reality, which are pleasing to the extent
that they are logically consistent and that they inform us
about ethical interaction and/or political harmony

69)
Aristotelian Politics is the key practice of good management.
Refusing to be political in the Aristotelian sense is disastrous; it is
an abnegation of the manager's real responsibility. Similarly,
senior workers at all levels share some responsibility for community-
building. They are the elders of whatever community does form.