大家好,我是卡米哥,LINE 官方認證的 API 專家,LINE API Expert。目前在維護基於 Rails 的 LINE Bot 框架 Kamigo。
身為一個軟體開發者,我一直以來都想知道我的價值到底在那裡。在我長期的觀察和思考,終於有了一個初步的答案,若站在老闆的角度來看,我的價值其實就是我寫下來的程式碼總共幫老闆賺了多少錢。
軟體開發者的價值 = 用程式幫老闆賺了多少錢
因為老闆僱用你,就是希望你可以幫他打造一台自動賺錢機器,然後靠機器運轉來達成自動賺錢。若要深入探討的話,我想先談談什麼是價值,以及什麼是程式語言,從思考一行程式的價值開始,到思考軟體開發者的價值。
什麼是價值
價值的定義有非常多種,為了說明概念,我選擇較單純的一種,以貨幣作為所有價值的單位,藉此觀察價值是從哪裡生成。大家若對價值有不同的想法,可以自行替換,不影響整個邏輯。
以雞排店為例,當店員生產出一個 60 元的雞排並且販售給顧客,顧客願意為了吃雞排而付 60 元,就是雞排的價值。顧客願意花 60 元買雞排,表示吃雞排所獲得的滿足感大於 60 元,如果吃雞排的滿足感小元 60 元,顧客就會覺得這個雞排不值 60 元,寧願不吃,那麼交易就不會成立了。
店員的生產並銷售一個雞排所生成的價值:
價值 = 收入 — 生產支出 — 銷售支出 — 其他支出
再次強調,在這裡為了說明概念,我選擇較單純的模型來說明,生成的價值就是淨利,而淨利就是收入 — 成本,所有的價值都以貨幣為單位做計算,包含吃雞排的滿足感也都以貨幣為單位。
以上述公式來說,若想要提升價值,則有以下可能:
- 增加收入
- 減少生產支出
- 減少銷售支出
- 減少其他支出
若想增加收入,就需要提升雞排的品質,只有提高顧客吃雞排時獲得的滿足感,才能使顧客願意付更高的金額;若想減少生產支出,就需要在品質不變的狀況下,對雞排的生產流程進行最佳化,減少不必要的步驟,降低生產所需的資源(如工時、原料、水電、空間)消耗;銷售支出是為了賣出商品所需支付的所有成本,主要是交易成本和獲客成本,例如結帳流程、金流以及物流支出、行銷和廣告費用等;而其他支出項目的存在僅為了消除公式的不完整性,不是本篇文章的重點。
這個簡單的模型定義了做什麼事能產生多少價值,大家可以把注意力放在價值是什麼時候產生的這點上,當你知道某些事情只要一直做就能產生價值,那麼只要把這件事交給電腦做,是不是就打造了一台自動跳錢機了呢?
財富密碼:重複做賺錢的事,一直賺錢一直爽
價值是動態的,價值當隔壁開了一間新的雞排店,炸出來的雞排比我們的皮脆肉嫩又多汁,價格還比我們便宜,那我們的雞排就賣不出去,所有生產雞排的設備,其價值就趨近於回收價格,這就好像在沙漠中水的價值會上升,是一樣的道理。
環境會影響供給和需求,供給和需求影響商品或服務的價值,當環境隨著時間變遷,價值也就隨之變動
什麼是程式語言
程式語言,是讓我們可以跟電腦溝通的語言,也是人類目前叫電腦做事情的方法。如果要說一個比喻,那麼軟體開發者寫程式語言,就相當於在教電腦學會工作;而在電腦上執行程式,就相當於電腦正在發揮其所學,努力工作!
程式語言就是教電腦學會工作的語言
若有一件事原本是人類做,當這件事改為電腦去做時,我們會稱之為「自動化」。為了使電腦能順利工作,在「自動化」之前還得要先做「數位化」,讓輸入的資料以電腦能夠讀取的形式存在,這算是為了使電腦工作所需支付的前期成本。
財富密碼:把賺錢「自動化」,自動跳錢就更爽
電腦做事的效率比人類快,品質又能夠達到一定的水準,且能夠長期穩定、24 小時不間斷的工作,若想要在短時間內完成更多的工作量,在目前的雲端基礎之上,我們甚至還可以透過臨時租用大量機器來完成臨時的大量工作,這就是程式的價值所在。
用超低薪雇用不會抱怨偷懶的打工仔,超棒!
程式的價值
在我之前的工作經歷當中,大部分時間是在做新創公司的案子,而新創公司的客戶數通常趨近於零,我曾經開發並且上線一個新的網站,卻始終沒有用戶真的去使用,經營了一兩年,結果測試環境上的資料還比正式環境上的還多,在這種情況下,即便程式的效能再好,沒人來使用的網站所產生的價值其實是趨近於零。
沒有人在用的程式,產值是零
當時是案主付錢委託我們開發網站,所以我們有收到錢,只是網站並沒有替案主賺到錢。我們採用的技術很好,自動測試也寫的很完整,卻做出了一個垃圾,而在此同時,我接了另一個案子的長期維護,這個專案裡程式的架構很亂,欠了一堆技術債,而且都沒寫測試,但是客戶人數足夠而且一直有下訂單,所以反而這個案子就有在賺錢。
即便是充滿技術債的程式也能產生價值
於是我就悟出了這個道理,一行程式碼的價值,就是從程式被寫下,到程式被修改或刪除前,總共被執行的次數 * 執行一次所生成的平均價值。
程式的價值 = 執行次數 * 執行一次生成的平均價值
若程式碼有 Bug,則執行的價值可能會變成負的,例如自動刪庫,這種事情發生後就是要跑路了XD
軟體開發者的價值
一位軟體開發者所寫下的所有程式,被執行的次數 * 平均價值,就是這位軟體開發者帶來的總產值。因此我們可以知道,寫出滿足規格、含測試、良好模組化、良好文件、可維護的程式碼,可以使一行程式碼在專案內存活的更長久,存活越久的程式,理論上就能被執行越多次,就能使程式的價值最大化。當然,另一個想法是寫出滿足規格但無法維護的程式,那麼至少在規格改變之前,沒人敢動這段程式 XD
軟體開發者透過技術力來決定程式的壽命
軟體開發者的價值 = 所有程式價值的加總
你可以透過提升開發速度,或者提升程式碼品質來提升自己的價值,提升開發速度的方法有很多,除了讓自己熟練開發流程,熟悉你的開發環境,例如文字編輯器的各種快速鍵,讓你寫程式看起來就像是 speed run 玩家之外,你也可以大量使用別人已經寫好的程式,例如使用各種方便開放原始碼的套件,不論是免費或者付費的都很有幫助。你甚至可以叫電腦幫你寫程式,例如自動完成、程式碼產生器以及 lint 之類的靜態檢查工具。
軟體開發者透過提升開發速度和品質來提升價值
若想要最大化軟體開發者的價值,還需要慎選環境,因為通常是你的主管或者老闆告訴你要寫什麼程式,你可能無法對規格有任何意見,你可能無法決定這個程式將會被執行多少次,以及每次執行所產生的價值。這通常與職位定位、產業別以及公司規模有關,運氣好的話可能有與主管溝通的機會。雖然你在一家公司內可能不能決定要寫什麼程式,但你可以選擇要去哪一家公司寫程式,去能被執行最多次,且單次執行所生成價值最高的專案寫程式,則可以最大化自己的價值。
軟體開發者通常透過選擇環境來決定程式的執行頻率以及單次執行生成的價值
善於溝通的軟體開發者可以改變環境
而想要最小化軟體開發者的價值,則只需要寫出一堆含有 Bug 的程式,再出幾個大包讓公司賠錢即可,從刪庫到跑路,賠錢總是比賺錢簡單許多。
比起零產值的軟體開發者
更慘的是負產值的軟體開發者
軟體開發者是主管,管理電腦而不是人類,軟體開發者透過程式語言教導底下的電腦們如何協同工作。電腦是最笨最乖最聽話的員工,你叫電腦做什麼,電腦就照做,只要你講的足夠清楚,電腦就能把事情做好。
總結
身為一個軟體開發者,除了努力學習寫出良好的程式碼之外,選擇到一個對自己有利的環境下發展,或設法改變現有的環境,是非常重要的功課,不僅僅只是考慮如何使當下的價值最大化,甚至應考慮最大化未來的價值。
努力很重要,但慎擇環境比努力更重要
大家如果喜歡本次的分享,請按讚拍手,謝謝。