---
title: "將需求實現的準備 - Rails 開發實踐"
date: 2023-07-14T00:00:00+08:00
publishDate: 2023-07-14T00:00:00+08:00
lastmod: 2023-09-03T17:33:12+08:00
tags: ["經驗","心得","Rails","Rails 開發實踐"]
series: "rails-in-practice"
toc: true
permalink: "https://blog.aotoki.me/posts/2023/07/14/rails-in-practice-prepare-for-requirement/"
language: "zh-tw"
---


我們想要去「實踐」一個想法，大多數情況都是「做看看」來驗證是否可以成功，然而在這個過程中，我們需要有多少次的失敗呢？同時，為什麼有些人總是很容易的就成功，而自己卻總是沒辦法順利前進呢？

<!--more-->

## 科學的方法{#science}

印象中，我突然發現一些讀過研究所（碩士、博士）的朋友，在處理事情的方式跟手法跟自己是非常不一樣的，這時候我才意識到高等教育要學習的其實就是如何用科學的去解決問題。

然而，這是一件說起來容易卻相當困難的事情，尤其在我們的文化中「提問」是難以開口的，但這卻是我們要實現想法非常關鍵的一個步驟。我們需要去問需求提供者，他所想像的是什麼，然後去驗證我們能不能實現。

> 後來我從一些業界前輩、顧問相關主題的書上，都發現了類似的處理方式，也就是要去找到問題的核心。

## 不精確的需求{#requirement}

什麼是使用者需求呢？簡單來說就是像肚子餓、想回家這樣的問題，但是當我們深入思考「肚子餓」的原因時，又會發現對方有許多東西都不想吃，最後只能用萬能的「麥當勞」來解決問題。

實際上，不想吃的原因如果是在自己一個人的情況，我們是可以精確的區分出像是昨天吃過、正在減肥、宗教信仰等等問題，但在面對其他人的時候我們並沒有這麼多情報，因此就需要透過分析需求的方式來找到「規格」並且提供恰當的解決方案。

> 有段時間我為了能讓喜歡的女生喜歡自己，花了不少時間學習，像是「吃飯」的問題也是很常在兩性關係的主題被提到，雖然當時我沒辦法意識到分析問題的方式，另外就是在軟體開發領域的問題分析太過詳細也許會變成反效果也說不定。

## 規格的確立{#specification}

規格（Specification）跟需求（Requirement）最大的差異就是精確程度，如果是規格可能會說「想吃青花椒的麻辣鍋」但如果是需求頂多會得到「肚子餓」或者「想吃火鍋」之類的訊息。

我們在學習的過程中，大多是使用教材設定好的規格，因此在實際工作的時候是很難預測到客戶會給出怎樣的要求，最後就變成「腦補」的形式去實現功能，那麼就有可能是不合要求，或者看似正常卻隱藏不少問題。

幸好這些問題經過業界前輩們多年的努力，還有數百年來科學家累積的經驗，我們是有一套有系統的方式，逐步地推進去理解並找出規格的。

