※ 本文轉寄自 ptt.cc, 文章原始頁面
看板Soft_Job
標題

[心得] 為什麼我們提出改變,常常不被上層同意?

時間
最新2020-10-06 21:51:00
留言98則留言,53人參與討論
推噓37 ( 40355 )
好讀 Medium 版:https://tinyurl.com/y6o59mx6 前陣子有幾個同事離職,參加了幾場歡送會,因為老闆不在場,同事們不免俗地 討論起在工作中的甘苦談,抒發一下情緒。抒發情緒是好的,好讓我們把情緒說 出來,獲得同儕的認同感,明天可以打起精神面對接下來的工作。 原本我只是想趁機去吃吃喝喝,不過談的話題讓我有些感觸。像是老闆的決策讓 他們很難作事。或是自己提出重要的對公司好的改變,沒有被接受。或是產品各 版本開發流程常常出現狀況之類的。 我有感觸的是在我過去工作的歷程,我也和他們一樣在其中會有些疑惑和抱怨, 我回想起當時我的感覺和現在的差異,用一句話形容,應該就是「視野不同」吧。 工程師的視野 在以前當工程師,面對的只是需求、眼前的螢幕、文件和Stackoverflow,我不 知道需求怎麼來的,只知道需求很奇怪,時程很奇怪,做出來的功能也很奇怪, 不免會抱怨一番。現在回想起來,是因為當時我的世界太單純了, 能忠實反應我寫的bug的編譯器、書本裡Best Practice和Stackoverflow的解決方案, 只要不合於我世界中的正確答案,我都標上「奇怪」二字,並提出如何解決這個奇怪, 來符合我腦中的正確答案。 當時的我認為這才是對的,而主管應該要回應我,然後改變現況。但是事與願違。 當時帶我的資深工程師說「我知道你提的東西很難做到,但又不想一直在潑你冷水」, 我不懂什麼叫很難做到,我當時只知道你們是不想做。 PM的視野 我在當PM的時候,著重在如何讓我們產品貼近用戶族群習慣,因為是在外國工作, 台灣的習慣和當地的很不一樣,像是金流就需求大調整,行銷的手法也和台灣不一樣, 首先就先打通當地金流,那麼我提出一套建立在現有金流機制上最基本的變更, 來符合當地習慣。(當然這是我當初自認為的最基本)不過也沒有被接受, 反應是變動太大,不可能進行。當時我也不懂什麼叫很難做到,我當時只知道 你們是不想做。 技術總監的視野 當技術總監和之前的經驗很不一樣,老闆會開始和你聊營收、成本,我可以明顯 的感受到以前沒感受過的壓力。我仍然知道正確答案該怎麼做,假設要花六個月 才能完成一個會賺錢的功能,但是公司資金只能撐五個月,那麼該怎麼辦? 當然最直接的就是叫老闆去生錢出來,不過技術總監就是該在現有的資源下要 產出最大效益的東西來,所以我就必須把六個月的功能拆成四個月可以完成, 有些功能放到後面去做,有些功能先作一半,程式髒一點、醜一點沒關係。 當我把規格定出來後,感覺一股熟悉感,啊幹這不是我以前我覺得奇怪需求和 奇怪時程的味道嗎? 不過我有做了幾件和以前主管做不一樣的事情: 1. 偷渡一項工程師對系統想要優化的改變。 2. 和老闆討論這個功能做完上線後維運期我們要作一些體質調整的事。 3. 老實說明公司的狀況和做這個決定的來龍去脈 尤其是第三點,以前的主管可能沒有耐心說明這個需求整個故事背景,然後只給 工程師片段的資訊,然後工程師就拿著片段的資訊去猜公司到底在想什麼, 然後日積月累造成極大的徧差。 提出改變建議不被接受 聽著同事在聚餐中的分享,回想到我以前我會抱怨只是因為我的想法沒有被接受, 但是我也沒有接受老闆的想法,只是屈服罷了。不過我們經驗不同,視野也不同, 想要解決事情的重要順序一樣也會不同。以前的我只是提出問題,想要對方可以 解決我的問題,但是同樣的老闆也提出他的問題。我不斷用不同的角度去切入, 凸顯我的問題的重要性,老闆也同樣用其他角度切入來凸顯他的問題。 那麼我們只是在申明自己立場而已,並沒有溝通。 設身處地想成本的事才能找出好解法 我在想要做的改變時,我都會想著:這間公司一個月成本支出要XXX萬,要養XX個員工。 那麼我提出的做法會不會給這間公司造成很大的負擔? 有人可能會說這是老闆要擔心的事情,為什麼我們要想這個。 沒錯,實際負擔起公司的是老闆,那些成本也是不從我口袋支出。不過如果我要 讓事情能順利進行,我就不應該提一個等同於蓋世界奇觀的計劃。當我想著成本 支出的事情時,我就會刻意的把規模縮小,讓人力和時程有辦法應付日常營運和 開發,又不會增加太多成本並把計劃排個優先順序,先瞄準痛點,就會讓所有人 都有感。 從無到有建置一個專案不難,但是在現有專案中,在人力、時間、成本、效益找到 最平衡的做法,才是真正考驗工程師的功力。 以前的我,只是在意我的意見有沒有被接受,我有沒有被認同,最核心的點是自己 無法認同自己的價值,才會追求別人的認同。現在的我是知道自己的能力和能耐, 認同自己是一個很不錯的人,於是就不會把別人的認同看得那麼重,我才能專注在 「如何把事情做好」。 看到這邊如果你也有些感觸的話,不妨也問問自己「我有認同我自己嗎?」 以推行寫測試為例 今年我在公司推行測試計劃和程式的重構。由於過往PM們有不好的經驗,所以一 開始就受到阻礙。 我就從自己做起,估的時程和以往一樣,並不會因為寫測試而增加時間, 並為內部寫下Unit Test & Feature Test文件和實際案例。然後開內部講座 指導工程師如何寫測試,並說明和PM回報預估時程不能加上測試,只是把原本自己 做的人工測試,把重要的改為自動測試。反覆人工測試的時間,拿來寫自動測試 其實很划算。 五月份的時候每週分享測試心得和自己寫的案例,到九月份的時候每個人的專案 都已經有基本的測試了。 在這個過程中,我也和老闆說明測試的重要性,每一點都直擊痛點。 1. 人員流動接手專案比較不容易改A壞B,負責專案的工程師請長假也不用太擔心 2. 測試所需程式的結構會順便統一,人員流動接手專案上手會變快 3. 接大型案子難度降低 然後在下半年的考核標準加上寫測試這一項。這過程中PM感覺不到時程因測試而 變胖,專案也開始可以在內部輪調了,每個案子至少有兩人接觸過,人員調度 也變輕鬆了。 以推行程式重構為例 我接手 SurveyCake 後端的專案,過去曾經有重構一部份,仍然留下許多legacy code, 剛好這次後端開發時程超前,於是我們可以做重構的事情。我是這樣做的。 我去訪問了各部門,最常找後端工程師協助的事是什麼事,大概一個月會有幾次, 一次平均會花多少時間。一問之下發現一個月會讓一個工程師有4-6個人天在處理 某件雜事。就叫它A功能好了,假設一個人的一天成本是N元,工程師耗的是6N, PM、業務、客服三人所耗的心力不同,粗估一個月2N好了,也就是A功能讓公司 一個月要支出8N的成本在上面。 光這樣提出來,大家就有「嗯嗯,是應該要處理了」的感覺,所以我推這個功能 的重構沒有任何阻力。 再來是最近老闆想要減少測試所花的人力,所以我們嗅到好機會,提出 Test Covarage改善計劃,首先第一步就是把還沒有辦法寫測試的項目, 都改為可以寫測試的結構,主要是進Laravel框架。 剛好前陣子有銀行業找上門,他們的規範是資料要留在台灣,那麼就使用GCP建置, 但我們原本的程式很多都是直接串AWS,但是只要進Laravel框架,我們就很好擴展 成AWS & GCP雙棲。所以提出重構的第一波計劃就瞄準了痛點: 1. 為了測試而調整,減少內部QA時程,開發週期縮短 2. 讓A功能一個用8N的成本降低50%以上 3. 可很好擴展到GCP上,業務更好賣 對於內部工程師,也說明了重構可分「可以順便做的」和「不可順便做的」, 可以順便做的我們在開發時就順便做,但不需要太完整,有時候太完整會把擴展性 變很低,大概70%整理過,30%Legacy為黃金比例來做,一點一點補起來。 不可順便做的順便做的重構就會用上面的那些角度切入,排入正式計劃。 其他還沒有重構到的,沒關係,我們可以等待下次的時機。 心得 回想起過去提出測試和重構,理由是「這樣我們比較好寫程式」,這只是主要是 為自己的方便,不見得其他人也方便,也可能會造成他人的麻煩。 我所作的,只是把其他的人顧慮的點納進來,從中找出一條生存之道, 能達到我想要達到的事。其他還沒做到的事,就要等到天時地利人和都俱足時, 再去進行就好。 剩下的時間就悠哉過我的小生活就好,人生不是只有工作嘛! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.164.237.32 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1599885468.A.ED7.html

98 則留言

lonelytea, 1F

sylviami, 2F
推推

taikobo, 3F
推角色不同,看事情的角度也不同

geniusturtle, 4F
推 溝通很重要

jny2117, 5F
推推 好棒

tay2510, 6F
推分享

unmolk, 7F
推好文

mirtac, 8F

x246libra, 9F
追求正確做法,可以被你說成眼光狹隘,是自己世界太簡

x246libra, 10F

x246libra, 11F
還是換公司最快,通常這種公司沒在管品質的,能動就好
不同的位置會有不同的視野,我在文中可沒講眼光狹隘吧 我的確也是想著換組織換公司,不過至今還沒換到所謂「正確」的組織和公司 我不需要用我的生命來証明那些公司失敗,我想要讓我想作的事落實而已, 所以我才開始研究如何落實,走到現在我個人感想是比追求正確作法實際多了。 如果用一句話來形容是「考量到現實條件儘可能代入正確作法並落實」

TAKADO, 12F
最正規/最正確的做法有時候不一定是最佳解啦,有時候還是

TAKADO, 13F
得在現實條件前妥協,尤其是專案類型的公司。
是的,但同樣有自己產品的公司也會有初期先活下來,然後code亂七八糟, 後來整理會整死人的情況,一樣的是在現在條件下找出目前可以執行的解法

frank910138, 14F

B0988698088, 15F
最近怎麼常有medium的來刷流量

superpandal, 16F
專案類型的公司的確是這種 公司都沒什麼話語權更不要

superpandal, 17F
說自己 真的好缺十之八九都被人佔走了

st903202xp, 18F

lance70176, 19F
做過一陣子類似思路 給推

alihue, 20F
不是 medium 的錯,是 ptt 太難寫文章reddit programming

alihue, 21F
也都是貼文章鏈結

alihue, 22F
難道你要在 ptt 貼 code snippet 嗎?

leo5916267, 23F
最佳解應該要在歸納需求時就想好最佳需求描述,不然

leo5916267, 24F
不可能實作出來
理論上是這樣啦,但是業務/PM也是人,也是需要學習的,在成長過程中也是會提出些 不太「正確」的描述法和需求,那麼有沒有人可以協助他們了,沒有的話就是自己出馬 去協助,融合雙方需求定出提需求的規則,就算沒有100%到位 但是從10%提昇到50%,讓雙方都省下些時間,我想很少公司會反對的

wulouise, 25F
你貼gitpage上來別人也會說是來騙星星的xd習慣就好

rayway30419, 26F
有溝通能力的技術人員才有辦法做這件事

rayway30419, 27F
很多技術本位的人根本懶得去花力氣說服別人

airtsubasa, 28F
當你的同事是比你資深n年且等著退休的人,要推什麼都

airtsubasa, 29F
無法

s001582000, 30F
碰到無能主管除了換公司還能怎辦 把他鬥下來嗎
我的心得是作這些事情有沒有在公司推行成功並不是主要目標,而是讓自己培養出能力。 我啊,在之前的公司也是推得很挫折,但因為在那挫折環境下,我研究和嘗試了各種方法 ,累積了知識和一些經驗,換到新環境馬上就派上用場。 而不用等環境准備好,我再來學,我的焦點一直都是自己的成長,那麼主管或資深同事 想不想動就和我想不想動一點關係都沒有。

lazarus1121, 31F
職場沒這麼複雜,主管口中的視野高度

lazarus1121, 32F
講白話就是,不要讓我被上面定

lazarus1121, 33F
我這兩年把好幾十支程式和table都翻掉了,我只跟主

lazarus1121, 34F
管説,不會有異常,BU不會抱怨,就算出問題也有備份

lazarus1121, 35F
主管只跟我説,專案不要delay就好,也沒在擋的

triplee, 36F
推樓上 有時候反而就是這麼簡單
Ya,主管立場「有人想幫我搞定連我都不想搞定的事,高興都來不及,不要出包讓我得去 背鍋就行

michealx, 37F
默默撿垃圾是一種浪漫
沒錯,我最愛默默修東西了

alongalone, 38F
感覺有點廢文. 那怎麼不是想辦法讓大家拿到的資訊依樣

mickey94378, 39F
推好文

freshlemon, 96F
,做這件事情對公司有什麼利益,而不是以自己的角度覺

freshlemon, 97F
得這樣比較好做事

sagiters, 98F
謝謝大大分享,很有用~~

lnyan, 99F
推用心分享好文

cotbel, 100F
很用心分享,很多面向過去沒想到,用力推

cory8249, 101F

HZYSoft, 102F
大推,這篇寫得超好!

peiigreen, 103F
推好文