急著撰寫程式專案嗎?等等,你不該忽略這件關鍵的事情

更新於 發佈於 閱讀時間約 8 分鐘
當你學會一套程式語言的邏輯思路之後,應該都會迫不急待的想要趕快將你腦海中的想法實作出來,你是不是有過這樣的經驗呢?哈哈,當時的我跟你一樣。有幾年的經驗之後,我發現不能再這樣做下去。
在詳細說明之前,讓我打個小廣告。在我的方格子內主要會討論工程師的話題,偶爾會有一些心態或是網路行銷這類的話題。感興趣歡迎追蹤一下喔!
為什麼我不建議急著將腦海中的想法付諸實現呢?因為這會忽略「思考」的重要性,這也是大多數的程式設計師常犯的錯誤之一。
進一步說明之前,為了讓你更理解以下的內容,我就舉個簡單的例子跟你說明。假設回到社群網路還不興盛的年代,你想要做個線上留言板,它能夠提供你和朋友之間互留訊息。你會怎麼做呢?

普遍的設計思路

為了將我和朋友輸入的內容儲存起來,我就會善用前陣子學會的 MySQL 作為資料庫,並且開了一張資料表存放。我預計資料表要有以下的欄位:
  • 紀錄使用者
  • 留言內容,最多 500 字
  • 輸入時間
既然是一個留言板,最重要的當然就是文字輸入框了。接著我一定會先寫出一個功能將文字框內容寫入剛才建立的資料表中。
為了區辨這則留言是誰輸入的,我還額外設計了一個輸入框寫一下自己的姓名。雖然功能陽春,而且也不美觀,但至少能達到同樣的效果。
完成這個基礎的功能之後,我馬上就遇到了下一個問題,我要怎麼給朋友使用?
關於這個問題是寫網頁的朋友一定會遇到的問題,最簡單的解決辦法就是去申請一個共享主機,免費或付費都可以,但效能差很多喔!或者也可以用 ngrok 暫時讓網站公開,我之前有寫過一篇詳細的使用方式,感興趣的話就去看一下吧!
相關技術文章:
Bluehost 教學與評價!新手站長必看,自架網站圖文攻略
善用 ngrok 服務讓佈署本機服務更 Easy!

突然改變的需求

當你將網站放到公開的網路之後,你就將網址複製給幾個朋友展示一下自己 100% 製作的網站。朋友也讚賞你的網頁設計能力,當然你也會在暗中竊笑,並為自己解決別人的煩惱而高興一整個下午。
當你和朋友之間使用得越來越頻繁,漸漸的朋友已經習慣並依賴這個留言板,他們開始反映一些問題並提出更加進階的功能:
  • 可否不要每次都要輸入自己的名字?
  • 留言板打錯字要怎麼修改?
  • 我昨天打了 800 個字的長篇文章,怎麼都被截掉了?
  • 要怎麼放置圖片啊?
  • 有些內容有點私密,應該要登入驗證吧?!
  • 我想討論不同的主題,可否建立新的討論版呢?
  • ...
當朋友反應的問題越多,你就會發現當時想到的留言板功能都是最基礎的新增文字而已。事實上,一個完整且功能健全的留言板非常複雜,需要涉及到基礎編修、介面是否容易使用、安全性、隱密性、角色權限、字數防呆以及社群分享...等功能。
尤其是資訊安全的部分,這更是近幾年來非常重要的議題。你我都想在網路上與朋友互動,使用者都認為這些平台應該要做好帳戶安全以及隱密性的控管。
仔細探討下來,你應該不難發現,這不就是你我常常使用的「臉書」或是「Instagram」嗎?它們承載的內容都很類似留言板,非常適合適合朋友之間互動。
當然你可能會認為「我沒有打算要做出一個臉書,只是朋友之間要使用而已!」
我認為若是留言板功能是要開放給朋友使用的話,基礎的功能還是要花時間思考一下。若是做為程式設計練習,而非多數人使用的話,那也應該要自我提出需求,看看怎麼做才能做到盡善盡美。

事前思考的重要性

看到這裡,我想你應該已經知道開發系統之前應該要事先規劃。
這就有點像是前置任務一樣,沒有解完這些任務,後面的任務就會變得困難或是無法進行。那在開發之前有哪些必須要完成的任務呢?同樣以留言板作為例子。

需求訪談

簡單來說就是問一下你的客戶或是使用者想要怎樣的功能,盡可能越明確越好,並且一點一點記錄下來。
你就跟周邊的朋友表明最近想寫一個留言板功能,看看他們有什麼想法,當然這想法務必越清晰、明確越好,這樣你在腦袋中才會有一個畫面。
不過,你記錄下來的功能不是那種很模糊的喔!像是以下的功能就超模糊的,應該要避免喔!
  • 你做的功能都很好用!我沒有什麼問題了! (這種最後會很難搞)
  • 我覺得畫面應該要有點科技感,剩下都可以! (科技感是...?)
  • 我想要有個等級制度,回文或新留言都可以累積積分 (積分目的是...?)
  • ...
當你的朋友提出需求時,盡可能越明確越好,最好要知道他們想要這些功能的目的背後有什麼原因,可能求方便、簡單、人性化...等等都好,就是不能是出於「直覺」,甚至是「主管交代」一句話帶過。即便是主管講的,一定都會有個深處的原因。
你要知道越含糊不清的功能,越難將系統實作出來。當你問過越多的朋友,自然就會越來越懂他們想要的功能有哪些。

繪製系統初版畫面

在這個階段就是將你蒐集到的資料用一個視覺化的方式呈現出來,可以是手繪風、小畫家,甚至是高階的繪圖軟體都可以。
最重要的就是要讓一個抽象的概念具體化,節省你和朋友之間溝通的時間。看過具體的圖形之後,你的朋友一定會更加有概念,甚至還會表明某個位置希望增加上傳圖片的功能。
這時就可以立刻討論,而不會等到系統真正上線之後才發覺某個功能沒做好。
有時候初版畫面也不是討論一次就會結束的,可能要來來回回很多次,但總比程式改很多次輕鬆許多

開始寫程式啦!

到了這個階段才是寫程式!這時就依照之前討論的結果實作出之前討論的架構。
若是你有一個團隊,那就需要在這個階段之前增加一個分工的環節,各自依照所長去製作不同的功能。起初沒有什麼經費的情況下,以上我提到的這些內容都是自己要完成的,再不然就是找幾個志同道合的朋友一同完成這個專案。
這裡面也有很多細節可以更深入的探討,像是怎麼分工才會有效率、程式碼怎麼寫才能提升品質或是資料庫怎麼設計比較好,但這不是本篇探討的重點,未來再跟你分享。

重複確認

雖然前面有做過初版討論,透過圖形化具體的展示出哪個功能應該長怎樣,但實際操作的感覺還是跟想像的會有一些落差。
為了縮小落差,我覺得系統尚未完成之前就將半成品給你的朋友事先看過是很重要的,他們可能會發現一些之前沒有想過的問題。
有一些問題可能不重要,例如文字的語意,只要問題不大也不會造成系統錯誤,這時就可以適時說服朋友。或者先以上線為目標,日後再進行修正也可以。
而會造成系統錯誤或是不太人性化的功能,既然早一點發現了,有辦法調整就先調整吧!雖然已經造成一點開發上的困擾了,但相比之下還是比正式上線造成的影響小很多。
這個步驟會一直持續到上線為止,盡量降低思想落差!

結論

我之前有分享過每種程式語言都有適合的時機,沒有好壞的區別。既然都已經找到的適合的時機,甚至還訂定出目標了,但請先別急著將你內心的想法實現出來。
因為經過幾年的經驗,我發現急著完成程式都不會有好下場,要嘛就是我做的功能跟使用者想得不一樣,或是我做的功能不是普羅大眾想要的。儘管前者發生的比例超高,但頭都洗下去了,除了重改還能怎麼辦呢?
因此,應該盡量讓使用者與開發者之間的想法差異最小化,你能讀懂他們內心的想法是最好的,當然這不是看過一兩本書,或是看我的文章就能夠立刻明白的事情,經驗還是最重要的
這次討論的議題比較像是心態面的事情,不知道有沒有讓你學到點什麼。如果太簡單或是還是太抽象,麻煩寫在留言區囉!這樣我才有辦法調整,甘溫唷!
不知道這篇的內容有沒有幫助到大家,有什麼想法都可以留言告訴我!若是有其他感興趣的話題,也歡迎跟我說,這樣我才有辦法調整撰文方向,甘溫唷!
除了平時寫寫技術文章,我自己也有經營一個攝影部落格,分享攝影技術、開箱以及旅遊,這些內容都不會放在這裡。感興趣的也歡迎去那邊訂閱喔!
◆ 攝影部落格:https://aidaidme.com/
◆ 歡迎來信:support@aidaidme.com
註:文中圖片源自 Pexel 或 Pixabay
為什麼會看到廣告
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
你可能想踏入工程師的行業裡面看看自己適不適合,除了訓練思考之外,順便給自己一個磨練的機會嘗試看看,搞不好自己會深深愛上寫程式。不過,寫程式不能只是喜歡而已,更重要的是熱忱啊!這篇文章會跟你分享怎麼保持高度熱忱,讓你重回寫程式的興趣。
正在前往成為工程師的道路上,你可能會覺得需要一點東西來證明你自己的能力。最容易想到的證明方式就是作品、證照和技術了,尤其補習班的講師都會建議非本科的考生要去補點東西來證明自己。在文章中會分享自己對於這個議題的觀點,快來看看吧!
你知道什麼程式語言讓工程師最崩潰嗎?根據國外工程師論壇統計,列出了各式各樣的程式語言,甚至有些還是現今熱門的語言喔!想知道的話就來瞧瞧吧!
世界上有最好的程式語言嗎?答案絕對是否定的,每種語言都有適合的使用時機,而也有不少程式語言是隨著時代變遷而消失的。請放下自己要學到最好語言的心態,多看多學,自然會找到適合你的語言。這篇文章會用客觀的角度跟你分享最多人使用的程式語言。
想自學程式嗎?這次要來跟你分享幾個不用錢,又能學好程式的方式喔!我自己最推薦的就是去上課了,付費課程的品質確實好很多,但這次介紹給你的是免費的,很適合小資族或是初次踏出內心障礙的朋友,為自己增加一個高薪收入技能吧!
相信許多人對軟體工程師充滿了很多想像,例如數學是不是都很好、邏輯應該很強、組織能力應該不錯...等等。不過這些真的都需要嗎?我可不是這樣想的喔!來看看具體應該具備什麼技能吧!
你可能想踏入工程師的行業裡面看看自己適不適合,除了訓練思考之外,順便給自己一個磨練的機會嘗試看看,搞不好自己會深深愛上寫程式。不過,寫程式不能只是喜歡而已,更重要的是熱忱啊!這篇文章會跟你分享怎麼保持高度熱忱,讓你重回寫程式的興趣。
正在前往成為工程師的道路上,你可能會覺得需要一點東西來證明你自己的能力。最容易想到的證明方式就是作品、證照和技術了,尤其補習班的講師都會建議非本科的考生要去補點東西來證明自己。在文章中會分享自己對於這個議題的觀點,快來看看吧!
你知道什麼程式語言讓工程師最崩潰嗎?根據國外工程師論壇統計,列出了各式各樣的程式語言,甚至有些還是現今熱門的語言喔!想知道的話就來瞧瞧吧!
世界上有最好的程式語言嗎?答案絕對是否定的,每種語言都有適合的使用時機,而也有不少程式語言是隨著時代變遷而消失的。請放下自己要學到最好語言的心態,多看多學,自然會找到適合你的語言。這篇文章會用客觀的角度跟你分享最多人使用的程式語言。
想自學程式嗎?這次要來跟你分享幾個不用錢,又能學好程式的方式喔!我自己最推薦的就是去上課了,付費課程的品質確實好很多,但這次介紹給你的是免費的,很適合小資族或是初次踏出內心障礙的朋友,為自己增加一個高薪收入技能吧!
相信許多人對軟體工程師充滿了很多想像,例如數學是不是都很好、邏輯應該很強、組織能力應該不錯...等等。不過這些真的都需要嗎?我可不是這樣想的喔!來看看具體應該具備什麼技能吧!
你可能也想看
Google News 追蹤
Thumbnail
現代社會跟以前不同了,人人都有一支手機,只要打開就可以獲得各種資訊。過去想要辦卡或是開戶就要跑一趟銀行,然而如今科技快速發展之下,金融App無聲無息地進到你生活中。但同樣的,每一家銀行都有自己的App時,我們又該如何選擇呢?(本文係由國泰世華銀行邀約) 今天我會用不同角度帶大家看這款國泰世華CUB
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
全球最大的消費性電子展(CES)經常會展示市場最前沿的消費技術,而今年 Samsung 便在展中推出了一款智慧冰箱,主打具備自動補足冰箱內食材的創新功能 。
序言:股市基友給你的一封情書 大家好,我是股市基友。在這個春意盎然的季節,讓我們來聊聊一個有趣的話題:為什麼我總是說,買賣股票就像談戀愛? 在我十多年的台灣股市與美國股市投資生涯中,我看過太多人因為操之過急而失去良機。今天就讓我用最淺顯的戀愛比喻,為各位解開投資的迷思。 第一次約會就想結婚?股票
在股票投資的領域中,資產管理是決定投資成敗的重要關鍵之一。而「主動式資產管理」(Active Asset Management)則是資產管理的核心策略之一,目的是通過專業團隊的市場分析與決策,為投資者實現超越市場的回報。與被動式資產管理相比,主動式管理並不僅僅追隨指數,而是積極尋找市場中的機會,並根
Thumbnail
一直有在Instagram上關注設計師,畢竟很早就有做自己書的想法 設計自己喜歡、想讓讀者拿起來閱讀,就是我很在意的地方,老實說如前面所說: 沒有給獨立出版一條龍廠商、出版社製作一個很大的考量點也是設計師的選擇自由 此外也包含如何發出合作信的小技巧,以及合作內容的討論。
Thumbnail
在產品開發過程中,及早分享文檔初稿並從團隊成員那裡收集反饋是非常關鍵的。這樣做不僅可以在早期階段發現潛在的問題,而且還能讓團隊成員對文檔的發展有所貢獻,從而提高他們對最終產品的接受度。當文檔在創建過程中被共享,它成為了一個動態的工具,可以根據團隊的反饋進行調整和完善。
Thumbnail
「聯絡我們」頁面,對於許多人來說,可能只是一個填寫表格或放置聯絡資訊的地方。然而,在服務客戶的過程中,我經常被問到:網站真的需要這樣的頁面嗎?事實上,現今的聯絡方式多樣化,可以根據不同的需求和情境進行設計,讓我們來看看具體如何做。 服務性質的考量 考慮服務的性質是第一步。通常,服務性質會涵蓋多個
Thumbnail
留言管理是創作者經營社群的重要工作之一,但如何有效率地管理留言,卻是許多創作者的困擾。本文探討創作者在留言管理上所面臨的時間成本與效益,並提出具體建議。
Thumbnail
列出一套完整的程式 程式設計有許多種方法,不過通常會先列出清單的再逐一執行,這樣會加快程式設計的速度。設計通常會採取順推的辦法。所以順推的程式設計方式就是經歷觀念溝通、系統分析、資料統合、權限管理、頻率與時間、後台管理、畫面設計等等階段後,將框架設計完了以後,先列出一套完整的程式,將所有使用者都確
Thumbnail
年輕一輩在職場經常面臨對工作的不滿和迷茫,認為如果不愛工作就無法盡責,此時轉職似乎是唯一的解方。然而,這種觀點或許忽略在現職中的成長和學習機會。勇氣是追求職業生涯成功的關鍵品質,勇於尋求批評意見,勇於開發新的機會,都能為個人帶來意想不到的收穫。
Thumbnail
如果你有一個左向腦,必須一直保持活躍和刺激,一直刺激。你必須看到,這是必須得到適當的營養。否則你會有新陳代謝的問題,你會有直接影響甲狀腺系統的問題。
Thumbnail
現代社會跟以前不同了,人人都有一支手機,只要打開就可以獲得各種資訊。過去想要辦卡或是開戶就要跑一趟銀行,然而如今科技快速發展之下,金融App無聲無息地進到你生活中。但同樣的,每一家銀行都有自己的App時,我們又該如何選擇呢?(本文係由國泰世華銀行邀約) 今天我會用不同角度帶大家看這款國泰世華CUB
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
全球最大的消費性電子展(CES)經常會展示市場最前沿的消費技術,而今年 Samsung 便在展中推出了一款智慧冰箱,主打具備自動補足冰箱內食材的創新功能 。
序言:股市基友給你的一封情書 大家好,我是股市基友。在這個春意盎然的季節,讓我們來聊聊一個有趣的話題:為什麼我總是說,買賣股票就像談戀愛? 在我十多年的台灣股市與美國股市投資生涯中,我看過太多人因為操之過急而失去良機。今天就讓我用最淺顯的戀愛比喻,為各位解開投資的迷思。 第一次約會就想結婚?股票
在股票投資的領域中,資產管理是決定投資成敗的重要關鍵之一。而「主動式資產管理」(Active Asset Management)則是資產管理的核心策略之一,目的是通過專業團隊的市場分析與決策,為投資者實現超越市場的回報。與被動式資產管理相比,主動式管理並不僅僅追隨指數,而是積極尋找市場中的機會,並根
Thumbnail
一直有在Instagram上關注設計師,畢竟很早就有做自己書的想法 設計自己喜歡、想讓讀者拿起來閱讀,就是我很在意的地方,老實說如前面所說: 沒有給獨立出版一條龍廠商、出版社製作一個很大的考量點也是設計師的選擇自由 此外也包含如何發出合作信的小技巧,以及合作內容的討論。
Thumbnail
在產品開發過程中,及早分享文檔初稿並從團隊成員那裡收集反饋是非常關鍵的。這樣做不僅可以在早期階段發現潛在的問題,而且還能讓團隊成員對文檔的發展有所貢獻,從而提高他們對最終產品的接受度。當文檔在創建過程中被共享,它成為了一個動態的工具,可以根據團隊的反饋進行調整和完善。
Thumbnail
「聯絡我們」頁面,對於許多人來說,可能只是一個填寫表格或放置聯絡資訊的地方。然而,在服務客戶的過程中,我經常被問到:網站真的需要這樣的頁面嗎?事實上,現今的聯絡方式多樣化,可以根據不同的需求和情境進行設計,讓我們來看看具體如何做。 服務性質的考量 考慮服務的性質是第一步。通常,服務性質會涵蓋多個
Thumbnail
留言管理是創作者經營社群的重要工作之一,但如何有效率地管理留言,卻是許多創作者的困擾。本文探討創作者在留言管理上所面臨的時間成本與效益,並提出具體建議。
Thumbnail
列出一套完整的程式 程式設計有許多種方法,不過通常會先列出清單的再逐一執行,這樣會加快程式設計的速度。設計通常會採取順推的辦法。所以順推的程式設計方式就是經歷觀念溝通、系統分析、資料統合、權限管理、頻率與時間、後台管理、畫面設計等等階段後,將框架設計完了以後,先列出一套完整的程式,將所有使用者都確
Thumbnail
年輕一輩在職場經常面臨對工作的不滿和迷茫,認為如果不愛工作就無法盡責,此時轉職似乎是唯一的解方。然而,這種觀點或許忽略在現職中的成長和學習機會。勇氣是追求職業生涯成功的關鍵品質,勇於尋求批評意見,勇於開發新的機會,都能為個人帶來意想不到的收穫。
Thumbnail
如果你有一個左向腦,必須一直保持活躍和刺激,一直刺激。你必須看到,這是必須得到適當的營養。否則你會有新陳代謝的問題,你會有直接影響甲狀腺系統的問題。