當程式設計師開始兼任產品

當程式設計師開始兼任產品

產品負責人在內部群發消息說找人

最後更新 2022/6/23 下午10:14
长空X
預計閱讀 10 分鐘
分類
分享
標籤
職場生活

起因

5 月 31 日,我們公司的產品負責人在內部群發訊息說要徵人,經過一番友好的協商後達成共識,我開始兼任一部分產品工作,轉職了又沒完全轉。記錄一篇感想給迷惘的朋友也當個日誌。嫌長的可以直接拉到最後看重點~

回顧職業發展

0. 盲目摸索

大學的前一年做了許多非技術的事,然後打算選擇一門高級程式語言作為主力發展,在 Java 和 C# 之間調研許久後選擇了 C#。選擇 C# 的原因僅僅是因為它有比較好的中文支援(微軟文件、VS、IntelliSense 也是中文),而且 C# 相比 Java,在程式碼上更能描述要做的事,而 Java 給我的感覺就是程式碼量不小(比如 Java 8 中想把日期資料轉成字串,熟悉的朋友都知道多囉唆)。

無論如何,在當時外部環境看來選擇 Java 都是更好的選擇,但我有種強烈的第六感讓我有點排斥 Java,最後選擇更舒服的 C#。我相信「只有做一件事讓自己舒服時,才能持續付出投入下去」。

隨之而來就是資源問題——學校裡沒有 C# 相關的課程,上課全是 Java!老師會 C# 的也只有寥寥幾人。現在回顧,我也不知道怎麼一個人堅持下來的,長達半年的學習讓我連一個小程式也做不出來……但這段時間的盲目摸索,探索了一些非程式語法的東西(比如對物件導向的認知),後來網上報名了一個喜科堂的線上培訓才開始真正入門。

1. 大學專案組

喜科堂的 C# 培訓課前面幾乎都是打基礎,除了語法還包括一些工程經驗(比如要做一件事,如何分析,從哪裡下手分析思考),到畢業前 2 年時,已經能獨立做出一個「學員管理系統」。恰好此時從朋友處打聽到學校有個專案組可以不用上課,這對我來說是一個接觸真正開發的機會……但他們開發已經滿了,測試缺人,在惡補了一個暑假的測試知識和 Selenium 後,我面試通過進入「測試組」。

測試的工作相對清閒,但對我來說是個難得「從另一個角度看待專案」的機會,而且還有時間讓我繼續打磨自己。比較驕傲的事有一個:當時在「測試時發現一個 Bug」,我在瀏覽器上排查後發現是正則表達式寫錯,然後我把「正確的寫好發給開發」,讓她直接丟到程式碼中。老油條可能知道這是「測試開發」的事,既懂測試也懂開發。

在此期間還去了一次「VS 20 週年聚會」,當時有個老哥公司徵人,我去面試沒過,原因是我不會 Web。回來之後開始從 C/S 向 B/S 轉,2 個月內開了一個個人部落格,包括前台和管理後台還丟到公有雲上,自己申請網域名稱並備案,使用 HTTPS 和 CDN 和一些其他技術。這個時候從開發到部署這套流程已經開始打通了。

這個階段的關鍵字是:「不要把自己局限在開發」。因為種種經歷,我在學校時沒有真正參與過專案開發,意外接觸到各種非技術的東西了。

2. 在新蛋中國實習

後來無心插柳地來到新蛋開始實習,此時正好有 2 個大事件:.NET Core 2.0 發布和「微服務」。 我在「那台奔騰 4 的 CPU 的實習機」上面,被卡到用記事本+命令列寫程式碼……也因為是新框架,我們實習小組是我自己搭建的簡單三層架構,而且還把基本的 .NET Core Web 框架搞懂(中介軟體、HTTP 管道)。然後去到 MKPL 組,當時組裡正好在做 .NET Core 方面的探索,我在裡面就做 Core 的 SDK 和專案框架、單元測試研究、部署等雜活。

這個階段的關鍵字是:「開源」。

後來離開新蛋重新面試時,面試官問我 .NET Framework 和 .NET Core 最大的區別是什麼。我的回答就是:Framework 時代底層函式庫是黑盒子,而 Core 時代是思想從封閉轉向開放。以前的開發資源(像是 SDK 庫)都是微軟提供,非微軟的要思考許久是否能夠採用。而 Core 時代後更相信的是社群,並且也積極參與進去。

說回在新蛋的經歷,另一個就是夯實「基礎能力」,情況是這樣的:

  1. 新蛋是個 20 年以上的公司,我們組的專案都有 10 年了……這其中不知道有多少坑。
  2. MKPL 負責的賣家平台,要對接其他組(比如訂單、退換貨),對賣家來說其他組的問題也會在我們負責的專案中浮現。
  3. 新蛋整體氛圍是:需要成員主動去推動專案進程而不是等主管安排。比如讓我負責這個專案的某個介面,那就需要自己去和其他組協商具體欄位、互動邏輯、測試邏輯梳理、寫開發文件……總之我就是這個介面的直接負責人,而不是我的 PM。

在這期間,不僅提高了自己的基本技術知識,還有更多的是職業基礎素質的沉澱。比如我從實習時的 Bug 排名前幾,到後面跌落到 7、8 位,而開發工作卻是比實習多多了。

這個階段的關鍵字是:「職業基礎素質」。新蛋麻雀雖小但五臟俱全,大的有工作管理流程到網路架構,小的就是員工基本素質,相比其他公司會全面許多。這讓我後面去到比它小的公司時,顯得游刃有餘。

3. 短命的 2 份工作

19 年離開新蛋,原因是不到 20 個人的組裡擺了 2 個架構師級別的人,職業發展空間太小了,連續 2 家公司都只待了 3、4 個月。

第 1 家公司:產品出發點很好,老闆也有錢。但老闆不懂軟體!導致每次都到專案末期了又開始大改……他不知道這種改動是什麼級別的,最後埋怨軟體部門 1 年多沒有任何產出……結果就是我離職後 2 個月內,之前的老人全部走光,和軟體相關的人基本上都走了……我提離職的當天才知道我的部門經理、我們的產品經理也要離職……????

第 2 家公司:是做政府專案的,基本上是把一套程式碼改改賣給多個地區的部門……只講究團隊建設,只講究客戶要用專案的時候,能正常工作就行……至於工作幾天就當機……似乎沒人會關心……我待了一段時間後感覺這裡更多是需要老油條而不是我這樣的人……

這個階段的關鍵字是:「被新蛋好氛圍保護得太好了」。第 1 家公司我做的主要是協調工作??團隊內部的協調、部門之間的協調。2、3 個月程式碼沒寫多少,人際的事倒是不少……第 2 家公司完全是落到大坑裡了。但收穫也不是沒有:讓我在技術以外,工作交際上面獲得了非常多的經驗。

4. 高級打雜

然後就來到了現在這家公司。長話短說就是我負責了:新技術推廣、專案框架搭建、公用程式碼庫維護、內部伺服器維護、和產品部溝通、偶爾協調下同事之間的工作……

技術上幾乎是:35% 的 C# 程式碼,55% 的 JS 程式碼,10% 的 Shell 腳本或其他設定,而在這家公司之前,我是打死不寫 JS 的人…… 在做部門的 CI/CD 的時候,我們的映像檔名稱和標籤要符合管理要求……我用 C# 寫了一個小工具放在 CI/CD 管線裡了。而業界搞 CI/CD 幾乎只有 Shell 腳本和 YAML 設定。

轉折點也就是在這裡……我們的測試只懂手動點擊,而開發只管開發……產品不懂技術,我在這裡經常當個中轉點。在 2、3 階段中的經歷讓我能知道測試腦子裡想的什麼……產品腦子裡想的什麼……然後把這些東西轉給開發或轉回去。公司內部人員的關係是非常好的,但不同職業的人常年養成的思維習慣是不一樣的,當工作忙起來的時候往往會忘記「轉成對方能聽懂的話」。畢竟現在我們都是在做一套產品,產品的收入高了我们才能更好地存活(福利和獎金),也是這個情況讓我能順利去兼任產品,而其他人是轉職。

這個階段的關鍵字是:「成功不是偶然的」。其實我想兼任產品是想給自己留個後路,而能談成困難的兼任(兼任在公司中的管理成本比較高,公司有 800 多號人了),也是前面的累積。

5. 總結

寫文章的時候回顧了自己的發展經歷,主要是沒有浪費精力。可能做了效率低的事(比如大學時選 C#,半年都沒什麼成果),而經歷的累積在另一個時間點卻發揮了作用。陰錯陽差的經歷讓我懂點網路、懂點軟體開發和軟體工程、懂點軟體專案從出發到結束,各方面都有點累積,然後主力——後端開發也沒有落下。

未來

據說 35 歲時間點是把大刀……我也「迷惘,但不焦慮」……不行了還可以轉職去產品。現在的醫藥軟體行業也是比較吃行業經驗(這也是產品部許久沒有招到人需要內部招聘),未來或許還有其他的機會。這樣一步步走下去,雖然效率不如其他人,但總不至於開倒車或崩盤。另一方面,也可以藉助「產品經驗」來突破目前的「中級開發瓶頸」,向我心中的「高級」前行。

給你的建議

每個人的訴求和情況不一樣,可以多方面的去投入,「不要死磕一點」,除了搞 IT,我週末還在跑團,這又是另一個領域的東西了。

  1. 如果目前的工作或現狀不能讓你滿意。不要急著跳,沉下來想想自己到底想要什麼,然後做好未來 3-5 年的規劃並且不要輕易放棄。哪怕這個規劃讓你失敗了,但失敗也是經驗不是?日子還長著呢。
  2. 如果目前的工作或現狀還可以。不要覺得太安穩,沒有絕對的安穩。同樣可以為自己的規劃做一些準備或沉澱,以備不測。
  3. 做對而耗時的事。

針對 3: 比如開源投入這件事……許多人開始會堅持,後來慢慢覺得沒有收益就放棄。但如果你喜歡技術並願意為之分享,在分享的那一刻你會感覺到開心,這已經讓你立於不敗之地了。如果能有額外收穫,那叫「充話費送的」。這樣即便沒有外部投入,你自己也會有動力持續投入。喜歡它,為它付出。否則你就會「成為生活的奴隸」。

繼續探索

延伸閱讀

更多文章
同分類 2025/8/13

推薦一款高效能狀態機管理解決方案

在實際軟體開發中,尤其是工業軟體,每一款設備都有複雜的狀態以及狀態之間的切換的功能需求,在這種情況下,如何管理狀態以及狀態之間切換,和對應狀態下的功能控制,成為非常重要的一個問題。

繼續閱讀