我們在為了什麼程式設計
一:前言
這兩天去北京,在朋友家住了一晚,兩人徹夜長談,聊了很多關於技術和產品的觀點。
朋友給我推薦了一本《啟示錄》,開篇是一則小故事:作者在惠普工作之時,研發團隊加班加點,充滿激情的工作了一整年,最後卻發現做出來的產品無人問津,失落之餘,作者也進行了反思,自己廢了這麼多力氣開發的產品到底有沒有價值。
故事中發生的這種事情,我相信大多數研發人員都遇到過。就說我自己吧,無論是大學時代自己瞎鼓搗,還是工作後參與的商業專案,除了那些本身已經發展了很多年的產品,不少從零開始的專案都還沒有跨越到一的那步,便無疾而終了。雖然說從這些專案中我個人也學到了不少,技術上或者產品思維上,多多少少有些長進,但是除了這些,我一直有點失落,因為這些專案沒有給我帶來成就感。我不禁有了《啟示錄》作者同意的感受,我的工作到底有沒有意義,我又是在為了什麼而程式設計。
二:我做的產品有沒有意義
對於很多非技術驅動的產品來說,工程師的定位很簡單,能按時保質的完成需求開發就夠了,不少工程師可能自己也不太關心產品,或者說不會太關心產品的大局,畢竟自己的本職工作就是開發。作為一個工程師,可能更多的時間會花在關注技術領域的動態以及學習新知識上。當然,這是我們作為一個工程師的本職工作,一個不愛學習技術的人肯定不是一個稱職的工程師。
很多時候我們可能覺得產品確實和我們沒什麼太大關係,畢竟公司還有產品經理這個職位的存在。但不少時候產品經理的需求是:
2.0 把這個按鈕挪個位置
這些隔靴搔癢的需求到底有什麼意義呢?
你個碼農知道什麼,這是使用者體驗!
我相信每個有技術追求的工程師天天熬夜肯定不是為了做上面這些需求的,但是我們大多數還是按時進行了需求迭代。
對於一個大公司,試錯的代價或許沒那麼大,但是對於很多創業公司,任何資源都不應該被浪費。當我們完成了一個毫無意義的需求,不僅僅是我們自己時間的浪費,公司也付出了時間成本和人力成本。
我們寫下的程式碼,不應該僅僅是公司支付的薪水的等價物。如果我們只是努力的完成技術工作,寫下效能更好的程式碼,而不去思考技術背後帶來的價值,那我們永遠只是為他人作嫁衣裳的工具。
三:我做的技術專案有沒有意義
之前做客戶端的時候,我有段時間很喜歡研究外掛化,熱修復,雙開這類技術。後來某天我突然想到,研究這些技術的意義有多大?
單從專案出發的話,還是有意義的,比如熱修復可以快速修復線上問題,外掛化可以動態載入可執行檔案。
但是我們可以把視野再稍微擴大點,人類發明計算機是為了讓世界更加美好,程式設計本應該是所有程式設計師利用自己的聰明才智,共同解決全世界所遇到的問題,比如無人駕駛。而外掛化繞過系統檢查的奇技淫巧,更像是APP開發者與系統開發者之間的比試,魔高一尺道高一丈,到底給社會帶來了多大價值呢?
四:我們該為了什麼程式設計
人民幣?KPI ?晉升?
要有技術理想,也不能沒有一日三餐。人民幣說起來庸俗,但是花起來很爽。
可是我們作為浩瀚宇宙的一份子,也應該多思考思考我們給世界創造了什麼價值。
很多人看到這要說了,產品也不是我來決策,我能怎麼辦。
那麼作為一個工程師,你至少還可以從技術上給世界帶來價值。
我認為一個優秀的工程師需要具備兩方面能力。
一是技術敏感度,能善於發現技術上的痛點。
二是技術儲備,能解決技術上的痛點。
三是樂於分享。
舉個例子,Docker出現之前,如果你能發現傳統部署方式存在的問題,並且能想到用namespace解決,並開源給全世界使用,那麼你當然是個優秀的工程師,而這也是一件非常了不起,並且有意義的事。
五:再聊點理想
有句話叫做,孩子才說對錯,成年人只看利益。
這句話自認為很城府,其實太沒格局。
無論是工程師,還是產品運營,我們還是應該把自己格局再提升點,少想想拉幫結派,辦公室政治,多想想國家九年義務教育的意義,多想想我們能給這個世界能帶來點什麼。