2024年5月19日

工程師創業 EP4 - 為什麼要做 SaaS?接案不是比較好做嗎?

資工、資管相關科系,想要創業,其實不難,畢竟現在這個時代,到處都有系統開發的需求。

而網頁開發,在軟體開發領域,其實又是相對低門檻,好入門的領域,甚至很多非本科系的,靠自學就可以進入網頁開發的領域。

大學時期就開始接案的例子不在少數,有些做得不錯的,會開始成立工作室,累積穩定的客源,最後成立公司,這樣也算是成功創業了。

接案模式的難題

但是這樣的模式會遇到兩個問題,第一個問題,由於進入門檻低,所以競爭激烈,如果沒有做出差異化,往特定產業、領域專研,很容易陷入低價競爭;

2024年4月23日

工程師創業 EP3 - 資深工程師也不過是 Junior PM

雖然說作為工程師,我的經驗還算豐富,可以解決大部分的開發需求與問題,姑且可以自稱資深工程師吧。

但是做為產品經理(PM),我就是全然的 Junior 了。

明明是工程師,為什麼要做 PM 的工作?

也沒辦法,畢竟公司目前只有我跟一位業務合夥人,很自然的,PM 的工作就落到我身上了。

風水輪流轉

以前還在當工程師的時候,常常會吐槽說,公司高層或是 PM 到底在規畫什麼爛東西?

看到需求後,工程師們最喜歡在會議室裡面噴一輪:

「這樣的系統真的有人要用嗎?這樣的流程也太違反人性了吧?」

「為什麼這些高層的決策總是出爾反爾?為什麼規格書總是亂七八糟?不好好寫清楚?」

「為什麼需求邏輯總是不流暢,甚至自打臉?」

族繁不及備載。

2024年3月31日

工程師創業 EP2 - 不要傻傻地就去創業

創業不是從天上掉下來的念頭,最早有創業的想法,應該是大學的時候。

受到臉書跟 Google 創業故事的啟發,覺得軟體工程師是一個很酷的職業,可以打造世界級的產品,賺很多錢。

出生在一個沒什麼資源的家庭,覺得靠一台電腦,寫寫程式就能創業,是非常好的機會。

因為有了這樣的想法,大學選擇了資訊相關的科系。

認清現實

我並沒有那個勇氣休學創業,畢竟家裡沒有金礦,我姑且是有好好地把大學念完,雖然後面有點放飛。

2024年3月23日

工程師創業 EP1 - 能動就好,不是拿出半成品的意思

前陣子,跟一位合夥人決定要開公司,做 SaaS 產品。想說機會難得,不如把過程中經歷的事情記錄下來吧。

除了可以把心路歷程記錄下來,也可以順便整理並反省,在創業的過程中,學到了什麼東西,有哪些事情做對了,又有哪些事情做錯了。

希望這系列文可以一直持續下去。

從零開始開發產品

公司目前,只有我一位工程師,和另外一位業務合夥人。

我們的目標是自己開發一套 SaaS 產品來販售,所以有大量的開發工作需要進行。

2024年3月17日

Laravel 新手必讀:學習 Laravel 前必須了解的 4 個關鍵名詞

這年頭,PHP 跟 Laravel 這兩個名詞,幾乎都是同時出現。PHP 也許還好理解,但是關於 Laravel,有太多的東西需要學習了。

這篇文章將透過介紹 4 個關鍵名詞,來幫助新手學習 Laravel,釐清觀念。 

2024年3月6日

為什麼老闆不讓你用新技術開發?導入新技術沒那麼簡單

我自己屬於不是那麼追求新技術的人,偶爾滑到新資訊的話會看一下,或是別人在討論的時候也會參與,但是比較不會主動去追求,除非工作上有實際的需要。

不過以前有些同事,他們對於新技術非常有熱情,會主動去參與社團,或研討會等,學習新知訊,每次跟他們聊天,都在談論新的技術話題,根本跟不上XD。

他們通常學到新東西,就會迫不及待的想要導入開發團隊,讓團隊成員一起使用。

我覺得這樣很好,總要有些人要帶著大家往前走,讓整個團隊可以跟上時代,繼續往前走,不會一直用很舊的做法。

就像金融業,核心系統,據說到現在還在用 Cobal,永遠無法改成現代的程式語言。

壞處是,很難找到新人來維護;好處是,懂 Cobal 永遠不用怕失業。

2024年2月29日

如何帶新人?帶領新進軟體工程師需要做好 4 件事

我遇過一些主管,他們根本不知道怎麼帶人,最常用的方式就是放生 play,入職後就放著不管了。

新人沒有人帶,是一件很不好的事情,會讓新人花更多的時間上手工作內容。以公司的角度來看,新人要花很多時間才能有生產力,公司等於是在浪費錢。

所以對我來說,總是放生菜鳥的主管,是不合格的,代表主管根本就沒有建立標準管理流程,說好聽一點是自由發展,說難聽一點就是自生自滅了。

我認為一個合格的主管,對於新人訓練,至少要讓新人做到以下四件事:

1. 認識環境與團隊夥伴

2. 學習產業與相關知識

3. 了解工作與開發流程

4. 進行小規模實戰練習

2024年2月26日

過太爽?工作太閒也會想離職,軟體工程師的知識焦慮與職涯恐慌

我認識的一位前同事,他是一個相當認真的員工,可能能力不是頂尖,但是如果把工作交辦給他,基本上可以放心。

前陣子和他聊天,他提到他最近在考慮離職了,問他為什麼,他說:「我覺得這邊太閒了。」

一般人可能會覺得困惑,工作閒閒又可以領薪水不是很好嗎?這樣的職位真是可遇不可求,怎麼會想離職,太可惜了吧。

但其實在軟體產業來說,工作太閒確實容易讓人很恐慌。

2024年2月19日

軟體工程師,不要為了工作拼命

好幾年前,投入一個專案,姑且算是我職涯中,第一個由我主導的大型專案吧,要帶領團隊,從零開始建置一個公司核心的重要系統。

專案的時程很趕,高層也相當重視,不能有大的差錯。

那時還比較年輕有鬥志,也想要有個代表作,所以我投入相當多心力。

晚上下班回家後,會繼續思考專案的事情,假日還自己跑到辦公室免費加班,處理需要安靜思考的工作,也整理文件,或把一些混亂的邏輯釐清,為了讓其他團隊成員在工作日可以更有效率的工作。

在時間跟人力都很緊湊的情況下,我們總算是在期限內完成開發。我們將系統上到內部測試環境後,請 PM 安排驗收測試。

準備好接受考驗

畢竟是全新開發的專案,我們已經做好心理準備, PM 可能會找出一大堆 BUG,畢竟我們時程很趕,測試可能做的不夠周全;我們也預期 PM 會條列一大堆修改項目,還為此保留了一些開發資源,畢竟這是專案常見的事情。

我們給 PM 一些時間來做驗收,然而一個禮拜、兩個禮拜、三個禮拜,遲遲沒有回報。我開始覺得好像有問題,「怎麼搞的,這不是高層重視的專案嗎?PM 到底在幹嘛?。」

2024年2月13日

軟體專案工時總是估不準?3個可能原因和解決方法,PM 跟 RD 不要再互相傷害了!

軟體開發有個長久以來令人詬病的問題:開發時間總是估不準。

不管怎麼估計,最後好像還是會發生意想不到的狀況,導致開發時程 Delay,PM 只能忍弄砍需求,跟老闆賠不是;或是為了趕上死線,逼工程師加班。

既然估時間一點都不可靠,那不如就不要估了吧?當然是不行呀,主管或客戶還是會需要一個數字,團隊也需要這個數字來互相配合。

所以到底為什麼,軟體開發的工時這麼難以估計?以下根據我自身的經驗,來聊聊三個可能的原因和對應的改善方式:

2024年2月5日

為什麼加薪升職的是別人?軟體工程師需要溝通能力嗎?不要等到被資遣才後悔!

會選擇當軟體工程師的人,相較於跟人溝通,應該更喜歡面對電腦吧?畢竟面對真實的人總讓我們覺得尷尬不自在。

我們這些軟體工程師宅宅們,通常懶得跟不同類型的人溝通,要對這些人把事情解釋清楚,還要處理對方的情緒,對我們來說真的是很困難也很麻煩。

但電腦程式不會有這些問題,只要依照規則操作,這些程式就會乖乖聽話。遇到問題,電腦也不會鬧脾氣,反正多半是工程師自己耍白癡。

因此,大部分的工程師最後都練就一身不管別人怎麼想的強大「講話」能力,只需要把自己的意思傳達出去就好,至於有沒有通,嗯,不是工程師的問題,聽的人要自己想辦法理解。

溝通能力是大事

剛步入職場的那幾年,我也是屬於埋頭苦幹型的。抱持著很理想的信念,認為只要認真做事,努力 coding,加薪升職就會輪到我。

還好,這並不是一個悲傷的故事,因為在離開第一間公司的時候,我的確成為在短短幾年內升到當時公司內最年輕的主管。

然而,現在回想起來,我必須要說,只是努力 coding 是不對的。

2024年1月11日

書讀的好、成績好、學歷好,就能賺大錢嗎?你可能忽略了一些事實

念書的目的是什麼?我認為,至少根據我個人的求學經驗,沒有幾個人是真的熱愛讀書的。有些人可能喜歡讀文學作品、小說,少部分人喜歡讀科普、商業書籍,但喜歡讀教科書的,真的是沒聽過幾個。

我自己還算是喜歡讀課外書的,對於課內書也算是還能夠保持耐心,可以為了成績多讀幾個字的,但絕對稱不上喜歡吧。很多時候,看過去,當作增廣見聞還可以,但要背誦,或是還要實際演練就有點受不了了。

大人最喜歡告誡小朋友,要好好讀書,未來才會有出息,才能夠找到好的工作,才能夠賺大錢。這也是我從小就相信的道理,在學期間,就算讀書的時候看不到未來的可能性,至少也會告訴自己,努力應該不會錯吧。

事情跟自己想得好像不太一樣

但越到後來,尤其到了大學,出社會以後,才知道,原來這個社會運作的方式並非是我們所想像的那麼單純。

2023年10月29日

PHP 8 Array 教學(下):10 個必學的 PHP Array 實用作法與方法

前一篇提到了 PHP 8 Array 的基本概念,對 PHP Array 還不熟悉的人,可以先閱讀前一篇哦。

這篇接著要來介紹 10 個 PHP Array 的實用方法,讓你對 PHP Array 有更深入的了解,知道 Array 可以用來解決什麼問題,也提高對 Array 應用的熟練度。

本篇將會依序說明及介紹以下十種作法與方法:

2023年10月24日

PHP 8 Array 教學(上):基本概念與操作

Array 是什麼?簡單來說,Array 是一種資料結構,用來儲存大量相似的資料。

如果沒有 Array,當你要儲存多個類似的資料,例如,三個數字,你必須要宣告並使用三個變數。

$num1 = 10;
$num2 = 20;
$num3 = 30;

但是透過 Aarry 的協助,你只需要使用一個變數。

$nums = [10, 20, 30];

當然 Array 不只讓你更方便地儲存資料,Array 作為 PHP 的核心資料結構,也提供了許多方便的方法,讓你可以更彈性的操作 Array 中的資料。

2023年10月19日

北海道、東北DAY1。OMO3 札幌薄野住宿。北海道産羊・野菜ふくすけ食記。來北海道就是要吃成吉思汗啊!

南北海道、東北之旅的第一天,從台北出發。

搭乘機場捷運到桃園機場,搭乘台灣時間 10:05 的班機班機,抵達北海道新千歲機場的時間是日本時間 15:00,搭乘時間約 4 小時。

由於預期今天搭飛機,會比較累,所以沒有安排什麼行程,就是先到飯店,然後吃成吉思汗!

新千歲機場

新千歲機場很大,也有一些地方可以逛街,但因為趕著前往市區,所以就沒有多做停留。

從新千歲機場前往 JR 札幌駅,可以搭乘JR快速エアポート,只要 40 分鐘即可到達JR 札幌駅,而且大概每15分鐘就有一班車,很方便。

ChatGPT 要取代軟體工程師了嗎?試著請 ChatGPT 教我如何使用 Docker 建置 PHP Laravel 的本地開發環境

早些年的 AI 其實很笨,不太能理解人類真正的意思,但經過學者跟工程師們多年的努力,聊天機器人已經有很大的進展了。尤其是最近微軟推出的 ChatGPT,據說聰明到已經可以顛覆整個產業了!?

甚至傳聞 ChatGPT 已經足以取代軟體工程師了!事實真的是這樣嗎?難道我這次真的要失業了嗎?

這篇就來玩一個簡單的測試吧,來測試 ChatGPT 是不是真的有傳聞中的那麼厲害,是不是真的可以取代軟體工程師!那就廢話不多說,直接出動 ChatGPT 啦!

問問 ChatGPT

打開 ChatGPT 後,我直接問了這個問題:

請問我要如何在本地使用Docker建立起Laravel的開發環境?

問完後,不用幾秒, GPT 立刻就回了我一大串,如下面的截圖,洋洋灑灑的列出了六大步驟(完整原文貼在圖片下方)。

2023年10月17日

寫程式需要天分?老實說,大部分的人都沒有天分

我自己認為,程式當然有比較需要天分的部分,像是演算法。

比較簡單的演算法、資料結構還可以理解,像是排序、最小路徑、Stack、Heap 這些常見的東西,都還可以理解。但是在深入往下探討,什麼 NP、NP-Complete 我是從來沒有搞懂過。

這就是為什麼我後來也放棄繼續唸研究所,因為資訊相關科系,研究所都是偏數理的,尤其是AI、資料相關的,非常仰賴數理能力,我自認沒興趣也沒能力,就沒有繼續往下走了,選擇直接就業。

寫程式需要天分嗎?

回歸正題,所以說,你需要是一個天才,才有辦法寫程式嗎?

經典重讀:人月神話(二)加人不能解決問題,加更多人當然更不能解決問題!

在一個時程已經落後的軟體專案中增加人手,只會讓他更加落後——人月神話

本書的第二章,章節名稱:人月神話,正是這本書的書名。這個章節能夠作為書名,代表他的重要性。

書中認為,軟體專案進行不順利的原因,大多是因為缺乏良好的時程規劃。其中最重要的觀點是,有許多專案管理者,錯把工作量跟專案進度混為一談,進而以為在時程延誤的時候,可以透過加人的方式來趕上進度。

專案進度跟工作量的關係

一個專案有固定的工作量?是的,但這是最樂觀的時候。軟體專案有太多意料外的事情可能會發生,導致工作量可能會發生變化。

我們先撇開意外不談,來看看所謂的人月 (man-month)。

人月是用來衡量工作量的單位,指的是一個人工作一個月的產出。如果說一個專案需要 6 個人月,那代表需要花一個人 6 個月的時間,才可以完成專案。

2023年10月14日

北海道、東北初秋10天新手不開車自由行、新千歲進仙台出、行程整理

漫長的疫情就該後來一場日本北方國度的旅行,看看不一樣的風光。

初秋時期(9月中)的北海道、東北,是旅遊的淡季,沒雪景、沒楓葉、沒銀杏。但也相對的遊客也比較少,適合討厭人擠人又想感受日本街景、食物、服務的朋友們。

訂機票的時候一個奇怪的念頭閃過,決定從新千歲機場(CTS)進,仙台機場(SDJ)出,中間會橫跨南北海道跟東北各個主要城市,是一趟大長征。

行程規劃

這趟旅程不開車,主要以大眾運輸為主。

行程規劃上,重點放在札幌跟仙台兩個城市,札幌規劃了四天,仙台規劃三天。

2023年10月10日

經典重讀:人月神話(一)你的程式只是玩具!了解「程式」與「軟體系統產品」的 9 倍差距

大型系統的軟體開發工作就像掉進了焦油坑裡。

當你掉入焦油坑中,越是掙扎,焦油就纏的越緊。軟體工程某種程度就像是這樣的東西

首先,先來個大哉問吧,你知道軟體工程是什麼意思嗎?

如果你認為,軟體不過就是寫寫程式而已,並沒有什麼工程的成分存在,那麼你不妨可以想像一下,為什麼有那麼多的「程式」天才,每年從台清交成的資工系畢業,卻沒有多少個成功的「程式」?

這個問題的關鍵在於,在市場上,真正有價值的,並不是程式,而是通過繁瑣的程序,最後終於成功上線的「軟體系統產品」。程式天才可能擅長設計程式,但他們卻不擅長處理更現實層面的工程問題。

不知道大家有沒有聽過一個玩笑話說,學校作業寫的東西就是玩具而已?其實我認為這個比喻還蠻有趣且適合的。