關於軟體開發,你老闆不知道的7件事
本文由碼農網 – 小峰原創翻譯,轉載請看清文末的轉載要求,歡迎參與我們的付費投稿計劃!
你的老闆是否不理解你的工作?本文將有助於你更好地理解為什麼你的老闆不理解軟體開發。
你的老闆可能真的很棒。我在我自己的程式設計生涯中就遇到過幾個真心棒的老闆,但即使是最棒的老闆似乎也常常總是不能理解軟體開發。
事實上,我想說的是當涉及到不止程式設計的幾個元素時,大多數軟體開發經理都有點目光短淺。
所以,我編譯了一個簡短的清單,用來說明關於程式設計一些最讓你老闆、開發經理、技術大咖等等誤解的方面。
1.技術債務最會拖累專案
工作在一個滿是技術債務的程式碼庫上,就像是在爛泥堆中奔跑。起初,在泥漿還不是很厚的時候,勉勉強強走過去還沒問題,但當有個1米深的時候,你就寸步難行了。
我最喜歡的作家之一,《7 Habits of Highly Effective People》的作者,Steven Covey,稱之為“P/PC平衡”或“產量vs產能。”
通常,管理人員和其他非技術性人員在推動生產力的時候,寧願犧牲質量——就像殺掉了下金蛋的鵝一樣——從而招致技術債務。
當然,通過絞擰這隻鵝的脖子,威脅它,你或許暫時可以得到更多的蛋,但用不了多少時間,死去的鵝就永遠不會再產蛋了。
如果你的老闆正遭受著不懂技術債務的痛苦,不知道技術債務是如何正在拖累你的,那麼建議你可以給他講講《7 Habits of Highly Effective People》中關於P/PC平衡中技術債務的條款。
大多數管理人員可能都會看過這本經典的書,所以比起你說寫新功能很難是因為程式碼庫太糟糕,還不如說說書中的觀點,更容易被他們所理解。
2.預估大多是廢話
軟體開發中的預估大多是廢話。
這一點,你知我知,甚至團隊可憐的專案經理也知——當然,也有可能他不知道,但是他應該知道。
預估軟體開發中的任何事情都是非常非常困難的,因為各種意外會讓你防不勝防。
每一個軟體專案,每一項任務都是新的。每次你坐下來寫程式碼,總有一些意想不到的狗屎事情發生。
但事情就是這樣。沒有人應該為此負責。不是你的錯,也不是我的錯,不是任何人的錯。它就是要發生。
然而,我們依然情不自禁地會去玩這個“預估”遊戲。
“Joe,你建立客戶登入頁面需要多久?”
“哦……呃……”隨便想了個時間,“2天……哦等等——”忘了CYA加倍。 “——要4天。”
“好吧,那我給你5天”。
“好,那就5天。”
還有一個很好的解決辦法是把任務分解到足夠小的程度,將所有的預估控制在4小時以內。
經驗告訴我,半天時間內的預估,通常能讓你體面地完成工作。超過這個點,那你就是廢話了。
3.可以立刻或快速完成
催促專業人士通常是一個糟糕的主意。
我用我從寫程式碼到現在超過15年的時間裡,學到了這個道理,所以我知道當我僱用別人做一些事情的時候,如果我催促他們,沒準他們會按時完成,但結果將是無用功。
不幸的是,我發現許多軟體開發經理似乎不知道這個普遍真理。不知怎的,他們認為程式碼可以得既快又好。
可不要誤解我的意思,我也承認是有例外的。有時,你的確可以快速地寫出好的程式碼,但通常而言總是慢工出細活。
同樣不幸的是,大多數程式設計師,當被告知要快點完成任務的時候,往往會選擇走捷徑,通過犧牲質量來加快程式。
更不幸的是,這樣的“程式碼快手”經常被當作英雄稱讚,因為他們能夠更快地完成任務,因為他們從不推遲或要求更多的時間。
然而,這些“程式碼快手”往往會將程式碼寫得亂七八糟,給其他人留下一連串的技術債務。
如果你正在打交道的開發經理不明白,快與好之間的關係,那麼你最好拿出一些統計資料,以說明後期修復bug比前期預防要耗費更高的成本。
組織越大,以及涉及的公事程式越繁瑣,那麼快速完成任務比正確完成任務的最終成本就會越高。
(對於這個問題的經典書籍——《人月神話》。)
4.有的開發人員實際上是在幫倒忙
有一個事實是,我們都碰到過那種對團隊弊大於利的程式設計師。
不同的程式設計師,他們的軟體開發領域能力和技能水平有著巨大的差異。
事實上,有些軟體開發人員糟糕到他們在工作中寫的每行程式碼都是在浪費公司的時間和資源。
這種型別的開發人員也許應該付錢給公司,而不是公司付給他錢。
這對你而言可能是顯而易見的,但對老闆卻不盡然。比如說,在你看來,可能Joe是一個徹底的失敗者,是需要被解僱的,因為他只會幹些“點金成石”的蠢事。所有他接觸的東西都變成了沒用的“石頭”。
但是如果你的老闆不明白團隊中有這些人比沒有更糟,那你能做些什麼?
好吧,大多數軟體開發人員都怕自己被認為是一個愛搬弄是非打小報告的人——我完全理解。
但是……你必須這麼做。這是對的。如果某人確實是團隊中的害蟲,那麼讓管理人員知道這一點也是你的份內事。
我知道這將會令你陷入不舒服的處境,但是如果你不報告,那你就不是稱職的程式設計師。你會成為殺死專案的幫凶。
至於所謂的報告,只要謹慎措辭和給一些提示就可以。
比如你可以這麼說:
“嘿,我不喜歡做這種事情,但我覺得,如果我是你的話,我會想知道是否有人直接妨礙了團隊。所以,我覺得這是我的責任來告訴你一些我一直在觀察的東西。
……
當然,這些都只是我的觀察,所以請和其他團隊成員商量一下,根據你自己的經驗來判斷。”
或者,如果你也可以使用這種不那麼婉轉的方式:
“嘿!Joe很菜。他寫程式碼實在是太慢了。事實上,他唯一可取之處就是他的慢,因為自從他來了之後,專案就基本上只能以蝸牛的速度前進。你再不正確瞭解他就晚了。”
5.更好的裝置是你可以投資的最便宜的生產力之一
我非常討厭程式設計師告訴我——他們的小氣鬼老闆不給他們配備第二個顯示器,或者讓他們用的是已經5歲高齡的電腦。
老實說,我真心不理解為什麼有的軟體開發經理不同意為那些8k+美元的程式設計師花費2k美元改善硬體——這是很划算的投資。
老舊的硬體裝備讓程式設計師真心很懊惱,很煩躁!
每當有程式設計師抱怨這種工作情況時,我通常會建議他們另謀高就,因為這種老闆的愚蠢恐怕無藥可治。
什麼都別說,我告訴你:
好的裝置能讓軟體開發人員一天多幹一小時的活,讓開發人員更有生產力。即使只有我說的數值一半的量,加起來的總時間也不會少。
如果算一年250個工作日,那麼就是250×$35美元=$8750。即使你砍去一半或四分之一,這依然是個不錯的投資。
如果你的老闆不懂這個道理,那麼老實說,我不認為你能有什麼辦法。如果你真心喜歡你現在的工作,那麼就只能自己給自己投資了。
6.新技術的風險其實沒你認為得那麼高
沒什麼比提及.NET最新最棒的JavaScript框架版本更讓軟體開發經理感覺恐懼的了。
這已然成為了大家心照不宣的雷區。
曾幾何時,每隔一年左右軟體供應商才釋出框架或補丁的新版本,因此,錯誤的代價會相當高。
曾幾何時,大部分原始碼是封印在“墓穴”中的,不允許其他任何人訪問的,所以一旦該公司不再支援它,你就會進退兩難。
但是現在,情況有所不同。
如今的框架,有時甚至是在每天的基礎上釋出補丁,並且大多數流行框架都是開源的,所以風險並不高。
當然,你也可以破罐子破摔,但這種情況不多,並且只需要稍作修改即可,而不是大刀一揮,好的壞的都割掉。
所以,如果程式設計經理依然還活在1980年,那麼你可能需要為他指出事情發生了什麼變化,以及為什麼停留在框架或庫的舊版本比升級它更危險。
恐懼策略中的安全漏洞就是一個很好的突破口。
7.畫蛇添足的業務分析師和專案經理
我知道接下來我可能會得罪不少人,但我不在乎。我在這裡說的都是真話,我是那種看到什麼就說什麼的人。
當然,首先要宣告的是,還是有一些好的業務分析師和專案經理的——但說實話,大部分的業務分析師和專案經理毫無價值。
曾經一度這些角色是開發專案所必要的。
但是現在,在大多數情況下,我們不再需要他們了。
軟體開發人員應該直接與客戶對話,以便於讓他們自己搞清楚客戶的需求。所以我們不需要業務分析師。
這是一個殘疾崗位,因為他們做的是軟體開發人員應該做的工作的一半,卻對另一半工作於事無補。
而專案經理更神奇,他的目標似乎就是奔著妨礙我們開發,將一切搞得一團亂而來的。
我知道他們是好意,但在當前的敏捷世界,專案經理已經發揮不了作用了,所以還要他們幹什麼呢?他們四處走動試圖讓自己顯得重要,試圖找出他們可以做的事情,最終卻只會妨礙大家。
很多軟體開發經理的想法仍然停留在過去,停留在那個職位更有意義的年代,他們聽信了世界500強諮詢公司的所謂的“潮流”——據這些公司所言,很多軟體公司需要更多的高薪顧問人員來滿足這些工作崗位。
如果你的經理還是不懂,那麼唯一的解決方法就是接受敏捷教育。
我不建議你直接告訴你的老闆說“業務分析師和專案經理純粹是在浪費氧氣”——這可能也不那麼容易被接受——所以,相反的,我會專注於說明一支敏捷團隊應該如何工作以及需要哪些角色。
然後很明顯在一個真正的敏捷環境中,是沒有業務分析師和專案經理的,他們可能更適合作為Scrum管理員或產品所有者。
積極主動
當然,上面我說的這些東西,有的我可能會用一種開玩笑的口吻說。但在現實中,軟體開發經理和軟體開發人員之間對於軟體開發的理解常常是脫節的。
我敢肯定,軟體開發經理會抱怨說,軟體開發人員不懂業務方面,不知道安排會議安排的難點——但那是另一回事了。
無論如何,關鍵點是:這不是一個對立的局面,而是一個可以解決的關於溝通不暢的問題——至少在一定程度上——可以通過合理的交流溝通解決。
採取積極而不是對抗的的方式,往往才是解決這些問題的最佳途徑。
你有什麼高見嗎?歡迎分享。
譯文連結:http://www.codeceo.com/article/7-things-your-boss-not-know.html
翻譯作者:碼農網 – 小峰
[ 轉載必須在正文中標註並保留原文連結、譯文連結和譯者等資訊。]
相關文章
- 關於軟體開發,很多老闆都不懂的 7 件事
- 關於 Java 你不知道的 10 件事Java
- 關於 Web Workers 你需要了解的 7 件事Web
- 關於JavaScript陣列,你所不知道的3件事JavaScript陣列
- 關於背單詞軟體,你不知道的驚人真相
- 關於MongoDB,你可能不知道的十件事MongoDB
- 關於 Git 和 Github 你不知道的十件事Github
- 關於Go,你可能不注意的7件事Go
- 關於 PHP 7 你必須知道的五件事PHP
- 你所不知道的軟體開發的詳細過程
- 7個你不知道的WP7開發工具
- 你不知道Java的10件事Java
- 告訴你關於結對程式設計的7件事程式設計
- Android 狀態列關於開發的幾件事Android
- 關於軟體開發你真正需要知道的幾個事情
- 關於 Java 物件序列化您不知道的 5 件事Java物件
- 關於MongoDB你需要知道的幾件事MongoDB
- 軟體開發丨關於軟體重構的靈魂四問
- 分享個人用於開發相關的軟體/工具
- 成為 Web 開發大師你必須知道的 7 件事情Web
- 關於 Java Collections API 您不知道的 5 件事,第 1 部分JavaAPI
- 關於iPhone SE你應該知道的20件事iPhone
- 關於面試你不知道的幾點面試
- 關於軟體專案開發的分析與設計
- 我希望在軟體開發生涯初期就知道的 4 件事
- 關於多個開發中心開發同一軟體的配置管理
- 關於NoSQL,你必須知道的九件事SQL
- 移動App開發人員應該關注的7件事APP
- 關於軟體測試的7個核心問題
- 關於軟體開發的一些常識和思考
- 關於Java垃圾回收被誤解的7件事Java
- 團隊軟體開發_基於windows下截圖軟體關於NABC框架的特點Windows框架
- 我從程式設計寫軟體學到的 7 件事程式設計
- 關於多個開發中心開發同一軟體的配置管理(轉)
- 你想知道的2018年軟體開發“10件事”
- 你不知道的軟體測試那些事?
- 39個你不知道的關於亞馬遜的真相亞馬遜
- 33款你可能不知道的開源爬蟲軟體工具爬蟲