缺乏競爭力的(相對)高收入群體
我現在是程式設計師,乙個小開發組長,過去是產品經理。到新公司新崗位一段時間後,感覺這個工種在企業內的處境有問題。程式設計師的相對高薪和可替代性,使其在整個公司面臨競爭壓力,不得不找人為企業管理的低效買單時,非常脆弱。
高薪和可替代性,和公司低效的工作模式有關。
低效的工作模型
我的新公司是個挺大的上市公司下的乙個子公司,這個公司對待程式設計師的方法很常見——和相當多公司一樣不可理喻:一方面,僱傭大量程式設計師,並給高薪,至少比產品經理和其它文員高;另一方面,在做產品決定時忽略程式設計師。
這就導致乙個我說出來明顯有問題的管理現象:少數低薪員工決定大量高薪員工的工作。乙個乙個月一萬出頭的產品經理,給出符合他薪水的工作成果——不咋樣的需求分析和產品原型,決定十幾個月薪兩萬的程式設計師接下來一兩個月,甚至更長時間的工作內容。
現在我所在的公司就處於這種糟糕的模型中,產品水平很符合他們的薪水——很次,甚至不和開發坐在一起工作;開發不了解產品需求,不知道乙個功能多重要。開發乙個公司內部系統,都很難和業務部門的同事說上話,只能通過沒有用的中間管理層了解需求。
這是乙個非常糟糕的模型,這個模型否定了程式設計師作為最後產品的施工者,在產品設計中的作用。這倒是很符合「碼農」、「搬磚」的形容:只需要埋頭實現設計,不需要想別的。除了建築設計看上去比產品設計專業、成熟多了,要求也低——畢竟是賣方市場。
妨礙開發效率
首先,這降低了開發的效率。程式開發有相當多的細節,很難有產品能把一切細節設計好,只剩實現。開發不了解產品設計邏輯,面對產品未考慮到位的地方就無法自己做符合設計邏輯的決定(如果有設計邏輯的話)。這個模式下,開發人員越多、專案越大,耗費在溝通上的成本越大,大到形成gl體系。
讓產品脫離需求
第二,這讓開發出來的產品脫離需求。「產品經理」是乙個沒有辦法的崗位,最好沒有這個崗位。「產品」是連線需求和施工的紐帶,乙個理想的產品經理,應該可以把需求抽象出來,在用更有效的方式表達在產品設計上,但現實是大多數公司的產品經理可能在他短暫而無用的職業生涯中一句話都沒有和基層業務說過。向下不了解程式開發,向上不了解業務需求,沒有接受過系統訓練,自學一周 axure 上崗,這樣的產品居然橫在開發和需求之間,指揮開發工作。
阻礙程式設計師職業生涯發展,難以培養人才,製造不可維繫的人力環境
第三,這妨礙程式設計師的職業生涯發展。有關程式設計師的年齡歧視很多,已經不是傳言了。這不是針對程式設計師,而是程式設計師的薪水相對比較高,人口還大,所以公司覺得人力支出多時就喜歡拿程式設計師開刀。這種情況還經常發生在基層金融從業者身上,程式設計師和基層金融人有個共性,就是缺乏實際業務經驗(難以領導業務),技能和業務的耦合度低(即插即用),高薪(相對)。乙個在就業市場上受歡迎的程式設計師,要不是技術超群,能突破公司重要的技術瓶頸,要不是很懂某乙個行業,做出來的程式能更貼近行業需求。
對程式設計師的年齡歧視,本質是認為這個工種的經驗沒有價值。那不是廢話嗎?大多數公司的業務根本不存在技術瓶頸,只有對業務的理解有高低,但這些公司根本不讓程式設計師參與產品設計,不讓程式設計師參與業務決定,那程式設計師就不可能了解業務。在經濟發展,網際網路膨脹的環境下,程式粗糙點問題不大,但這幾年,國內經濟不景氣,看上去也不太可能在短期內復甦。規模增長停滯的市場下,要提高競爭優勢必須精細經營業務,不了解公司、業務的程式設計師,難以做出適應競爭激烈的市場的程式。
不談社會責任,雖然它很重要。從公司角度,不應該把希望都放在從外部挖懂業務的高階程式設計師身上。這種「職業經理人」的模式已經被發達國家證明是低效的了。如果公司內部不能提供職業晉公升空間,公司與員工的利益衝突會增大,惡化**困境(agency problem),職業經理人可不管公司的長期利益,只要在自己的聘期內撈到好處、撇清責任、跑路,就好,毫無忠誠感可言。
但忠誠感是公司和員工兩邊的事情。
程式設計師和金融人的工作產出都不直接影響公司業績。程式設計師工種是一種「元工作」,是關於其他工作的工作,是製造工具的工作。沒有基層產生消費的那層活動支撐,程式設計師的工作無法產生經濟價值。「管理」工作也一樣不產生直接價值,但一般不是管理層來為低效埋單。
從企業角度,如何解決?
雖然這是個企業的管理問題,但這裡不談太高的解決方案,只談it部門有可能能做到的。it部門的主要工作是系統的開發,系統開發有三個元素必不可少:需求、資料庫、開發。
開發介入需求分析,承擔更多產品設計的責任
我剛進公司時,聽到幾位開發同事討論專案裡乙個產品沒說明的功能要怎麼做。這幾位開發討論出來的結果居然是隨便做,反正是產品的錯。說得好像改需求時和自己沒關係一樣。你不會希望自己的開發人員都是這種心態,但你也不應該指望靠他們自己提公升覺悟,如果他們可以自己提公升覺悟,那部門經理應該立刻辭職。
恕我直言,寄提高業務的希望於靠基層員工自己努力的管理層,都應該立刻辭職謝罪。
這一步最困難,業務部門可能不願意配合,上級領導可能不與it部門直接對話,但是這一步對it部門的表現影響重大,it部門應該主動與業務部門溝通,協助業務部門抽象需求。
重視資料庫設計
資料庫是業務、管理的抽象,系統是資料的輸入輸出,大多數公司裡,系統的資料庫都是由開發部門設計的(至少是由他們建庫的),資料庫不應該由不了解需求的人設計!即使在同乙個公司同一條業務線裡,一般也是乙個系統乙個資料庫,很少會共用,但公司的經營是乙個整體,要提供公司整體的經營效率需要各個子單元緊密配合,至少不互拖後腿。
前幾年行業內總說的「業財一體化」,就是指業務和財務資料打通。領導一般去看財務出的報告判斷業務經營情況,但產生價值的地方終究還是業務部門。
運氣好,財務系統和業務系統的資料庫湊巧是同乙個人設計的,那這些系統至少在業務邏輯上差別可能沒那麼大,資料打通會比較容易,但如果是不同專案組各做各的,那可能最後不同資料庫裡的實體抽象都對不上。我上一家公司就有這個問題,財務系統裡的組織架構和業務實際使用的組織架構完全對不上,為了多個系統的打通耗費大量資源,說花一年一百多萬請了乙個微軟的架構師來搞,我去這個專案組見識過,基本都在清理資料,我入職時已經搞了兩年,在我離職時還沒做好。
資料庫、業務行為(需求)、系統開發,三個主體連線緊密,要提高整體的效率需要三者的邏輯統一,這件事it部門是有希望主導的,開發和資料庫設計已經在開發部門手裡了,部門經理最好不要讓不同專案的開發因為資料庫設計上的矛盾內耗,畢竟到最後系統做不出來,都是it部門的錯。
提高需求方的反饋頻率(在不指望需求方能力提公升的前提下)
理想的情況:需求方完全明白自己需要什麼,給出詳盡的產品設計,開發部門悶頭做。
這可能嗎?
做面向客戶的產品時,很多公司會採用內部試用、公開試用等方式蒐集使用者反饋,調整需求。做公司內部產品就簡單些,直接讓需求方和開發共同設計產品,讓需求方了解開發方向和進度。一般需求方的事前提的需求比較粗,拿到手裡用時挑三揀四。最好開發這裡能夠非常快的出基礎功能(也就是增刪查改)齊全的demo,然後按照更新的需求進一步開發。
不考慮高併發和分布式,crud 的輸入輸出模型還是比較簡單的。
輸入,是表達業務行為的 sql 語句,輸出是介面,但使用者不認介面,所以輸出要到 ui 介面。那就是三塊:sql 語句、api、ui 介面。
不考慮任何條件判斷、資料驗證、ui 介面美化,我覺得 sql -\> api -\> 最低可用的 ui demo,這三步的開發應該要縮短到一兩天內乙個功能模組的程度,才能支撐適應不斷更新的需求。
開發框架的選擇並沒有統一標準,是各方面權衡。企業服務最主流的開發框架之一是 spring + mybatis + 某前端框架,這個框架不符合上面提出的開發模式。開發者會花費大量時間在把設計翻譯成**上,換來的好處是程式設計師好招,技術支援多。
從「水桶定律」看人的競爭力和團隊的競爭力
水桶定律 也即短板理論,是由美國管理學家 彼得 提出的。其核心內容為 乙隻水桶盛水的多少,並不取決於桶壁上最高的那塊木塊,而恰恰取決於桶壁上最短的那塊。根據這一核心內容,水桶理論 還有兩個推論 其一,只有桶壁上的所有木板都足夠高,那水桶才能盛滿水。其二,只要這個水桶裡有一塊不夠高度,水桶裡的水就不可...
Q A 騰訊的核心競爭力
和 創新工場的張亮 的回答得到了大量投票,下面就讓我們來一窺究竟。個人覺得張亮的回答比andy pan的更清晰 更結構化 更系統 當然另一方面,說了這麼多點,也未免太細了,也就不再是 核心 競爭力了 關於第10點,張亮是想說山寨麼。局外人觀點,見笑。1.馬化騰。2.qq 這款史無前例成功的 im。它...
培養自己的核心競爭力
人的核心競爭力超過一半來自重要而不緊急的事情 1 讀書,特別讀那些非實用性的書 2 鍛鍊身體,笑到最後的得有一副好身體 在一線城市,平常聚會組團可能玩不起來,但是就個人來說,除了健身房,還有跑步和跳繩,尤其是跳繩是鍛鍊全身運動的比較合適的運動。3 與智者交談,提問,思考,常作筆記 如果平常生活中碰不...