10年產品工作的一些感悟(一)

12 評論 9942 瀏覽 17 收藏 21 分鐘

編輯導語:隨著人生經歷的豐富、身處環境的變化,我們總會時不時生出一些關于生活、工作等方面的感悟。本篇文章里,作者便對自己的十年產品工作進行了總結,并闡發了自己對產品工作的一些認知,一起來看一下。

一、關于我是誰

最近一年來我一直被工作瓶頸和35歲焦慮所深深困擾,腦子里不斷在回放這些年的工作經歷,總想寫點什么。今天是我的生日,此時夜深人靜,在GZ的一個酒店里,我敲下了這篇文章紀念并復盤這10年多的產品經歷,希望一切過往皆為序章,人生才剛剛起航。

我2010年畢業于美麗自由的櫻花大學,雖說我學的是軟件工程專業,但是因為種種原因在學校時我竟沒有寫過一段完整的代碼。幸運的是,靠著臨時抱佛腳我在大三時拿到了一家不大不小的軟件公司的軟件開發崗offer,一個月工資4300元,工資不高不低,剛剛夠養活自己。

我深知自己不會寫代碼,離開發崗差距很大,所以我拿到offer后立馬向公司申請了實習。2009年11月10日我來到了HZ,開始了我的職業生涯。

二、我曾經是一個程序員

1. 通過大半年的實習我學會了寫代碼

入職后我的導師給了我三本書、一份文檔、一個任務,這就是我實習生涯的開始。這三本書和一份文檔及一個任務構建了我最初工作知識結構,現在回想起來這對我的職業影響很大。

  • 一本書是古老的Delphi6開發指南,主要是介紹如何編寫前端代碼、制作程序界面。Delphi開發工具自帶界面設計器,界面設計器和Axure非常相似。這讓我對交互設計與用戶體驗有了初步了解。
  • 一本書是pro*c開發指南,主要是介紹如何編寫后端代碼的,包含了如何編碼c語言以及如何訪問數據庫。
  • 一本書是oracle開發指南,主要是介紹如何編寫數據庫sql語言、如何進行數據庫設計。這讓我理解了什么是數據,數據是如何記錄的。
  • 一份文檔是我們部門所負責的產品的業務文檔,包含了各種業務介紹、功能需求。
  • 一個任務就是根據這些資料完成一個簡易版本的能運行的程序系統。這個也是我的畢業設計作品。

這個簡易版本麻雀雖小五臟俱全,它包含了從業務→需求→設計→開發→測試→部署發布的完整IT研發流程,包含了各個崗位的工作內容,這讓我對研發流程和工作分工有了一定的理解。

雖然鴨梨山大,但是我沒有辦法,我只能硬著頭皮一頁一頁地去看書、一行一行地去寫代碼、一個一個地去debug,我一邊自學一邊百度一邊請教同事。過了幾個月后團隊又加入了6個實習生共同完成這個任務,經過了大半年的努力,我們終于讓程序運行起來了,我們也都完成了畢業設計作品。實習期和試用期結束后,我在事業部幾十號新人里面考核前三拿了A。

感謝這些同事與領導,感謝這段實習經歷,這比我大學四年學習的程序實操知識都要多。這段經歷讓我明白并且相信不懂的東西可以通過學習獲得,學習也成了我長期的習慣與能力,讓我不懼怕各種新領域新知識的挑戰。

2. 我的兩年程序員經歷

這是一段踏踏實實干活,打基礎的經歷。

我的主要工作是按照領導分配的需求任務,進行概要設計、詳細設計、編碼、單元測試等等。最初是做一些簡單的前端操作頁面、查詢等任務,試用期過了后開始做一些前后端一體的業務邏輯處理。這個階段的工作相對來說是最簡單的,日常主要碰到這些問題

1)對某些業務知識不熟悉

對于一個處理金融業務的行業級B端核心業務系統,業務知識十分復雜,對安全性與業務邏輯正確性要求極高,容不得半點差錯,短期內很難快速掌握。

由于B端業務知識的特殊性,很難在百度等外部工具上找到資料。解決這個問題最有效的辦法是自己先學習內部的相關需求文檔,然后再去向領導同事請教,直接問到關鍵點,切忌自己什么都不了解就直接去問,畢竟大家都很忙都有很多工作要去處理。

2)對某些系統實現邏輯不清楚

一個行業級B端核心系統往往都經過了很多年的迭代,系統錯綜復雜,修改一個功能往往牽涉到很多其他功能點,對一個新手來說常常無處下手。

在每次修改之前我需要確保自己已經熟悉了需要修改的程序原有邏輯、可能的影響點,我的方法就是一遍一遍去看現有程序代碼,先做好設計再編碼,編碼完成后不要急著調試而是先自己代碼走查看看邏輯是否正確,最后再做好單元自測。我認為大部分時間應該放在熟悉需求、熟悉現狀、做好設計上面,想清楚再去做。

3)對某些技術知識點不掌握

對開發人員來講技術問題反而是容易解決的,我們工作中使用的都是成熟的技術,百度等工具上都有大量的資料,這個只要我們花時間去找資料總是能解決的,當然做了充分準備后向同事請教依然是高效的辦法。

4)復雜bug修復難

debug就是開發人員的日常,熟悉業務然后耐心仔細覆蓋好每個分支邏輯基本就能解決了,有些神仙問題大多跟環境等有關系。

5)代碼重構影響面大

不做重構的程序員不是一個好程序員。程序維護的人多了,時間久了必然會出現各種問題。

編碼規范這類問題都是管理的問題,堅決落實就好。對于一些其他代碼壞味道就需要主動承擔重構的職責了,不要形成破窗效應。當然重構之前務必要清楚原有邏輯、可能的影響點,與直接主管、測試團隊做好溝通,畢竟軟件研發是一個工程性的工作。

6)害怕與領導同事溝通

剛畢業的時候容易把領導同事,特別是領導當著單純的管理者監督者,害怕溝通。

其實大家是一個團隊,為了共同的目標在工作,只是分工不同而已。領導是一個管理者監督者沒錯,同時也是我們工作的協助者,在我們能力和權責范圍之外的事情我們可以跟領導溝通商量尋求幫助支持,日常的一些重要工作也需要尋求與領導、重要同事達成一致。只要出發點是正確的,再搭配合適的溝通方式,就不用擔心害怕。

從各個角度看這兩年的工作是相對單純的,沒有什么高深復雜的技術甚至很落伍的,大多數時間也只用跟電腦打交道,可以安安靜靜地干自己的活,唯一有難度的是復雜的業務邏輯。

當我開始熟練掌握這個工作后,這份工作開始沒有了挑戰。我開始焦慮,焦慮目前這種落伍的技術以后要怎么找的到工作;我開始浮躁與失落,看著大學同事都去了互聯網大廠,看著身邊績效沒我好的同事跳槽到金融機構工資翻倍翻幾倍,再看看自己每個月所剩無幾的工資和高昂的房價,我很迷茫很浮躁……

我發現我的內心其實不喜歡做開發工作,長期安靜地與電腦打交道也不是我的長處。

當然這2年的工作我也收獲了很多:

  1. 我養成了比較好的工作習慣與方法,特別是持續學習、多思考、有計劃等,這在上文已經介紹就不贅述了;
  2. 我對技術工作有了真真切切的理解,前后端如何配合實現業務、數據如何存儲、技術各崗位分工協作等;
  3. 我掌握了一定的業務知識,我熟悉了我們系統所服務的業務以及我們系統是如何實現這些業務處理的,這個階段雖然沒有形成自己的認知邏輯,這是我對TOB產品的最初認知;
  4. 我在同事間形成了良好的口碑,我的學習能力、溝通能力獲得了大家普遍認可,工作中獲得了很多表彰獎勵,我受到了事業部領導、HR部門、甚至是公司領導的關注,成為了事業部新人中的重點培養對象。

三、我開始成為一名產品經理

得益于部門業務的快速發展與領導對我溝通等能力的認可,2012年我開始承擔了行業所有客戶的需求溝通與分析工作,我負責的是一個維護迭代周期的成熟期產品,客戶數大概60多家,每年產品營收大概1000~2000萬左右,這是我做產品經理的起點。與此同時我還承擔著系統概要設計、任務分配、編碼等工作。主要工作包含:

1. 客戶需求分析與溝通

客戶的需求通過各種渠道統一匯總到我們的需求管理系統,我每天的工作就是打開需求管理系統去處理這些需求,這部分工作大概占了我30%的工作時間,一般步驟如下:

第一步:在與客戶溝通之前仔細閱讀客戶的原始需求材料。

第二步:判斷該需求是否屬于我們的產品業務范圍,如果不屬于則需要分析清楚哪個產品承接更合適,將需求移交給對應團隊承接。

第三步:對于我們產品業務范圍內的需求,需要分析是個性化需求還是通用需求、是付費需求還是免費需求。對于個性化極強的需求一般的處理方式是擬拒絕,對于重要客戶、強勢客戶,為了維護良好的客戶關系則會讓客戶額外付費實現。對于需要付費的需求一般會在與客戶溝通后啟動商務評估與對接流程。

第四步:制定初步的處理方案、評估大概的工作量、初步的版本計劃與交付周期、需要溝通確認的需求點等。對于一些復雜的、重要的、工作量大的需求一般會在團隊內部先溝通達成一致。

第五步:與客戶進行電話溝通,對需求疑問點進行確認,就處理方案尋求達成一致,大多數情況下大多數客戶都是相對容易達成一致的。對于無法達成一致的則需要多輪溝通、上升層級溝通、大多是我們做出一定層度的讓步。

第六步:將需求溝通結果更新到系統中。在領導審核后系統會自動將處理結果信息郵件同步到相關人員,包括同步到客戶。這一步既是對信息的同步,也是對處理結果的確認留痕。

(在處理需求過程中會有很多成熟的方法論,選擇合適的方法就好,這部分后續有機會再成文探討。)

2. 產品方案設計

在與客戶溝通清楚需求后接下來就是具體的產品方案設計。在方案設計過程中主要考慮這些方面:

1)產品化

我們是在持續維護迭代一個產品,服務于行業60多家客戶。軟件的利潤應該來自于復制,我們在做方案設計的時候需要盡可能做到功能點的模塊化、通用性、可配置性。

模塊化是產品化的基礎,合理的顆粒度才有更好的復用性;通用性是為了兼容并服務于更多客戶;可配置性是為了減少對不同客戶的影響能夠按需使用。

2)功能性

TOB產品主要用于處理企業內部各種業務流程,實現對各種業務流程的處理支持是最根本性的要求。在產品定位和職責范圍內,能夠支持的業務流程越多、場景越多則產品性功能越強大。

當然更強大的功能意味著更多的研發投入,我們一般的實現方式是在服務客戶過程中不斷積累產品功能。

3)穩定性

這也是一個根本性要求。我們的產品是處理金融業務的上游系統,下游系統依賴我們產品的數據進行后續業務處理,這就對我們產品的業務處理的時效性,準確性提出了極高的要求,少出錯少宕機。我們在設計過程中要考慮如何盡量降低系統處理和用戶處理的復雜度與出錯的可能性,出錯后如何快速且正確地恢復。

4)易用性

雖然易用性要求沒有TOC產品高,但是在設計過程中也需要考慮客戶使用習慣、操作效率等。

5)擴展性

金融機構的核心業務系統一般使用周期都會在5~10年,需要持續維護。我們在方案設計過程中需要為未來的業務發展適度預留可能性(這對業務的理解要求比較高),比如對需求多變的場景進行參數化設計。

6)性能

這個很好理解,就是在相同的數據量的情況下更快速地得到處理結果。設計方案對性能影響也很大,對于大數據量的業務和操作特別要注意,多跟架構師溝通。

3. 開發編碼

編碼工作就不再贅述。不過有一點需要特別說出來的的是,在處理過大量需求后,我開始能感受到每一行代碼的溫度和情感,因為每一行代碼都在服務客戶服務客戶的用戶,都是有生命的。

這個工作持續了將近兩年時間,我想成為專職產品經理的想法越來越強烈。2013年左右的時候正是C端產品經理開始炙手可熱的時候,我也投過互聯網大廠的產品經理崗,不過都是石沉大海,畢竟我沒有任何C端經驗,那個時候也沒有B端產品經理的概念。

雖然我沒有成為專職產品經理,但是我也學到了很多東西,有了很多認知:

  • 技術只是手段,是為業務服務的:這段工作會讓我去思考如何用技術去服務業務,所有的技術工作最終都是為了更好地服務于業務開展,能產生業務價值的技術工作才更有價值。
  • 如何做好產品:TOB產品的成功需要靠產品綜合競爭力,包含了產品質量(功能性、穩定性、易用性、性能等)、產品服務(售前服務、售后服務等)、產品價格、客戶關系等等,這些最終都會反應在客戶滿意度上反應在客戶購買和續購上。
  • 業務思維與敏感度:處理了數千條需求后,面對需求時我第一反應是考慮業務場景、業務流程,再是產品方案。
  • 與客戶溝通的能力:最初與客戶溝通時我會比較緊張,使用的多是技術語言,但是客戶方人員很多是非技術背景的,通過一段時間的調整我能熟練地在業務語言和技術語言之間切換,與客戶溝通順暢多了。
  • 全面思考問題:一個需求的實現涉及到公司內外,團隊上下游很多環節,要關注到每一個環節,對重點環節需要重點關注。
  • 計劃性條理性:每天都在多種工作中切換,工作時間開始碎片化,這就需要對工作按重要性緊急性進行組合排序做好時間和精力分配。
  • 小團隊管理能力:2013年我開始負責管理一個5人左右的小團隊,這讓我有了最初的團隊管理認知,不過這種認知還是相對淺薄的。

四、我做過半年項目經理

隨著業務的發展,2014年我們部門所負責的業務線出現了一個新的機會,領導從長遠發展的角度讓我去負責這個項目。這個項目是為某部級監管部門研發一款行業級監管系統,項目周期大半年,我主要的工作是:

1)需求溝通

由于這是一個新的業務領域,我們對業務的理解不夠沒有行業高度,監管部門安排4家行業頭部金融機構IT負責人來牽頭梳理需求制定標準。我主要是參與記錄需求,提供參考意見,然后整理出需求文檔,最終由會議領導確定需求。這個過程中最困難的是對業務知識的不了解,這個只能通過認真聽取需求討論會議與自學解決。

2)團隊管理

帶著10人左右的團隊,負責團隊的任務分工和人員管理。最主要的是合適的人干合適的事情,提高團隊效率。

3)項目管理

我們做的其實很粗放,只是做了初步的需求范圍控制然后通過大量加班來趕項目進度。

這個工作也是有一定的收獲的,對項目研發形式有了一定的認知,明白了產品研發與項目研發的差異。項目研發關注的是使用預定成本在預定周期內完成約定范圍內的需求,它的核心其實是成本控制,最終要通過毛利率來衡量;產品研發則更看重在實現客戶需求過程中迭代產品,與此同時也會按照產品規劃路線圖沿進,產品研發最終要通過客戶數和財務指標來衡量。

我的職業生涯過程中大概每兩年就會出現一次發展瓶頸,隨之而來的就是焦慮、浮躁、迷茫。機緣巧合,后來我參與了一家創業公司的籌建,我開始進入互聯網行業……

這個成長記我分成三部分來寫,后續根據閱讀情況再更二三。

 

本文由 @產品大辰 原創發布于人人都是產品經理,未經許可,禁止轉載

題圖來自Unsplash,基于CC0協議

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 為什么有種感覺是在恒生

    來自中國 回復
    1. 不要猜??

      回復
  2. 寫的非常真實,把自己的過往記錄整理出來了,讀下來收獲不小,期待第二篇~

    來自浙江 回復
    1. 歡迎交流

      來自浙江 回復
    2. 來自浙江 回復
  3. 請教作者一個問題,像這種復雜的B端業務系統,是怎么把這么多客戶的需求共通點找到的,一直很困惑

    來自廣東 回復
    1. B端做產品化是一個難度極高的問題,市面上做到產品化的公司很少。產品定位要清晰,然后模塊化+參數化是主要方法。

      來自廣東 回復
    2. 公司這個想做那個也想做,然后客戶群共通點也不大,有些產品需求很難模塊化,通用化就更少,所以有時候做的方案很難滿足那么多人。你說的產品定位要清晰,然后模塊化有了這個前提才好做,不過現實企業中很難

      來自廣東 回復
    3. 產品定位是公司產品管理的問題 不是產品經理自己能解決的。公司必須要確定這個產品面向什么行業 什么業務場景 典型客戶等。

      來自廣東 回復
  4. Hi,寫的很好,是一個產品經理成長歷程的呈現,期待第二篇分享

    來自陜西 回復
    1. 非常感謝,歡迎交流。這個系列的文章寫的都是真實經歷,沒有刻意去講方法論,第二篇已經準備開寫了。

      來自廣東 回復
    2. 來自浙江 回復