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

更新 發佈閱讀 9 分鐘

當你學會一套程式語言的邏輯思路之後,應該都會迫不急待的想要趕快將你腦海中的想法實作出來,你是不是有過這樣的經驗呢?哈哈,當時的我跟你一樣。有幾年的經驗之後,我發現不能再這樣做下去。

在詳細說明之前,讓我打個小廣告。在我的方格子內主要會討論工程師的話題,偶爾會有一些心態或是網路行銷這類的話題。感興趣歡迎追蹤一下喔!


raw-image


為什麼我不建議急著將腦海中的想法付諸實現呢?因為這會忽略「思考」的重要性,這也是大多數的程式設計師常犯的錯誤之一。

進一步說明之前,為了讓你更理解以下的內容,我就舉個簡單的例子跟你說明。假設回到社群網路還不興盛的年代,你想要做個線上留言板,它能夠提供你和朋友之間互留訊息。你會怎麼做呢?


raw-image



普遍的設計思路

為了將我和朋友輸入的內容儲存起來,我就會善用前陣子學會的 MySQL 作為資料庫,並且開了一張資料表存放。我預計資料表要有以下的欄位:

  • 紀錄使用者
  • 留言內容,最多 500 字
  • 輸入時間

既然是一個留言板,最重要的當然就是文字輸入框了。接著我一定會先寫出一個功能將文字框內容寫入剛才建立的資料表中。

為了區辨這則留言是誰輸入的,我還額外設計了一個輸入框寫一下自己的姓名。雖然功能陽春,而且也不美觀,但至少能達到同樣的效果。

完成這個基礎的功能之後,我馬上就遇到了下一個問題,我要怎麼給朋友使用?

關於這個問題是寫網頁的朋友一定會遇到的問題,最簡單的解決辦法就是去申請一個共享主機,免費或付費都可以,但效能差很多喔!或者也可以用 ngrok 暫時讓網站公開,我之前有寫過一篇詳細的使用方式,感興趣的話就去看一下吧!

相關技術文章:
Bluehost 教學與評價!新手站長必看,自架網站圖文攻略
善用 ngrok 服務讓佈署本機服務更 Easy!



突然改變的需求

當你將網站放到公開的網路之後,你就將網址複製給幾個朋友展示一下自己 100% 製作的網站。朋友也讚賞你的網頁設計能力,當然你也會在暗中竊笑,並為自己解決別人的煩惱而高興一整個下午。

當你和朋友之間使用得越來越頻繁,漸漸的朋友已經習慣並依賴這個留言板,他們開始反映一些問題並提出更加進階的功能:

  • 可否不要每次都要輸入自己的名字?
  • 留言板打錯字要怎麼修改?
  • 我昨天打了 800 個字的長篇文章,怎麼都被截掉了?
  • 要怎麼放置圖片啊?
  • 有些內容有點私密,應該要登入驗證吧?!
  • 我想討論不同的主題,可否建立新的討論版呢?
  • ...

當朋友反應的問題越多,你就會發現當時想到的留言板功能都是最基礎的新增文字而已。事實上,一個完整且功能健全的留言板非常複雜,需要涉及到基礎編修、介面是否容易使用、安全性、隱密性、角色權限、字數防呆以及社群分享...等功能。

尤其是資訊安全的部分,這更是近幾年來非常重要的議題。你我都想在網路上與朋友互動,使用者都認為這些平台應該要做好帳戶安全以及隱密性的控管。

仔細探討下來,你應該不難發現,這不就是你我常常使用的「臉書」或是「Instagram」嗎?它們承載的內容都很類似留言板,非常適合適合朋友之間互動。


raw-image



當然你可能會認為「我沒有打算要做出一個臉書,只是朋友之間要使用而已!」

我認為若是留言板功能是要開放給朋友使用的話,基礎的功能還是要花時間思考一下。若是做為程式設計練習,而非多數人使用的話,那也應該要自我提出需求,看看怎麼做才能做到盡善盡美。



事前思考的重要性

看到這裡,我想你應該已經知道開發系統之前應該要事先規劃。

這就有點像是前置任務一樣,沒有解完這些任務,後面的任務就會變得困難或是無法進行。那在開發之前有哪些必須要完成的任務呢?同樣以留言板作為例子。



需求訪談

簡單來說就是問一下你的客戶或是使用者想要怎樣的功能,盡可能越明確越好,並且一點一點記錄下來。

你就跟周邊的朋友表明最近想寫一個留言板功能,看看他們有什麼想法,當然這想法務必越清晰、明確越好,這樣你在腦袋中才會有一個畫面。

不過,你記錄下來的功能不是那種很模糊的喔!像是以下的功能就超模糊的,應該要避免喔!

  • 你做的功能都很好用!我沒有什麼問題了! (這種最後會很難搞)
  • 我覺得畫面應該要有點科技感,剩下都可以! (科技感是...?)
  • 我想要有個等級制度,回文或新留言都可以累積積分 (積分目的是...?)
  • ...

當你的朋友提出需求時,盡可能越明確越好,最好要知道他們想要這些功能的目的背後有什麼原因,可能求方便、簡單、人性化...等等都好,就是不能是出於「直覺」,甚至是「主管交代」一句話帶過。即便是主管講的,一定都會有個深處的原因。


raw-image



你要知道越含糊不清的功能,越難將系統實作出來。當你問過越多的朋友,自然就會越來越懂他們想要的功能有哪些。



繪製系統初版畫面

在這個階段就是將你蒐集到的資料用一個視覺化的方式呈現出來,可以是手繪風、小畫家,甚至是高階的繪圖軟體都可以。

最重要的就是要讓一個抽象的概念具體化,節省你和朋友之間溝通的時間。看過具體的圖形之後,你的朋友一定會更加有概念,甚至還會表明某個位置希望增加上傳圖片的功能。

這時就可以立刻討論,而不會等到系統真正上線之後才發覺某個功能沒做好。

有時候初版畫面也不是討論一次就會結束的,可能要來來回回很多次,但總比程式改很多次輕鬆許多



開始寫程式啦!

到了這個階段才是寫程式!這時就依照之前討論的結果實作出之前討論的架構。

若是你有一個團隊,那就需要在這個階段之前增加一個分工的環節,各自依照所長去製作不同的功能。起初沒有什麼經費的情況下,以上我提到的這些內容都是自己要完成的,再不然就是找幾個志同道合的朋友一同完成這個專案。

這裡面也有很多細節可以更深入的探討,像是怎麼分工才會有效率、程式碼怎麼寫才能提升品質或是資料庫怎麼設計比較好,但這不是本篇探討的重點,未來再跟你分享。


raw-image



重複確認

雖然前面有做過初版討論,透過圖形化具體的展示出哪個功能應該長怎樣,但實際操作的感覺還是跟想像的會有一些落差。

為了縮小落差,我覺得系統尚未完成之前就將半成品給你的朋友事先看過是很重要的,他們可能會發現一些之前沒有想過的問題。

有一些問題可能不重要,例如文字的語意,只要問題不大也不會造成系統錯誤,這時就可以適時說服朋友。或者先以上線為目標,日後再進行修正也可以。

而會造成系統錯誤或是不太人性化的功能,既然早一點發現了,有辦法調整就先調整吧!雖然已經造成一點開發上的困擾了,但相比之下還是比正式上線造成的影響小很多。

這個步驟會一直持續到上線為止,盡量降低思想落差!



結論

我之前有分享過每種程式語言都有適合的時機,沒有好壞的區別。既然都已經找到的適合的時機,甚至還訂定出目標了,但請先別急著將你內心的想法實現出來。

因為經過幾年的經驗,我發現急著完成程式都不會有好下場,要嘛就是我做的功能跟使用者想得不一樣,或是我做的功能不是普羅大眾想要的。儘管前者發生的比例超高,但頭都洗下去了,除了重改還能怎麼辦呢?

因此,應該盡量讓使用者與開發者之間的想法差異最小化,你能讀懂他們內心的想法是最好的,當然這不是看過一兩本書,或是看我的文章就能夠立刻明白的事情,經驗還是最重要的

這次討論的議題比較像是心態面的事情,不知道有沒有讓你學到點什麼。如果太簡單或是還是太抽象,麻煩寫在留言區囉!這樣我才有辦法調整,甘溫唷!

不知道這篇的內容有沒有幫助到大家,有什麼想法都可以留言告訴我!若是有其他感興趣的話題,也歡迎跟我說,這樣我才有辦法調整撰文方向,甘溫唷!

除了平時寫寫技術文章,我自己也有經營一個攝影部落格,分享攝影技術、開箱以及旅遊,這些內容都不會放在這裡。感興趣的也歡迎去那邊訂閱喔!

◆ 攝影部落格:https://aidaidme.com/
◆ 歡迎來信:support@aidaidme.com

註:文中圖片源自 Pexel 或 Pixabay

留言
avatar-img
工程師布萊克的沙龍
9會員
9內容數
2022/04/24
職場上有許多同事關係需要處理,平輩之間相互討論是一件挺不錯的事情,但我認為碰上程式問題應該自我排除,增加自我學習能力。你身旁也有不斷提問的 Bug 同事嗎?歡迎來看看我是如何應對這些同事的。
Thumbnail
2022/04/24
職場上有許多同事關係需要處理,平輩之間相互討論是一件挺不錯的事情,但我認為碰上程式問題應該自我排除,增加自我學習能力。你身旁也有不斷提問的 Bug 同事嗎?歡迎來看看我是如何應對這些同事的。
Thumbnail
2022/04/10
科技業是許多人羨慕的行業,但若是現在已經步入中年,想要轉職到這個行業會不會太晚呢?我是覺得還好,實力能夠證明的。轉職前最重要的是做好相應的準備,才能夠贏過別人。
Thumbnail
2022/04/10
科技業是許多人羨慕的行業,但若是現在已經步入中年,想要轉職到這個行業會不會太晚呢?我是覺得還好,實力能夠證明的。轉職前最重要的是做好相應的準備,才能夠贏過別人。
Thumbnail
2021/07/19
你可能想踏入工程師的行業裡面看看自己適不適合,除了訓練思考之外,順便給自己一個磨練的機會嘗試看看,搞不好自己會深深愛上寫程式。不過,寫程式不能只是喜歡而已,更重要的是熱忱啊!這篇文章會跟你分享怎麼保持高度熱忱,讓你重回寫程式的興趣。
Thumbnail
2021/07/19
你可能想踏入工程師的行業裡面看看自己適不適合,除了訓練思考之外,順便給自己一個磨練的機會嘗試看看,搞不好自己會深深愛上寫程式。不過,寫程式不能只是喜歡而已,更重要的是熱忱啊!這篇文章會跟你分享怎麼保持高度熱忱,讓你重回寫程式的興趣。
Thumbnail
看更多
你可能也想看
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
「想測試一個新的主題或受眾時,要怎麼知道這個主題可以持續深耕?」我自己也曾經很困擾,因此來分享克服的方法。深耕一個主題不是容易的事情。這篇文章我要跟你分享自己的 3 步驟解決方法。
Thumbnail
「想測試一個新的主題或受眾時,要怎麼知道這個主題可以持續深耕?」我自己也曾經很困擾,因此來分享克服的方法。深耕一個主題不是容易的事情。這篇文章我要跟你分享自己的 3 步驟解決方法。
Thumbnail
先說,我不是寫作高手,我也很少在用社群軟體、沒有自帶流量,所以真的是白手起家。頂多是我有專業證照而已,但是我還沒辦法證明這個對寫文章有幫助。 我開始寫網誌的起心動念其實很簡單。就是我想把我還沒投稿出去的專業文章,放到方格子上來排版,我覺得比用word快很多。 我把之前寫的專業文章都放上來之後,剛開始
Thumbnail
先說,我不是寫作高手,我也很少在用社群軟體、沒有自帶流量,所以真的是白手起家。頂多是我有專業證照而已,但是我還沒辦法證明這個對寫文章有幫助。 我開始寫網誌的起心動念其實很簡單。就是我想把我還沒投稿出去的專業文章,放到方格子上來排版,我覺得比用word快很多。 我把之前寫的專業文章都放上來之後,剛開始
Thumbnail
  先說,我真的不是甚麼寫作高手。兩個禮拜前開始寫網誌的起心動念也很簡單。就是我想把我還沒投稿出去的「專業文章」。先放在方格子上面,想說可以用方格子來排版,比word快很多。   我把之前寫的專業文章都放上來之後,當然總瀏覽量幾天大概只有10而已吧。   因為我寫文章的基底很差,甚至連標點符號都太清
Thumbnail
  先說,我真的不是甚麼寫作高手。兩個禮拜前開始寫網誌的起心動念也很簡單。就是我想把我還沒投稿出去的「專業文章」。先放在方格子上面,想說可以用方格子來排版,比word快很多。   我把之前寫的專業文章都放上來之後,當然總瀏覽量幾天大概只有10而已吧。   因為我寫文章的基底很差,甚至連標點符號都太清
Thumbnail
2022年《Line貼圖製作》教你從創意發想到上架貼圖,慢學習者的經驗分享,從了解貼圖的遊戲規則、角色構思、貼圖製作、上架貼圖到推廣貼圖。 雖然己有很多貼圖教學文,各有不同的經驗分享,自己也是看了許多的教學文後,一步一步自己實際執行後,遇有難題再找答案,慢慢學完,寫寫自己的小心得,希望也能幫到別人。
Thumbnail
2022年《Line貼圖製作》教你從創意發想到上架貼圖,慢學習者的經驗分享,從了解貼圖的遊戲規則、角色構思、貼圖製作、上架貼圖到推廣貼圖。 雖然己有很多貼圖教學文,各有不同的經驗分享,自己也是看了許多的教學文後,一步一步自己實際執行後,遇有難題再找答案,慢慢學完,寫寫自己的小心得,希望也能幫到別人。
Thumbnail
這禮拜日我準備要開《高產出的本事》讀書會,分享自己從0到1的寫作流程給參加的同學。為了能更了解同學的問題,我特別設計了課前問卷,收集到 10+ 個學員在寫作上的痛。我特別挑選出9個具有代表性的問題 (痛點),分享Q&A給大家。我將問題分成3大類: (1)知識類 (2)技巧類 (3)心態類
Thumbnail
這禮拜日我準備要開《高產出的本事》讀書會,分享自己從0到1的寫作流程給參加的同學。為了能更了解同學的問題,我特別設計了課前問卷,收集到 10+ 個學員在寫作上的痛。我特別挑選出9個具有代表性的問題 (痛點),分享Q&A給大家。我將問題分成3大類: (1)知識類 (2)技巧類 (3)心態類
Thumbnail
把你的現況、你想解決的問題、你想不通的困境、或你卡關的任何專案鉅細靡遺地寫下來,你的大腦出現什麼,你就寫下什麼。這個過程很像是在和自己對話、討論,理論上你應該是最了解自己、最了解手上專案的那個人,當你寫下來的時候,其實也在剖析你自己的思路,如果世界上有一個人能夠全盤了解、解決你的問題...
Thumbnail
把你的現況、你想解決的問題、你想不通的困境、或你卡關的任何專案鉅細靡遺地寫下來,你的大腦出現什麼,你就寫下什麼。這個過程很像是在和自己對話、討論,理論上你應該是最了解自己、最了解手上專案的那個人,當你寫下來的時候,其實也在剖析你自己的思路,如果世界上有一個人能夠全盤了解、解決你的問題...
Thumbnail
我好不容易學會程式設計了,我想趕快來實作了!等等,先別急著將你內心的想法實現出來。你應該先問問使用者,並做一系列的思考規劃,也就是從最基本的需求訪談開始做起。這樣才能降低整個功能砍掉重練的可能性喔!
Thumbnail
我好不容易學會程式設計了,我想趕快來實作了!等等,先別急著將你內心的想法實現出來。你應該先問問使用者,並做一系列的思考規劃,也就是從最基本的需求訪談開始做起。這樣才能降低整個功能砍掉重練的可能性喔!
Thumbnail
『不知道要寫甚麼,那就直接開始寫吧』 剛開始從部落客凱若那裏看到這樣的文字,頓時感到困惑不解,不過實際執行起來的感覺,發現還真的是應該這樣沒錯!腦中有甚麼文字、情緒、感觸,就開始動手敲打鍵盤把它紀錄下來,一旦文字開始有了原點,很多思緒就會開始跑出來,開始知道自己想說甚麼,表達甚麼觀點、紀錄甚麼心情
Thumbnail
『不知道要寫甚麼,那就直接開始寫吧』 剛開始從部落客凱若那裏看到這樣的文字,頓時感到困惑不解,不過實際執行起來的感覺,發現還真的是應該這樣沒錯!腦中有甚麼文字、情緒、感觸,就開始動手敲打鍵盤把它紀錄下來,一旦文字開始有了原點,很多思緒就會開始跑出來,開始知道自己想說甚麼,表達甚麼觀點、紀錄甚麼心情
Thumbnail
一位朋友轉了他自己寫的文章讓我拜讀、並且問我的意見,於是我們二人進行了一段線上問答。對於這類跟技術有點相關的評論文章,我有自己慣用的一個架構,也藉這個機會提出來給大家參考。
Thumbnail
一位朋友轉了他自己寫的文章讓我拜讀、並且問我的意見,於是我們二人進行了一段線上問答。對於這類跟技術有點相關的評論文章,我有自己慣用的一個架構,也藉這個機會提出來給大家參考。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News