資工、資管相關科系,想要創業,其實不難,畢竟現在這個時代,到處都有系統開發的需求。
而網頁開發,在軟體開發領域,其實又是相對低門檻,好入門的領域,甚至很多非本科系的,靠自學就可以進入網頁開發的領域。
大學時期就開始接案的例子不在少數,有些做得不錯的,會開始成立工作室,累積穩定的客源,最後成立公司,這樣也算是成功創業了。
接案模式的難題
但是這樣的模式會遇到兩個問題,第一個問題,由於進入門檻低,所以競爭激烈,如果沒有做出差異化,往特定產業、領域專研,很容易陷入低價競爭;
資工、資管相關科系,想要創業,其實不難,畢竟現在這個時代,到處都有系統開發的需求。
而網頁開發,在軟體開發領域,其實又是相對低門檻,好入門的領域,甚至很多非本科系的,靠自學就可以進入網頁開發的領域。
大學時期就開始接案的例子不在少數,有些做得不錯的,會開始成立工作室,累積穩定的客源,最後成立公司,這樣也算是成功創業了。
但是這樣的模式會遇到兩個問題,第一個問題,由於進入門檻低,所以競爭激烈,如果沒有做出差異化,往特定產業、領域專研,很容易陷入低價競爭;
雖然說作為工程師,我的經驗還算豐富,可以解決大部分的開發需求與問題,姑且可以自稱資深工程師吧。
但是做為產品經理(PM),我就是全然的 Junior 了。
明明是工程師,為什麼要做 PM 的工作?
也沒辦法,畢竟公司目前只有我跟一位業務合夥人,很自然的,PM 的工作就落到我身上了。
以前還在當工程師的時候,常常會吐槽說,公司高層或是 PM 到底在規畫什麼爛東西?
看到需求後,工程師們最喜歡在會議室裡面噴一輪:
「這樣的系統真的有人要用嗎?這樣的流程也太違反人性了吧?」
「為什麼這些高層的決策總是出爾反爾?為什麼規格書總是亂七八糟?不好好寫清楚?」
「為什麼需求邏輯總是不流暢,甚至自打臉?」
族繁不及備載。
創業不是從天上掉下來的念頭,最早有創業的想法,應該是大學的時候。
受到臉書跟 Google 創業故事的啟發,覺得軟體工程師是一個很酷的職業,可以打造世界級的產品,賺很多錢。
出生在一個沒什麼資源的家庭,覺得靠一台電腦,寫寫程式就能創業,是非常好的機會。
因為有了這樣的想法,大學選擇了資訊相關的科系。
我並沒有那個勇氣休學創業,畢竟家裡沒有金礦,我姑且是有好好地把大學念完,雖然後面有點放飛。
前陣子,跟一位合夥人決定要開公司,做 SaaS 產品。想說機會難得,不如把過程中經歷的事情記錄下來吧。
除了可以把心路歷程記錄下來,也可以順便整理並反省,在創業的過程中,學到了什麼東西,有哪些事情做對了,又有哪些事情做錯了。
希望這系列文可以一直持續下去。
公司目前,只有我一位工程師,和另外一位業務合夥人。
我們的目標是自己開發一套 SaaS 產品來販售,所以有大量的開發工作需要進行。
這年頭,PHP 跟 Laravel 這兩個名詞,幾乎都是同時出現。PHP 也許還好理解,但是關於 Laravel,有太多的東西需要學習了。
這篇文章將透過介紹 4 個關鍵名詞,來幫助新手學習 Laravel,釐清觀念。
我自己屬於不是那麼追求新技術的人,偶爾滑到新資訊的話會看一下,或是別人在討論的時候也會參與,但是比較不會主動去追求,除非工作上有實際的需要。
不過以前有些同事,他們對於新技術非常有熱情,會主動去參與社團,或研討會等,學習新知訊,每次跟他們聊天,都在談論新的技術話題,根本跟不上XD。
他們通常學到新東西,就會迫不及待的想要導入開發團隊,讓團隊成員一起使用。
我覺得這樣很好,總要有些人要帶著大家往前走,讓整個團隊可以跟上時代,繼續往前走,不會一直用很舊的做法。
就像金融業,核心系統,據說到現在還在用 Cobal,永遠無法改成現代的程式語言。
壞處是,很難找到新人來維護;好處是,懂 Cobal 永遠不用怕失業。
我遇過一些主管,他們根本不知道怎麼帶人,最常用的方式就是放生 play,入職後就放著不管了。
新人沒有人帶,是一件很不好的事情,會讓新人花更多的時間上手工作內容。以公司的角度來看,新人要花很多時間才能有生產力,公司等於是在浪費錢。
所以對我來說,總是放生菜鳥的主管,是不合格的,代表主管根本就沒有建立標準管理流程,說好聽一點是自由發展,說難聽一點就是自生自滅了。
我認為一個合格的主管,對於新人訓練,至少要讓新人做到以下四件事:
1. 認識環境與團隊夥伴
2. 學習產業與相關知識
3. 了解工作與開發流程
4. 進行小規模實戰練習
我認識的一位前同事,他是一個相當認真的員工,可能能力不是頂尖,但是如果把工作交辦給他,基本上可以放心。
前陣子和他聊天,他提到他最近在考慮離職了,問他為什麼,他說:「我覺得這邊太閒了。」
一般人可能會覺得困惑,工作閒閒又可以領薪水不是很好嗎?這樣的職位真是可遇不可求,怎麼會想離職,太可惜了吧。
但其實在軟體產業來說,工作太閒確實容易讓人很恐慌。
好幾年前,投入一個專案,姑且算是我職涯中,第一個由我主導的大型專案吧,要帶領團隊,從零開始建置一個公司核心的重要系統。
專案的時程很趕,高層也相當重視,不能有大的差錯。
那時還比較年輕有鬥志,也想要有個代表作,所以我投入相當多心力。
晚上下班回家後,會繼續思考專案的事情,假日還自己跑到辦公室免費加班,處理需要安靜思考的工作,也整理文件,或把一些混亂的邏輯釐清,為了讓其他團隊成員在工作日可以更有效率的工作。
在時間跟人力都很緊湊的情況下,我們總算是在期限內完成開發。我們將系統上到內部測試環境後,請 PM 安排驗收測試。
畢竟是全新開發的專案,我們已經做好心理準備, PM 可能會找出一大堆 BUG,畢竟我們時程很趕,測試可能做的不夠周全;我們也預期 PM 會條列一大堆修改項目,還為此保留了一些開發資源,畢竟這是專案常見的事情。
我們給 PM 一些時間來做驗收,然而一個禮拜、兩個禮拜、三個禮拜,遲遲沒有回報。我開始覺得好像有問題,「怎麼搞的,這不是高層重視的專案嗎?PM 到底在幹嘛?。」
軟體開發有個長久以來令人詬病的問題:開發時間總是估不準。
不管怎麼估計,最後好像還是會發生意想不到的狀況,導致開發時程 Delay,PM 只能忍弄砍需求,跟老闆賠不是;或是為了趕上死線,逼工程師加班。
既然估時間一點都不可靠,那不如就不要估了吧?當然是不行呀,主管或客戶還是會需要一個數字,團隊也需要這個數字來互相配合。
所以到底為什麼,軟體開發的工時這麼難以估計?以下根據我自身的經驗,來聊聊三個可能的原因和對應的改善方式:
會選擇當軟體工程師的人,相較於跟人溝通,應該更喜歡面對電腦吧?畢竟面對真實的人總讓我們覺得尷尬不自在。
我們這些軟體工程師宅宅們,通常懶得跟不同類型的人溝通,要對這些人把事情解釋清楚,還要處理對方的情緒,對我們來說真的是很困難也很麻煩。
但電腦程式不會有這些問題,只要依照規則操作,這些程式就會乖乖聽話。遇到問題,電腦也不會鬧脾氣,反正多半是工程師自己耍白癡。
因此,大部分的工程師最後都練就一身不管別人怎麼想的強大「講話」能力,只需要把自己的意思傳達出去就好,至於有沒有通,嗯,不是工程師的問題,聽的人要自己想辦法理解。
剛步入職場的那幾年,我也是屬於埋頭苦幹型的。抱持著很理想的信念,認為只要認真做事,努力 coding,加薪升職就會輪到我。
還好,這並不是一個悲傷的故事,因為在離開第一間公司的時候,我的確成為在短短幾年內升到當時公司內最年輕的主管。
然而,現在回想起來,我必須要說,只是努力 coding 是不對的。
念書的目的是什麼?我認為,至少根據我個人的求學經驗,沒有幾個人是真的熱愛讀書的。有些人可能喜歡讀文學作品、小說,少部分人喜歡讀科普、商業書籍,但喜歡讀教科書的,真的是沒聽過幾個。
我自己還算是喜歡讀課外書的,對於課內書也算是還能夠保持耐心,可以為了成績多讀幾個字的,但絕對稱不上喜歡吧。很多時候,看過去,當作增廣見聞還可以,但要背誦,或是還要實際演練就有點受不了了。
大人最喜歡告誡小朋友,要好好讀書,未來才會有出息,才能夠找到好的工作,才能夠賺大錢。這也是我從小就相信的道理,在學期間,就算讀書的時候看不到未來的可能性,至少也會告訴自己,努力應該不會錯吧。
但越到後來,尤其到了大學,出社會以後,才知道,原來這個社會運作的方式並非是我們所想像的那麼單純。
前一篇提到了 PHP 8 Array 的基本概念,對 PHP Array 還不熟悉的人,可以先閱讀前一篇哦。
這篇接著要來介紹 10 個 PHP Array 的實用方法,讓你對 PHP Array 有更深入的了解,知道 Array 可以用來解決什麼問題,也提高對 Array 應用的熟練度。
本篇將會依序說明及介紹以下十種作法與方法:
Array 是什麼?簡單來說,Array 是一種資料結構,用來儲存大量相似的資料。
如果沒有 Array,當你要儲存多個類似的資料,例如,三個數字,你必須要宣告並使用三個變數。
$num1 = 10;
$num2 = 20;
$num3 = 30;
但是透過 Aarry 的協助,你只需要使用一個變數。
$nums = [10, 20, 30];
當然 Array 不只讓你更方便地儲存資料,Array 作為 PHP 的核心資料結構,也提供了許多方便的方法,讓你可以更彈性的操作 Array 中的資料。
南北海道、東北之旅的第一天,從台北出發。
搭乘機場捷運到桃園機場,搭乘台灣時間 10:05 的班機班機,抵達北海道新千歲機場的時間是日本時間 15:00,搭乘時間約 4 小時。
由於預期今天搭飛機,會比較累,所以沒有安排什麼行程,就是先到飯店,然後吃成吉思汗!
新千歲機場很大,也有一些地方可以逛街,但因為趕著前往市區,所以就沒有多做停留。
從新千歲機場前往 JR 札幌駅,可以搭乘JR快速エアポート,只要 40 分鐘即可到達JR 札幌駅,而且大概每15分鐘就有一班車,很方便。
早些年的 AI 其實很笨,不太能理解人類真正的意思,但經過學者跟工程師們多年的努力,聊天機器人已經有很大的進展了。尤其是最近微軟推出的 ChatGPT,據說聰明到已經可以顛覆整個產業了!?
甚至傳聞 ChatGPT 已經足以取代軟體工程師了!事實真的是這樣嗎?難道我這次真的要失業了嗎?
這篇就來玩一個簡單的測試吧,來測試 ChatGPT 是不是真的有傳聞中的那麼厲害,是不是真的可以取代軟體工程師!那就廢話不多說,直接出動 ChatGPT 啦!
打開 ChatGPT 後,我直接問了這個問題:
請問我要如何在本地使用Docker建立起Laravel的開發環境?
問完後,不用幾秒, GPT 立刻就回了我一大串,如下面的截圖,洋洋灑灑的列出了六大步驟(完整原文貼在圖片下方)。
我自己認為,程式當然有比較需要天分的部分,像是演算法。
比較簡單的演算法、資料結構還可以理解,像是排序、最小路徑、Stack、Heap 這些常見的東西,都還可以理解。但是在深入往下探討,什麼 NP、NP-Complete 我是從來沒有搞懂過。
這就是為什麼我後來也放棄繼續唸研究所,因為資訊相關科系,研究所都是偏數理的,尤其是AI、資料相關的,非常仰賴數理能力,我自認沒興趣也沒能力,就沒有繼續往下走了,選擇直接就業。
回歸正題,所以說,你需要是一個天才,才有辦法寫程式嗎?
在一個時程已經落後的軟體專案中增加人手,只會讓他更加落後——人月神話
本書的第二章,章節名稱:人月神話,正是這本書的書名。這個章節能夠作為書名,代表他的重要性。
書中認為,軟體專案進行不順利的原因,大多是因為缺乏良好的時程規劃。其中最重要的觀點是,有許多專案管理者,錯把工作量跟專案進度混為一談,進而以為在時程延誤的時候,可以透過加人的方式來趕上進度。
一個專案有固定的工作量?是的,但這是最樂觀的時候。軟體專案有太多意料外的事情可能會發生,導致工作量可能會發生變化。
我們先撇開意外不談,來看看所謂的人月 (man-month)。
人月是用來衡量工作量的單位,指的是一個人工作一個月的產出。如果說一個專案需要 6 個人月,那代表需要花一個人 6 個月的時間,才可以完成專案。
漫長的疫情就該後來一場日本北方國度的旅行,看看不一樣的風光。
初秋時期(9月中)的北海道、東北,是旅遊的淡季,沒雪景、沒楓葉、沒銀杏。但也相對的遊客也比較少,適合討厭人擠人又想感受日本街景、食物、服務的朋友們。
訂機票的時候一個奇怪的念頭閃過,決定從新千歲機場(CTS)進,仙台機場(SDJ)出,中間會橫跨南北海道跟東北各個主要城市,是一趟大長征。
這趟旅程不開車,主要以大眾運輸為主。
行程規劃上,重點放在札幌跟仙台兩個城市,札幌規劃了四天,仙台規劃三天。
大型系統的軟體開發工作就像掉進了焦油坑裡。
當你掉入焦油坑中,越是掙扎,焦油就纏的越緊。軟體工程某種程度就像是這樣的東西
首先,先來個大哉問吧,你知道軟體工程是什麼意思嗎?
如果你認為,軟體不過就是寫寫程式而已,並沒有什麼工程的成分存在,那麼你不妨可以想像一下,為什麼有那麼多的「程式」天才,每年從台清交成的資工系畢業,卻沒有多少個成功的「程式」?
這個問題的關鍵在於,在市場上,真正有價值的,並不是程式,而是通過繁瑣的程序,最後終於成功上線的「軟體系統產品」。程式天才可能擅長設計程式,但他們卻不擅長處理更現實層面的工程問題。
不知道大家有沒有聽過一個玩笑話說,學校作業寫的東西就是玩具而已?其實我認為這個比喻還蠻有趣且適合的。