1. 程式人生 > >為什麽軟件開發,人多,事少,還會工作量大?

為什麽軟件開發,人多,事少,還會工作量大?

程序員 軟件開發 java 程序人生

本文所要分享的是軟件開發過程中,親身經歷過的“怪現象”。為什麽說怪呢,人多力量大,似乎才符合常理,但是往往在軟件項目開展的過程中會出現人多、事少、工作量大的情況,這跟我們以往的認知大相徑庭。

技術分享圖片

首先,要解釋下標題的意思。人多,指的是同一個項目團隊、同一個小組或者同一個部門的範圍內;事少, 指的是做出的效果,真正的產出少;工作量大,指的是,工作時間長,工作忙,實際的投入大。

其實,人多事少工作量大,說白了就是效率低,而影響效率的,原因千萬種,有人員問題、溝通問題、流程問題、管理問題、技術問題,下面零散地列舉下博主親身經歷過的問題:

文章基本純文字,需要空閑的時候,精心閱讀哦。

● 一線工作人員,沒讓專業的人做專業的事,導致效率低

沒讓專業的人做專業的事情, 是工作開展的大忌,在工業上,早已證明了一切,在工廠生產中,工人流水化作業,一個人只專註一件事情,會越做越熟練,越做越快,越做效率越高。

在軟件開發分工越來越明確的今天,讓後端人員搶前端人員的飯碗,去寫網頁、樣式,效率能高嗎?讓後端人員去搶DBA的飯碗,去做數據庫優化,效率能高嗎?

不專業的人做不專業的事情,可能和公司的發展歷程、組織架構、人員規劃有關;也可能和任務安排有關。

公司發展初期,養不起很多專業的人,可能更需要“全棧”工程師,啥都一把捉;公司發展的過渡期,有點錢了,也意識到了要讓專人做專業的事情,但是人員還沒招齊,那沒辦法,你也得兼職著做各種各樣的事情。如果公司有錢了,發展也成熟了,不是屬於以上兩種階段,在IT組織中,連前端、後端、測試、架構、DBA、網絡、服務器運維、技術支持、安全、產品,這些職能都沒區分好的話,就會對工作效率有影響。IT一線工作人員,每個坑位,都需要一顆專業的螺絲釘。

● 開發人員不註重代碼質量,導致後期返工,導致效率低

有時候,快即是慢,對於經驗不足或者習慣不好的開發人員,開發前期,被迫或者自己沒意識到,為了追求進度,邏輯沒考慮周全,沒做好自測,代碼能跑起來就算完成任務了,表面上任務完成得很快。但是在項目後期,測試階段,問題大規模爆發,甚至要返工,由於測試後期,離自己寫代碼的時候,可能隔了一段時間,有的東西自己都忘了,再回過頭去重新“熟悉”,效率能不低嗎?更為嚴重的後果是讓項目進度不可控。因此,就算進度再緊張,也頂住壓力,必須要做最基本的測試,再進入下一個任務點。

● 個體組織人員膨脹,出現溝通成本大的問題,導致效率低

溝通成本是人員膨脹後,暴露出來的首要問題。

舉個簡單的栗子,很多公司都有每天晨會習慣,如果一個組有5個人,開晨會匯報工作,平均一個人匯報2分鐘,就需要10分鐘,現在一個組增加到10個人,一人匯報兩分鐘,都要20分鐘才能匯報完。時間就這樣過去。

再舉個栗子,30人天的工作,分給2個人做,可能需要15天,共耗費30人天,但是分給5個人做,6天能完成嗎?

信息在溝通、傳遞的過程中,可能會“失真",你想的,不一定能100%說出來,你說出來了,別人也不一定能100%理解,而且每個人的理解能力、知識體系都不一樣,理解起來容易產生偏差,產生偏差就容易做錯事情。

因此,如果人員出現膨脹,要以項目為單位,進行合理的項目拆分、人員拆分。同一個“小項目”最好不要超過4個人負責。溝通的時候,推薦使用口頭+書面+復述,減少溝通過程中的信息失真。

● 上、下屬之間相互不信任,做事有阻礙或者導致重復工作,導致效率低

上下屬相互信任是一切工作的基礎。如果上級不信任下屬,不敢授權給下屬,凡是都要自己過一遍,而上級往往是一對多的關系,這個時候,工作瓶頸會出現在上級身上;如果上級不信任下屬,搞一堆監督機制,為了下屬不做錯事情,又讓別人同事過一遍,又要耗費額外的成本,勞民傷財,而下級得不到信任,做事受阻,久而久之就會畏手畏腳,很難獨當一面,或覺得自己有能力沒地方使,幹脆走人。

上級應該充分信任下級,放心授權讓下級去做事情,但這些都一個前提就是要有一個較好的軟件管理過程,包括開發環境和測試團隊和在完成任務的過程中進行一些輔導和進行重要節點管控和監督。

上級不信任下級,經常碰到,而下級不信任上級也很要命。程序員是很有個性的工種,不好管理,往往特別多想法。就好像車輪子陷入泥潭中,上級說車子往前推,有的人又說,往後拉,各自發力,估計車子永遠都擺脫不了泥潭,還談何效率?

因此,如果有意見,前期可以提,但是解決方案一旦定下來,應該上下一心(即使有意見也埋在心底吧),朝著目標一起去努力。

● 不同部門之間溝通存在隔閡與障礙

軟件開發過程中,在IT範疇內,不同部門難免有交集,例如開發與運維、開發與測試,不同崗位承擔的責任、掌握的知識體系、考慮問題的角度往往不一樣,導致處理事情受阻。

舉個栗子,有一次,開發人員為了驗證某個問題,需要運維人員協助重啟某個站點。對於開發人員來說,這個站點,用的人比較少,而重啟也是一瞬間的事情,風險為基本為0,但是由於運維人員掌握的知識體系不一樣,怕重啟了會造成很大影響,甚至害怕出了問題要自己承擔責任,明明可以瞬間操作解決問題的,又要等到中午或者半夜三更沒人的時候才敢重啟,效率就是這樣降低了。這個時候,需要運維人員,去學習一下相關知識,或者引入新流程,例如,重啟站點,需要某個專業人士口頭同意,即可立即執行。

因此,不同部門之間的人,應該互相學習,才能更好地溝通;做事情,盡量做輕量級的流程化、標準化。

● 上級工作安排不到位

上級工作安排不到位,也會導致工作效率低。有時候會有這種怪現象,可能很多事情沒做,但是下面的人沒事可做;或者有的人很忙,有的人很閑。

軟件開發分工,不像搬磚頭,一人搬一車就行了。軟件開發,工作量化本身就是一個很難的地方,如果項目經理沒有做項目計劃,沒有做工作點、任務點拆分工作就很難安排到位。特別是剛剛從程序員轉型做項目經理的人,過程性思維,不會對項目做整體的把握、整體規劃,想到哪裏就做到哪裏,想到什麽就分配什麽工作,最後一團糟,一會把下面的人累死,一會又讓下面的人閑死。

● 需求傳達不明確或者理解有偏差導致返工

探知客戶內心潛在的需求很難,而需求確定後,信息傳遞的媒介,往往是需求文檔。語言文字這種東西,傳遞的過程中容易失真,丟失原有的意思。這種情況盡可能比較,需求傳遞跨越太多層次才到最終到達開發人員身上。如果是這種結構,每層信息丟失2%都不得了,做錯了,返工的效率和代價就十分巨大。

很多時候往往是這種傳達方式:

技術分享圖片

我們需要的是這種方式:

技術分享圖片

最終的研發人員,應該接受到需求後,應該是反向和用戶、產品經理、研發經理溝通,最終才能確定的。

● 技術架構過於落後、過於復雜

先進的技術架構、統一高效地開發標準,是系統建設的基石,會大大提高軟件的生產力,讓開發人員專註於實現業務、商業邏輯,做更有價值,更高產出的事情。

當你還在糾結頁面兼容性,糾結這個界面必填怎麽實現的的時候,人家通過工具簡單配置,界面就自動生成了;當你還在糾結並發量大,分布式事務如何實現的時候,人家消息機制、兩段式提交已經用的飛起來;當你還在糾結分布式系統,數據庫拆分,如果做垮庫查詢的時候,人家ORM自動分庫路由,數據分發機制已經用爛了;當扯不清、道不明各個系統之間的調用關系,猜不透單點改動的影響範圍、運維上壓力巨大的時候,人家服務治理框架應運而生。。。。。。。這所有的所有,都依賴於先進的軟件架構,有現成的或者自主研發的。這一切的一切,都可以讓開發人員如虎添翼,事半功倍。

想要了解更多軟件研發過程的開發經驗,可以加群:650385180,裏面會分享一些資深架構師錄制的視頻錄像:有Spring,MyBatis,Netty源碼分析,高並發、高性能、分布式、微服務架構的原理,JVM性能優化這些成為架構師必備的知識體系。還能領取免費的學習資源,以下的資源都在群的共享區,目前受益良多。

技術分享圖片


為什麽軟件開發,人多,事少,還會工作量大?