2022年11月2日 星期三

『軟體開發人員職涯發展手冊』開發副業專案 (side project)

終於來到這本書的尾聲;盡力完成一件事真的會變成一種「習慣」,也就是作者所說的「生活態度」。

這讓我想到以前看過的日本漫畫「我要高飛 (體操高手)」,裡面有提到所謂的「王牌」,並不是每次都能順利落地成功,而是盡全力「使完成」。

所謂的「使完成」就是想盡辦法做完整的動作,就算有瑕疵但最後還是能完成動作。

作者一直提到要扮演專案終結者,其實就是告訴我們透過這個方式,來培養「使完成」的習慣,進而形成自己的生活態度。

我自己也從做「副業專案」的過程中受益良多,本來不自律且容易幫自己找藉口放棄的壞習慣,在大學進行實務專題時,被磨礪了一番。

應該說人會變成今天的模樣,都是有種種的事件發生串連而成,而這當中的種種「選擇」造就今日的自己。

記得第一個完成的副業專案是實驗室的碩班學長出的一個小題目,我用當時熟悉的 VB 6.0 撰寫了有圖形介面的「彈力發射模擬系統」,其實這沒甚麼特殊意義,當時單純覺得好玩,順便讓自己熟悉程式語言跟 GUI 的設計。

但就是這個小專案,讓我從原先的軌道跳到另外一邊去,負責實驗室的教授看到我有程式設計的能力後,就讓我跟著他學習「機器視覺」的專案開發技術,這真是個巧合,讓人預料不到。

後來就陸續開發了很多副業專案及全國性的競賽,也親身經歷了這些專案「知識變現」的過程,那時候對於程式設計的熱情難以言喻。

這些過程帶給我的,並不是說技術變得高深莫測,現在回頭看當時的自己還只是個沒有太多專業知識的程式菜鳥,重點在於那個時候都「堅持把每個專案完成」,久而久之變成一種態度,也惠及我後續唸碩士班、博士班及創業的過程。

當我在演算法上無法突破想放棄、說好用英文撰寫碩論的目標快要無法達成、出國唸書語言檢定卡關、博士論文換題目覺得自己無法畢業、創業中遇到的種種困難與抉擇,以及幾年前決定在職去唸 MBA等,每一個事件都像是一個關卡在考驗著我的判斷與行動。

而在這些過程中,都還是有持續不間斷的副業專案,彷彿在告訴我「要堅持下去並想辦法完成它」。

現在講的很輕鬆,但大腦馬上聯想到會列出來的事件,都是當時我真的找了一堆藉口想要放棄的重大關卡,「我是真的想放棄」,但又有個信念支持我走下去。

因此非常認同作者所說副業專案的重要性,主要還是透過專案開發的過程,來塑造自身的生活態度以及相信自己能完成的信念,我也很喜歡「使完成」這個說法。

至於做一件事多目的,這部份我有相關經驗,不過遠不及作者所提的那麼廣泛;大致上還是一魚多吃,做能兼顧學術發表及技術授權或對未來創業有幫助的工作,這部份自己要事先規劃好並確認最終目標,過程中會有許多因素干擾,而這也會影響到最終目標的完成度。

我現在還是持續開發副業專案,有時候動手做反而能讓腦袋越來越靈活,但不得不說「成年人的時間管理」真的好難阿!


本章節重點摘要如下:

夢想是你追求的某件事,而目標是你要做的某件事

作者認為他先前 15 年的工作資歷對他的職涯和人生帶來的影響,還不如他當初完成的那個小型「副業專案 (side project)」來的大。

軟體開發人員提升職涯的最佳方法,毫無例外都是透過副業專案;一個小小的 Android 應用程式對作者的人生和職涯影響深遠。

一項為期六個月的副業專案,能讓你快速累積經驗,如果想從平常朝九晚五的工作中獲得這些經驗,可能要花上好幾年的時間。

為了實現目標,你要有具體的行動。

強力建議從非常小的專案開始,從一個你知道自己能輕鬆完成的小型副業專案開始,甚至是那種只花你數週或最多一個月時間的某件事。

第一次做副業專案時,最好先模仿某個已經存在的成品

作者擁護「多目的」,不過,多工就很糟,而且很難實現,最終只會降低你整體的生產力;多目的代表開發一個副業專案,但伴隨一個以上的目的。

作者舉例他這本書的「寫書副業」,每天花一小時的時間寫作,背負了以下幾項目的:

1. 維持每天寫一千字的習慣。

2. 產出一本書。

3. 銷售書籍,帶來額外收入。

4. 創造部落格內容。

5. 增加部落格註冊人數。


他還能夠過以下方法,進一步實現多目的:

1. 銷售本書的電子版。

2. 銷售本書的紙本版。

3. 銷售本書的有聲版。

4. 製作影片,將以上版本包裝成豪華加值版銷售。

5. 利用章節內容,產出 YouTube 影片。
 

想想看如何讓你的副業專案兼具多個目的:

1. 學習新的程式語言。

2. 學習新的框架。

3. 練習或精通現有的技能。

4. 開發應用程式,解決你遇到的問題。

5. 開發應用程式,解決他人遇到的問題。

6. 創造額外的收入。

7. 作為面試資料。

8. 作為部落格內容。

9. 將影片內容用於應用程式開發上。

10. 將專案用於指導他人。

11. 利用專案獲得他人的指導。

12. 提高自己的紀律。

13. 結交新朋友。

14. 了解你感興趣的產業。

15. 完成學院或大學作業。


動手做任何事前,重點是先規劃你要「做什麼」以及定義「最終目標」;請注意三項基本要素:

1. 目標或完成標準。

2. 完成期限。

3. 一套系統或設定時程表以推動專案。


良好的生產力系統是專案成功的關鍵,請確實做到以下幾點:

1. 清楚定義你每天或每週能投入多少時間在專案開發上。

2. 定義你何時要投入這段時間 (寫在行事曆上)。

3. 定義一套流程,用以追蹤你的「工作進度」和需要完成的「工作項目」。

堅持才能真正地完成專案,並從中獲益。這代表你要為副業專案的開發工作建立時程表,不論發生什麼事,你都會堅持時程表的進度。

所有的成功都來自於微小事物的累積與堅持

我們都曾經一頭熱地投入某些事,卻沒有走到最後;你要下定決心,不管是那個專案,即使你再討厭,一旦你起頭了,就一定要完成它。

除非真的打算完成一件事,否則就不會開始投入,這是一種「生活態度」。

推薦你找一些方法,從所有副業專案裡賺取收入,即使收入微薄也沒關係。

你不可能從副業專案裡賺第一桶金;但隨著時間累積,或許能從眾多副業專案中獲得大量收入。

重點是專案前期就要思考如何從中獲益。

所有的軟體開發人員手上都應該要有一些正在進行的副業專案;從小型專案做起,承諾時程然後完成。

「知道要做什麼」和「知道結果是什麼」兩者之間存在很大的差異。

我們都不知道最後的結果會如何,所以必須帶著我們所擁有的知識,盡全力去應用這些知識,然後「相信過程」;堅持不放棄,終究會有成功的一天。

2022年10月30日 星期日

『軟體開發人員職涯發展手冊』工作穩定性與保障性

人都要去挑戰「不確定性」,並想辦法適應它。

截至目前為止,我一直都在挑戰自己沒有把握的事,因為過程中會很刺激,完成後也會很有「成就感」。

當然,這種持續挑戰的態度,當年紀越來越大並組建家庭後,確實有些鬆動,從另外一個角度來看「是我自己懈怠了」。

另外,分享一個好辦法,我一路走來履試不爽,當你遇到一個抉擇時,拿去問你的家人、伴侶或親朋好友,統計一下他們的說法或建議,篩選出最多人講的那個決定,然後做相反的選擇。

以我的經驗,親朋好友通常都會建議看似最穩妥的那條路,當然他們是好意,但跟你的「未來發展」或是「自我成長」並非正相關。

走人少的路,創造「差異性」並堅持下去,反而容易走出屬於自己的方向

在軟體開發這行業,「累積知識」跟「盡情分享知識」非常重要,不過我這麼多年來只是盡力的在累積專業知識,盡情分享知識這點做的不好,只有在學校授課時有整理部份心得出來,而且有些部份還礙於公司商業上的考量,無法分享。

今後,要在商業考量外,盡量搭配實體授課及部落格分享專業知識,同時記錄自己的「學習歷程」,期望也能幫助到需要的人。

講到「工作自動化」這件事,先前有個同學講說他把工作的流程都自動化,之後害怕自己被取代掉會失業。

我想,當他看到這篇時,應該感到心安,這是讓自己更有「價值」的行為;如果他能累積更多專業知識,並分享及幫忙其他同事,整體的評價應該會更高才對。

我有另外一個同學「積極擁抱不確定性」,總覺得他一年的經歷大概是我五年的變化,但他就是可以在充滿不確定性的環境中處之泰然,或許這樣才會有更好的生活品質吧?

最後,問大家一句,有存夠三個月到六個月的生活費嗎?

我跟作者看法一致,都認為最好是存到一年以上的生活費,會讓自己在壓力較小的情況下生活與工作,你們覺得呢?


本章節重點摘要如下:

沒有一項工作具有保障性! 你要逐漸適應「不確定性」。

不要期望自己找到一份工作後,就在一家公司裡待上二十到三十年的時間,一直工作到你退休或拿到退休金為止。

不要再嘗試尋找穩定的工作,要讓自己的能力更健全,具有更高的適應力。

將自己的知識藏私,無法保障你的工作。 

許多軟體開發人員努力想保住自己的工作時,最糟糕的行為就是將自己的知識藏私。

不論你認為自己有多重要,或你知道什麼「機密」,這些都沒有意義,沒有你公司還是會繼續運作,世界還是會繼續運轉。

如果你能刻意降低自己存在的必要性,反而能在工作上獲得最大的保障性;公司最有價值的員工是讓自己的「工作自動化」,並培訓其他員工來做自己工作的人

要成為有價值的人,如果你能幫助其他軟體開發人員完成更多工作,就不必手動處理它們,這就會變成你的價值。

比起其他單打獨鬥的員工,你利用槓桿的做法更有效率

以工作能力取代工作穩定性,透過累積知識與盡情分享知識,兩者雙管齊下,讓你成為公司內更有價值的員工。

與其費盡心思處理公司內的政治,不如準備好自己的能力,這樣就不必擔心工作保障性或穩定性。

提升工作能力,讓自己隨時都能輕鬆找到自己想要的工作

如果想永遠不必再擔心工作保障性或穩定性,最好的做法就是創造自己的安全網,手上隨時要有三個月到六個月的生活費,以備不時之需。

與其逃避,不如擁抱不確定性

你究竟能在不確定性多高的環境下處之泰然,會直接和你的生活品質成正比

當你不再試圖掌控你無法控制的事物,欣然接受事情發生的結果,人生就會變得更加愉快。

『軟體開發人員職涯發展手冊』創業與職涯規劃

關於創業的話題,先前已經寫了很多篇關於自己的見解與讀書摘要,這邊同樣是強調「先自律才有自由

至於作者所定義的自由工作者與程式企業家,其實就是常見的「專案公司」與「產品公司」的差別,我認為在「公司賺錢有這麼難嗎? 一書中有很棒的案例詮釋,先前也已經做過摘要,可以回頭閱讀來思考跟這本書的相關性。

軟體開發人員要轉管理職,確實在心中有道坎要跨過去,我自己也喜歡寫程式開發軟體來解決問題,因為這是在做「創造」行為。

跟其他行業要經過軟硬體與工程人員的跨界整合,才能產生產品或服務不同,做軟體開發可以很快的看到自己的成果,或是自行創造一個小產品或服務,這種獨自創造的「成就感」很難被取代。

以我自己來說,先前轉管理職後也是極度不習慣,沒有寫程式的日子,總覺得沒有產生任何貢獻,甚至開始懷疑自己的「價值」到底在哪? 

最近重拾寫程式與鑽研新技術的習慣後,才豁然開朗,原來我心中空空蕩蕩的那一塊是缺了這個東西。

創業或是做副業前,可以學習作者的做法,先建立自己的「目標聽眾」,或許能為職涯增添更多的可能性。

不管是不是自行創業又或是在大公司任職,「名聲」總是會在關鍵時刻,讓人更上一層樓。

如果有軟體開發的技術,在現代的社會中,真的是最容易創業的族群之一,但也要經過許多步驟來讓「技術變現」。

作者提到的「集客式行銷,讓客戶自己來找你」,都是可操作的方式,至於能否行得通還是要靠「實踐」來驗證。


本章節重點摘要如下:

想要「自由」,背後是殘酷的現實。

作者前兩次努力創業時,不知道如何與「自由」共處,過多的自由反而壓垮了他;大部份時間都拿去玩線上撲克或魔戒 Online

懂得「專注」及「自律」,要是不想聽從別人訂下的規則,就必須為自己立下規則並且遵守。

自由工作者的定義:沒有正式受雇於任何人,而是他人來租用你的工作時間。

拓展客戶要投入大量的行銷費用,如果能利用所謂的「集客式行銷(inbound marketing)」,如塑造個人名聲、培養專長和打造人氣部落格,讓客戶自己來找你。

強力建議在剛開始接案時,不要滿腦子想著要賺錢。剛開始願意收較低的費用,金錢才會隨之而來。

創業很簡單,難的是創立「賺錢的公司」;軟體開發人員站在極佳的發展位置,可以成為自由工作者,也能自己開發應用程式或服務來銷售。

最有利可圖的是「軟體」

許多軟體開發人員創業時,浪費大量的時間、金錢和努力在沒有意義的事情上。

先不要離職創業,「壓力會壓垮一個人」,當你背負燒錢的壓力又要做以前從來沒做過的事,很可能無法真正完成任何工作。

請先一邊繼續做現在的全職工作,一邊把將來要開創的事業「當副業經營」。

創業前,先建立「目標聽眾」;在你開發產品、思考收費模式或尋找顧客之前就要進行。

要是不靠關係,很難讓任何人跟你買東西,我的目標聽眾相信我,因為我已經跟他們打好關係。

建立目標聽眾,可以帶來巨大的優勢,幾乎能保證你會成功;你所要做的事就是,必須創造大量的「免費內容」。

當有了第一位目標聽眾,就等於擁有了一家公司,這家公司不依靠單一產品生存。

一名成功的企業家,一定也是成功的「銷售人員」

銷售會讓你面對人生最大的恐懼:被他人拒絕;想擅長銷售,行之有效的方法就只有實踐。

企業家的生活就像是坐雲霄飛車,雖然這條路很難走,但也希望讓你知道,成為企業家是多麼棒的一件事。

當你能掌控自己的人生,而且這一切都是由你親手打造,世界上很難有比這更好的感覺。

試著建立起一些有意義的事物,對他人的生活產生正面的影響。

軟體開發人員大致分為三大類:

1. 正職開發人員 (多數人都是),受雇於他人,有一份固定的工作而且領固定的薪水。

2. 自由工作者 (被雇用的傭兵),為自己獨立工作,不屬於任何特定公司。

3. 程式企業家 (同時兼具程式開發人員和企業家兩種身份),自由工作者是利用自身的軟體開發技能為其他人服務,但程式企業家是利用本身的能力創造出自己的「產品」或「服務」,並將產品或服務直接賣給客戶。

「玻璃天花板」對軟體開發人員來說非常現實,會限制你的升遷或是能獲得多少薪資,這無關乎你的能力有多好,重點是你的發展已經到頂。

自由工作者的玻璃天花板會更高一些,但由於自由工作者「還是要拿自己的時間來換金錢」,所以在收入上還是有現實的限制在。

企業家的收入完全沒有上限,但有可能根本「賺不到錢或是虧本」。
 
另一個選擇,加入大型公司,走上管理或技術階層的「升遷管道」。 

在中小型公司裡,人員要向上流動有現實的限制,軟體開發人員的薪資或升遷無法超越公司高層。

在微軟、蘋果、IBMGoogle 等大型公司,玻璃天花板的上限會高一點; 而這類大型公司會有兩種升遷管道:「技術職或「管理職」。

往「技術職」走,就要持續寫程式,直到你再也寫不動為止 (或是公司認為你寫不動);讓自己從資深開發人員爬起,然後是系統架構師、研究員及資深研究員。

選擇「管理職」,或許要先讓自己升遷為開發經理,再來是部門經理或專案經理,然後按照自己的努力升上高階管理層。

如果遇到「玻璃天花板」,就必須做出選擇,看是要追求技術還是管理階層;如果不是大公司,或許根本沒有技術階層的升遷管道,往管理職走可能是唯一的路,或是自己走人選擇離開公司。

作者舉例自己被拉進管理職務時,最大的問題一直都是他想繼續寫程式研究技術

多數軟體開發人員會進入這一行,都是因為他們喜歡解決技術問題,而不是為了賺錢。

所以真正該問自己的問題是,在你職業生涯剩餘的時間裡,你願意處理管理工作而不再寫程式嗎?

永遠都要不斷思考你「前進的方向」,讓自己能從容不迫地掌握自己的職涯發展。

不管你決定做甚麼,重點是做決策和規劃

2022年10月29日 星期六

『軟體開發人員職涯發展手冊』打造人氣部落格

打造一個屬於自己的部落格也是我一直在做的事,現在是先用最簡易的方式做記錄,之後會如作者所說的用「WordPress」架一個屬於自己的網站,那上面應該主要會以技術文章及財報分析為主,也就是說相對這邊再專業一些。

持續性是一直在努力的事,自從看了「原子習慣」一書後,現在更在乎如何創造會發展出好習慣的環境,每天持續地做,自然而然就變成反射性動作。

做摘要跟寫心得真的需要訓練,等過幾年後,或許回頭看就能感受到自己的進步吧,前提是要每天多少都要寫一些。

話說我每天寫這些摘要或心得文,倒是滿樂在其中的,感覺像是在整理自己的思路,跟自己對話一樣。

有些時候看到書的某些內容,會思考自己的哪些經驗可以相印證,而這個過程充滿樂趣,算是另類的興趣。

我並沒有像作者一樣,想打造所謂的人氣部落格,只是單純想著記錄著自己思考上的足跡。多年以後回想時能有所依循,看著自己有持續在進步的「成就感」,無價!


本章節重點摘要如下:

寫部落格是多數「軟體開發人員」的最佳選擇 (應一併考慮 YouTube),進入障礙低且效益極高。

如果定期更新部落格,而且持續寫文章,只要有人在網路上搜尋你的名字,幾乎保證一定會找到你的部落格。

任何人都能創立自己的部落格,而且五分鐘內就能對外開張。

請把部落格想成是你「個人專屬的廣告空間」只要每隔一段時間更新一次內容,平常甚麼事都不用做,就能一天 24 小時不間斷地為你宣傳。

提升溝通技巧,寫作是非常好的方法,寫作能教你以他人可以理解的方式,有條理地組織你的想法。

部落格也能幫助你「追蹤自己的職涯發展 (及思維)」,當想回顧過去解決過哪些特定問題,以及當時怎麼解決的,部落格能提供一些歷史文件與參考資料。

強力推薦用「WordPress」作為部落格平台,不要花太多的時間在開發部落格的技術,要花時間在真正地寫部落格文章上。

強力建議為新建的部落格註冊自訂的網域名稱

不要拖延,立刻採取行動,你的部落格應該能在幾個小時內啟用。

先讓你的部落格內容聚焦在「小主題 (內容至少要能寫出五十篇以上的文章)」上,這代表要問自己部落格內容和什麼有關,如何描述部落格,這就像是問你的「專業」或「利基點」是什麼。

在你下筆前,請確定你知道自己要寫什麼;要打敗拖延症,最棒的方法就是知道你當下應該要做什麼。

事前多做研究,開始寫作之前,先列出大綱。

持續就是力量,想成為一名成功的部落客,最重要的一點是「持續」;長遠來看,持續性能擊敗其他一切。

所謂的「紀律」,就是不管你喜不喜歡,你都應該去做;需要紀律,才能不斷地寫,而且持續的寫。

多數人失敗的原因,是沒有足夠的「耐心」持續等待結果。

部落格成功的關鍵是創造品質好的內容,吸引人們願意分享和連結。

部落格想獲得流量,最有意義的做法是「寫出高品質的文章」,但這通常要持續一段相當長的時間。

持續寫作,並享受寫完的樂趣,做就對了而且持續下去。

2022年10月27日 星期四

『軟體開發人員職涯發展手冊』通才與專才

不管是個人或許企業,都需要可以執行和追蹤的計畫,而不是瞎忙一場,最後也沒任何產出。

終生學習的概念跟作者永遠都要學習新事物的想法雷同,其實總歸就是要「自律」,才會帶來「自由」

我們在討論事情時總是說要考慮「長期價值」,但在做決定時總是先想到「短期利益」,這中間的平衡就要靠智慧來取捨。

每天寫點程式、看些書以及運動 30 分鐘以上,撿起寫作的能力盡量寫,拓展自己的知識範圍外,又時刻鍛鍊基礎技能,長久下來會讓人有全方位的轉變。

「選擇比努力更重要」,其實就是在說挑選專業時能否有獨到的眼光,並持之以恆的走下去。

競爭激烈的地方未必有容身之處,相對冷門的領域也不見得沒有發光發熱的機會。

如果想到要沈浸在某個方向數年或數十年之久才會成就專業,那就會明白當初的選擇有多重要;相信自己的選擇,並徹底的執行自己的計畫。


本章節重點摘要如下:

每個人都需要一個真正「可以執行和追蹤的計畫」。

閱讀其他軟體開發人員寫的部落格文章,能從中得到一些見解,知道現在程式設計社群裡有哪些新發展和重要的資訊。

閱讀技術方面相關的書籍時,「請努力挑選對你用處最大,或是具有長期價值的書」,類似軟體開發方法論、設計模式和架構方面相關的書,具有長期使用價值。

不管技術能力有多好、教育程度有多高,「永遠都要學習新事物」;擬定計畫,告訴自己下一步要學習甚麼,當你完成手上正在學習的事物,馬上就能往下一步學習。

在技術方面,不要學習你永遠不會用到的事物。

你手上應該一直都要進行某種副業。

程式寫的越多,你的程式能力就越不容易生鏽,每天都能投入一些時間「實際動手寫程式」。

想督促自己每天寫程式,讓自己手邊一直都在進行一些小專案,要確定這些專案的規模夠小,才能真正地完成這些專案。

作者做過最棒的決定之一,就是開始完成每個他負責的專案,變成「專案終結者」,這對他的職涯和人生造成很大的變化。

不管你認為目前的工作環境有多安定,重要的是不能讓自己太安逸;請積極制定計劃,「時刻更新自己的技術能力」。

幾乎所有的專才都可以說是通才,但沒有一位通才能說是專才。如果沒有先廣泛地了解該領域的一般知識,很難成為該領域裡厲害的專家。

真正要追求的是所謂的 「T 型知識」,對自身所處領域的基本知識有廣泛的了解,然後至少要「針對一項專業知識或技能進行深入的研究」。

如果你的技能確實符合公司所需,相較於通才他們更願意聘雇你;當企業說想找通才,內心真正想法是:「我們需要適應力強而且學習能力快的人」,他們想要的人要多才多藝,工作上又能彈性調度。

所有主流職業都越來越重視專業,包含會計師、律師、財務分析師和幾乎所有類型的工程師都必須「專業化」,才能「提高自身的工作效率」,因為知識領域已經過於龐大。

請挑選某項專業,然後努力追求,以此為中心打造個人品牌。

寧可挑一個範圍小一點的特定專業 (選擇利基市場),也不要選擇內容過於廣泛的主題。

建立軟體開發的一般知識,學習怎麼寫出好品質的程式碼,學習基本原理和技術。

在每次的演講中,都應該努力只傳達幾個重點,而且以一個大方向為中心架構演說內容,盡可能的簡化內容。

如果你不踏出第一步,你的人生永遠不會改變

2022年10月26日 星期三

『軟體開發人員職涯發展手冊』 塑造名聲與拓展人脈

作者說的沒錯! 其實不止軟體開發人員,據我觀察只要是工程師,內心都有點抵觸「行銷自己」的想法,認為有硬功夫才是王道。

包括我自己也是這種想法,因此在 MBA 的班上屬於邊緣人的狀態。

但我認為還是可以在無形中,讓自己做到打造個人品牌的效果又不抵觸內心的想法。只是一開始就要自建平台或是加入特定的社群,再來「發揮工程師喜歡解決問題的本質」,將自己怎麼解決特定問題的方式分享出來,嘉惠也遇到類似問題的人,為他人創造價值。

因此,只要心中持續想著「為他人創造價值」,加上有適當的管道,就能默默地為自己塑造良好的名聲,這也不會跟工程師特質有任何衝突,只是轉念而已。

我喜歡引用「原子習慣」的說法:「創造讓自己容易達成目的的環境,比壓抑自己的本性還更有機會成功。」


本章節的重點摘要如下:

在軟體開發人員的職涯裡,最重要的是「塑造個人的良好名聲」。

自我行銷、打造個人品牌和行銷本身都不是壞事。

技術能力 X 行銷 = 錢 (價值) 或 程式能力 X 名聲 = 錢 (價值)

就算是世界上最棒的程式設計師,如果只是自己一個人待在地下室孤芳自賞,沒有人認識你,這真的沒有意義,對這個世界沒有太大的影響力。

與其實力堅強但沒有名聲,寧可當一個實力中等但名氣超高的人。

說話能力與工作實力可以產生三種組合:

1. 光說不練型:嘴砲能力高但沒有工作實力。

2. 埋頭苦幹型:不會展現自己,只知道拼命工作。

3. 說唱俱佳型:既有表達能力,又有工作實力。

品牌的起點是「清楚而且簡潔有力的核心訊息」:你是誰,你想表達什麼。

打造個人品牌還要有持續的曝光量;基本策略是從一個管道或媒介開始,學習如何精通它,並且系統化地使用,才能在這個管道上以極高的效率產生大量的內容,然後擴散出去。


只要做得夠久,並且維持一致性,就會隨著時間逐漸成名。以下想法或管道或許可以幫助你:

1. 建立你自己的部落格

2. 寫書

3. 寫雜誌文章。

4. 自己主持 Podcast 節目。

5. 開設 Youtube 頻道。

6. 在當地的程式研習營演講。

7. 在開發者大會上演講。

8. 建立一個熱門的開放程式碼專案。

品牌和行銷都要基於一項重要的原則或想法:「幫助他人創造價值」,而且最好大多數免費。

你要當那種別人想圍在你身邊,想和你有所關聯的人,因為他們覺得在你身邊就能獲得好處。

投入時間才會有機會看到成果,「就算你是程式設計領域裡的新人,還是能提供某些價值」。

分享自己學習的歷程或自己在某個主題上從新手到專家的過程,對於想跟你一樣學相同技術的人來說,這些經驗都有莫大的價值。

只要你持續向前推進,終究會達成目標。

想從人脈獲得任何價值前,你必須先投資人脈,要想著「為他人創造價值」。

在整個對話過程中,要全程專注在你能為他人做什麼。利用主動傾聽的技巧,找找看有沒有方法可以直接幫助這個人,或是有沒有認識的人可以幫上他們的忙,介紹他們認識。

當你能為他人創造價值,就能變成大家想圍繞的中心人物。 

發展大量人脈需要投入時間,不該只有在需要工作時才想拓展人脈。

人脈代表一個人的淨值

2022年10月22日 星期六

『軟體開發人員職涯發展手冊』領導與晉升

做為一個領導者,我算是相對失敗的,除了作者所說的「授權」與「卸責」分不清楚外,有時候我真會認為某件事已經交待給誰去做了,做不好是他的問題而不是我的問題。

另外,就是「教育訓練」時,發懶而不去檢查團隊的工作內容,總是認為別人可以很好的完成工作,這是一廂情願,而且時間越久傷害越大。

在個人發展上我不害怕多花錢,只要是對自己有幫助的事,都願意砸資源下去;至於「閱讀」已經是我生活中的一部份,這點無庸置疑。

至於「個人行銷」的部份,這點是我去 MBA 的學程後,才深刻體會到自我不足,或許是在工程師的培養過程中,讓我們覺得實力的重要性遠大於包裝 (行銷),而忘記「如果都沒有人認識你,該如何發揮自身的實力」。

很多時候,人的能力沒變,但在不同的舞台就會散發出不同的光采。

不管是在公司上班、自由工作者或是創業家,永遠不要忘記是因為能幫公司賺到錢,公司才會或才能發薪水給自己。

要去了解自己在哪些地方幫公司賺到錢,到底「創造了哪些價值」,並要努力創造更多的價值,別認為過往的成績可以保自己一生無憂。


本章節重點摘要如下:

身為領導者,只有你要為團隊的表現負責;想要有效領導,你必須完全掌握團隊以及團隊所做的每一件事。

當問題發生了,這些都算是你的錯,而且是你要負起的責任;你應該該團隊成員訓練的更好,你應該確保團隊成員有更好的理解,進而實現計劃;如果盡了一切努力,成員還是沒有進入狀況,你應該將他們正式踢下船。

你必須負起責任,不只是為自己的錯誤,還有團隊理其他人犯的錯誤。

盡可能簡潔扼要地表達你的任務和目的;告訴團隊成員目標是什麼,但是不要告訴他們該怎麼做。

請別忘了要進行「教育訓練,第一次要求別人執行工作任務時,即使已經有流程文件,還是可能會發生問題,這很正常;請檢查他們的工作內容,告訴他們需要修正什麼錯誤以及犯錯的原因,然後請他們修正,這是最好的訓練方式。

如果你的團隊做事方法一致、了解任務、有流程可以依循而且訓練得當,就算你認為某些只有你才能做的工作,相信團隊應該不難完成。

要成為有效率的領導者,你必須委任工作;「授權和「棄責兩者之間有很大的差異。

當你授權工作時,一定要擁有對工作的「責任感」,並且負責檢查工作結果,你不能假設其他人一定會完成工作而且正確無誤,然後在心裡認為「出問題也不是我的錯,我已經指派給誰去做了

永遠都要選擇「責任」勝過於「薪水」。

責任就是力量,關鍵在於只要你追求責任,財富也會隨之而來,你隨時都能以責任 (閱讀也是一種力量) 換取財富

請抓住每一個你能獲得的「機會」,負責某件工作;如果想獲得升遷,就一定要做更多的工作,而且是比公司要求你的還要多。

請多買點書,而且多看點書;建議你每天一定要閱讀某種類型的技術書籍。

在個人發展上,別怕多花錢,這樣才能賺更多的錢。

行銷自己,建立你的「個人品牌」;你要成為一項資產,如果希望公司付更高的薪水,就是要幫公司賺更多的錢。

弄清楚你要怎麼做,才能對公司營收有直接的影響;當你提出想要加薪時,最好的論點是「能為公司賺更多的錢」

『軟體開發人員職涯發展手冊』唸大學的優缺點

嚴格來說我也不算是科班出身,但對於作者所說的大多數優缺點都是認同的;至於成本的部份,因為美國跟台灣還是有所差異,從「教育成本」的角度來看,在台灣讀一個相關學位應該是相當值得才對。

不管是在哪個領域或專業,每個人都應該對自己的「教育」或「學習」負最大責任,努力爭取機會,創造讓自己有「實務學習」的舞台,而不是被動地等待學校餵食,然後最後再來責怪沒有獲得任何幫忙。

完全同意應該在大學階段就開始建立「作品集」,作者所言我大多有做到,但可惜的是當初並沒有想著詳實地記錄這些過程。

至於開發者社群的概念,我覺得在台灣還是偏薄弱,或許還需要更長時間來塑造整個生態體系。


本章節的重點摘要如下:

擁有學位的人可能會比沒有學位的人「擁有更多工作選擇的機會」。

每位軟體開發人員都應該學習「作業系統」、「資料結構」、「演算法」及「計算機結構」等,許多電腦科學學位課程的主題。

更多的程式設計師需要對他們手上正在撰寫的程式碼,了解其背後一些基本知識和理論。

相較於其他學習途徑,傳統的大學教育做得比較好的一點,是會提供「學習架構」;自學需要學習動力與自我紀律。

但缺點也很明顯,傳統教育的設計目的不是要最有「效率」地使用時間,並非你在學校參與的所有活動和時間都能讓你直接受益。

學院和大學裡的教授通常都與現實業界裡的各種「軟體開發」完全脫節。

「教育是你自己的責任,專注在實務學習上」,盡可能應用你所學到的知識。做好自己份內的工作,負起自我學習的責任。

如果要建立個人作品集或是開發副業,從大學開始是最完美的時機。

程式研習營 (類似職訓或補習班) 往往會將焦點放在如何開發軟體,而忽視開發背後的原因或科學原理;這種學習方法有時可能導致「你對自己的能力過度自信」。

最傑出的程式設計師是出於自身需要才學習程式設計;但自學型的程式設計師要找到第一份工作相當艱困。

絕大多數人只有在有動力時才會做事,所以投入有「學習架構」的學習課程,都有助於提供動力。

許多自學的程式設計師在某些方面的知識上缺乏最好的實務經驗和正統觀念。

一個好的副業專案,至少能同時提供以下這些好處:

1. 提供一個真正的問題讓你「實作」,並且應用所學到的知識。

2. 以實務工作創造作品集。

3. 創造一些可能的副業收入或開發新的事業。

4. 在學習程式設計時,為自己開發一些有用的工具。

5. 對自己的能力建立「信心」。

6. 提供產生樂趣的管道。

讓這些程式碼作更多有用的事,或許能讓你獲得多重效益。

2022年10月20日 星期四

『軟體開發人員職涯發展手冊』培養技術能力

作者講的「快速學習法」,其本質上應該就是我先前做過重點摘要的「費曼學習法」,想要教授一樣技能或技術給他人時,自己就要徹底理解問題或技術的本質,然後收集相關的資料,用自己的話重新詮釋問題及解決方式。

在這個過程中,就能把知識轉化為自身的理解,從而跟自己的知識樹相連接,存在腦海深處變成本能。

但是,如何針對不熟悉的領域收集學習資源,並擬定學習計畫,這點倒是我一直覺得應該在每個人的學生時期該建立的能力,高等教育應當賦予學生這種「軟實力」,它可以讓終身學習成真。

「80/20 法則」倒是提醒我一件重要的事,或許下次在授課時,可以把不同課程的內容,但有相關性的 「20% 關鍵內容」整併在一起,讓學生快速吸收並實作應用;如果他們後續想再學習剩下的 80% 內容,可以自行去修習完整的課程,這時會更有方向。

作者也點明了為何「做中學」重要的原因,從過程中去觀察及了解那 20% 的內容是甚麼,然後快速學習到可以應用該技能的程度。

關於程式設計的部份,我倒是比較驚訝 C# 這個語言已經壯大到如此程度,而且看其趨勢有成為跨平台設計的主流,這在當初接觸 C# 時完全想像不到。

如果它後續再把 Linux GUI 介面開發都拉進來,或許真能大幅度降低在不同作業系統間的應用程式開發門檻。

現代軟體開發確實很重視函式庫的應用,跟堆疊積木一樣,積木種類越多,就越能堆出開發者想要的形狀。

因此,該程式語言除了語言特性外,就是背後有多少函式庫資源至關重要,最好還要有廣大的開發者社群支持。

關於這點,如果是要驗證跟課程學習我推薦 Python,它在好幾個領域都有相關的函式庫支持,重點是語法容易學習上手快,也滿適合學校在教授理論課程時,讓學生同步實作,驗證該理論的想法,如人工智慧、影像處理、機器學習、數值計算等相關課程。

最後,針對學習的動機,要想辦法規劃或設計自己「需要應用一項技術,有實際的理由學習」這部分可以參考先前摘要過的「原子習慣」,如何創造一個適合學習新技術的環境,讓自己養成新習慣,這樣能讓整個學習過程更自然,不需要過度強調毅力的重要性。


以下是本章節的重點摘要:

請把技術能力想成是一趟「旅程」,而非終點。

請參考作者的「十步驟快速學習法」,以下介紹基本流程:

對你學習的內容和學習的範圍有良好的理解,你需要一個「目標」來衡量自己是否已經學會;有太多人開始學習某件事情,卻沒辦法確認自己是否成功。

收集學習資源,並創造實際的學習計畫

學習足以起步的知識,然後實作看看,回答實作過程中所遇到的任何問題,焦點放在「做中學」

利用與生俱來的好奇心驅動學習的動力,先自己實際動手玩,再回頭閱讀和學習主題有關的文字資料或消化學習內容。

藉由腦海中浮現的問題和一些實際經驗,自然而然就會引導你找出「真正的重點」

把你所學到的知識再教給其他人,透過這一步,所學到的知識將轉變為理解;任何想快速學習的事物上,都可以用以上的流程進行。

除非你動手實作這些技術能力或利用它們解決問題,不然只會對它們有表面的了解。

如果你對這項技能沒有立即的需求,甚至會懷疑自己是否需要學習,但如果立刻「需要應用一項技術,有實際的理由學習,那麼學起來就會更輕鬆自在」。

如果你不知道自己的問題是甚麼,Google / ChatGPT 也幫不了你。

要先了解學習的特定技術範圍在哪,大致了解這個技術能做到哪些事。

程式語言一定都會有的標準內容「各種函式庫」,知道能利用這些函式庫做甚麼,以及這些函式庫所包含的範圍。

先了解整個程式語言的情況,而非深入細節,等需要學習這項知識時,會知道該從哪裡尋找資訊。

生活裡的一切幾乎都會落入 80/20 法則,學習一項技術能力,關鍵是找出那 20% 內容

許多書籍、甚至是教學課程都寫得像參考手冊,並不會特別強調某項技術裡的 20% 內容是一定要知道的重要知識。

透過工作訓練技能特別有效率,是因為可以從工作過程中了解那 20% 的內容是甚麼,學 20% 的內容就能處理 80% 的工作,這就是為什麼實作如此重要的原因。

聽某些專家對某個主題的看法,就能獲得「深入的見解」,而這些見解是你無力靠自己的力量匯聚而成。

研究專家們如何在現實世界中應用這些技能,並對該技術能力之錯綜複雜的部份,提出哪些相關的問題和論點,就能更深入理解一項技術能力。

做中學是非常重要的技巧,你需要一個實際的學習計畫和一個清楚的目標

「實踐是檢驗是否學習得當的唯一方法」,要投入時間大量實踐,才能有效率的學習新的技能。

現今的程式設計是在更高階的環境下完成,相較於程式語言本身的特性,設計程式時更常利用函式庫和架構。

學習不同的程式語言,要考量它能否適應不同的情況和技術;現今幾乎所有平台都支援 C#,所以它是一項適應性極高的語言;可以用 C#WindowsLinux Mac 應用程式,也可以拿來寫 Android iOS 應用程式。

2022年10月16日 星期日

『微小疊代』突破環境困局、向上成長

到了本書的最後一章,已經有點像雞湯文,但有些部份還是有共鳴的。台灣的低端製造業大多都已經轉移到海外,留下來還活的好的應該都屬於中高端製造業,甚至像台積電這種知名公司也是屬於「高端製造業」。

作者提到研發、生產與銷售在同一個地方,我最直接想到的是研發 (聯發科)、生產 (台積電)、銷售或品牌 (宏碁、華碩等),其實台灣在資通訊及半導體產業確實算是擁有全產業鏈的實力,反倒是在重工業及生醫產業還沒看到有太多表現,特別是汽車產業。

但最近報章雜誌鋪天蓋地的宣稱台灣將在電動車領域佔有一席之地,還不確定是在全產業鏈有所機會,還是在特定的地方可以有世界級的競爭力。

作者所提及的往「低邊際成本」的產業發展,這也是我比較贊同的輕資本創業方向,或許人不用太多,也不需要巨量資金就能有一定成果,當然這種機會可遇不可求,只能當做是一個目標看待。

關於生小孩,既然已經延遲享樂了,那也一併延遲生育吧,大多受過高等教育的人,想法可能是希望「經濟穩定」,工作上軌道後,有餘力教養小孩才生吧! 

但這無疑會往後拖延生育的時間,有得必有失。


本章節的重點摘要如下:

艱苦奮鬥的目標不是一直艱苦,做低端製造業的目的也不是一直低端。

收益是自上而下分配,成本是自下而上承擔

仰賴金融的國家或地區的貧富差距都急速擴大,因為金融有「頭部效應」,財富會慢慢聚集到少數人手中,無法惠及大多數人。

「成本」如同市場上的重力,在其作用下,產能會一點一點地向成本低的地方聚集,這完全符合市場規律。

現代創新經濟的核心就是整個市場裡有無數「小而專的模組化公司」。

成本才是工業生產線移轉的主因;成本包含人力成本、環境成本、政府成本等。

製造業本身就是整個產業鏈的最底端,利潤大部分都被「研發」和「銷售」等服務業給分掉。

受歡迎的企業,就是會不斷進化,在研發產品的過程中,不斷培養具競爭性的工程師與管理階層,這些人藉由經驗和知識又可以做出更複雜、更高水準的產品;將來這些人就算離開公司,也能把經驗和技術擴散出去,對整個社會是有幫助的。

如果研發、銷售和生產都在國內,那等於整條產業鏈上的利潤都能享受到,那三者就是利益共同體。

現代製造業跟古代作坊不一樣,功能改良主要在實驗室,不在製造現場,例如改良引擎效率是靠科學家而不是工人。

「研發、科研與金融都是屬於服務業」,企業想要產業升級就需要研發、提高科技水準,也就需要融資方面的支援。

中產階級勢必出自服務業,因為這個產業附加價值大,邊際成本低,大家賺得多,除非全國從事體力勞動的人口特別少,這樣藍領的薪水才能上漲。

想發家致富,要往「低邊際成本」的產業發展,如軟體產品可以零成本複製幾百萬次,這種產業才自帶爆發性。

買家市場的時代,關鍵在於擴大內需;資本主義世界不缺產能,缺「購買力」,正是因為購買力不足,才導致一波又一波的經濟危機。

越窮越不敢生,越不生社會越窮。

所有人口老化嚴重的國家,都會盡量推遲退休年齡,說不定一直推遲到不退休。

為什麼工業化會導致生育率降低呢?

1. 教育,讓女性生育年齡大幅往後延遲;女人年齡大一些再生小孩是進步,但付出的代價就是生小孩的機會少了很多。

2. 經濟壓力,養小孩屬於投資,投資必然會抑制家庭在其他方面的消費,後果就是生活品質降低;在東亞文化中,為小孩花錢,父母親通常都不會心疼。

3. 心態問題,現在社會的透明化讓一部份人的得失心變得很重,尤其在生育方面。

窮不窮很多時候是觀念問題,相同的收入在不同的環境下感覺完全不同;只要你不覺得自己窮,就不那麼窮。

放棄生育後代的本質就是放棄儲蓄與投資,換取自己過得輕鬆自在,好好消費。

『微小疊代』讓世界趨勢成為你的助力

這章的討論事實上已經超過我的知識儲備,它是用經濟學的角度輔以歷史的觀點,來解釋當前的社會現象與財富的流動。

例如「平等與效率」應該屬於政治經濟學的範疇,以後有機會寫一篇心得來討論平等與效率之間的關係。

不管是生產過剩還是債務危機,都是週期性的,這也可以用景氣循環理論來解釋,只是我腦中現在有很多疑惑跟矛盾衝突,當下還沒有仔細想清楚主要衝突點在哪,只是覺得有些不對勁,等哪天想通再來補充。

小孩才是家庭消費的主力,這點從日常生活的觀察中可以確認,一個中產家庭如果沒有小孩,消費力道會下降一個層級,可以說目前為了小孩而產生的消費是最願意花的,其他部份就要再三考慮。

另外,我認為還有一個消費點,那就是「醫療」,隨著老年化的趨勢,所有跟醫療相關的費用是很難避免的,「生物與醫學科技」也是未來世界的一大亮點。


本章節的重點摘要如下:

一個人如果總是挑生活中容易的事來做,用不了幾年就會變成一個廢物;機構或組織也是一樣,必須主動挑戰去做艱難的事。

黃金地段的房價直入雲霄,是因為這些地點的周圍往往有最好的基礎設施,例如醫院、商場、娛樂設施、學校等。

降低貧富差距不是道德問題,而是經濟問題;少數人控制太多財富,剩下來的人沒錢,自然不會去消費,也就無法帶動內需。

受到「收入曲線」的影響,收入越高的人,其實日常固定支出在總收入中佔的比例是很低的;剩下的錢都用來投資、購買資產,反而進一步推高了資產的價格

一個貧窮的社會會束縛所有人的自由,也會束縛人的創造力,讓大多數人的天賦發揮不出來,既無法創造財富改變自己,也無法影響周遭人的生活。

今後是「微成長」的時代,社會上很多矛盾都會凸顯出來,接下的目標應該會是同時追求「效率」與「公平」的經濟;降低貧富差距及提高基層收入,就是在「提振內需」與「降低社會矛盾」。

消費市場跟社交軟體不一樣,社交軟體屬於「趨同演化」;比如裝一個奇怪的 APP,最後根本沒辦法和誰聯繫,因為別人沒有裝;但消費市場不存在這個問題,總會形成一個多強並立的格局。

很多事情都是經過漫長的累積,然後一飛沖天,前期是線性成長,後期則是指數型成長;無論是產業還是技術,都是到達一定程度就會發生一次翻天覆地的變化。

資本主義國家的週期性危機,本質上也可以說是「週期性過剩」;所謂過剩,就是產能太強,生產出來的東西賣不出去,產能天天過剩。

跟多數人的認知相反,一般都認為是東西不夠才會出現危機,生產太多怎麼會有危機呢? 只要商人逐利,就會有一部分收益不會用於消費,那就會有一部分對應的物資賣不出去:這就是過剩。

典型的出口導向經濟體,生產的東西主要賣到海外,但如果海外出事,東西賣不出去,就會造成大規模失業。

日本沒有消費衝動主要是人口老化太嚴重,而且社會階級僵化、流動性極低。

整體來說,經濟最終是靠「消費」帶動的,而消費的動力主要來自三方:小孩、年輕的女性以及技術更新疊代。

人口老化、小孩越來越少、技術停滯的社會注定沒什麼消費動力;既然消費動力不足,創業積極性也非常差,經濟就好不到哪裡去。

在負利率時代,增長緩慢、機會稀少,誰都不想花錢,創業也賺不到錢。

如果沒有實體投資機會,資金只會去追逐那些少數的優質資產,但因為進不了實體產業,所以也沒有惠及基層民眾。

由於市場上缺乏機會,往後兩極化會成為主流;所有領域、產業,乃至整個社會都是中間空洞化,財富往前端集中,中產階級變少,形成 M 型社會。

縮小貧富差距,讓人民手裡有錢,才能推動消費;有了需求,才有工作機會,才能避免錢在金融市場空轉,卻在實體經濟中找不到可投資的標的。

在過去百年中,對人類意義最大的幾個發明,都是用來拉近人與人之間的距離、降低運輸成本

拼續航力 → 從短跑衝刺變成馬拉松訓練

最近幾週我過上了極其規律的工作型態,因為在有時間壓力的情況下,有幾個新的產品功能待開發;但我又不想把自己的時間全壓上去,因此就每天專注工作三至四小時,確保當天都有達成設定的目標,也不特別著急著一次做完。 回頭一看,其實默默地都有完成當初預定的目標,似乎也沒有因為每天只專注開發三、...