功能的厚度?— 從社群登入及推播說起

更新於 發佈於 閱讀時間約 5 分鐘
踏入工程師生涯也十幾個年頭了,這些年工作主體逐漸從開發轉向諮詢規劃。遊走於兩者之間總會碰到一些相持不下的時刻,比如 PM 覺得某某功能很重要,可工程部門一直想要說服說這個做不了。處理得好就是雙贏,處理得不好往往就是不歡而散。
不斷在各個維度間找平衡及妥協 — 這就是真實世界的開發。延續著之前的分享「從 60 個方案交付聊聊軟體開發經驗」,這裏繼續來拋個磚。
工程始終來自於實踐,我們也試著慢慢去分享過往開發經驗,歡迎大家一起來討論~

工程師視角 vs. 產品設計視角

當一個新的產品及服務放到你面前的時候,你是怎麼去理解一個產品的?
會想去找說明書來研究還是試著玩來去逼近整體圖像。前者追尋「how」比較接近工程師思維,而後者探討「what」可能更接近產品經理。這是個很簡略的敘述跟刻板的印象,但我想講的是一個事物有多種不同的觀看方式
那所以問題就來了,不管你怎麼去觀看,事物總是一步一步建構起來的,失之方向與失之細節是同等危險的

資訊技術快速進步,但本質性商務問題還是個個不同

二十年前如果能開發出網路相簿系統會是一件轟動市場的事情。但今天如果你要一個相簿,一兩天開發出雛形並不是太困難。
是什麼讓這件事難度下降?其實難度並沒有下降,只是技術進步,各式各樣的工具大幅度解決了通用問題 — 可本質的商務需求疑難卻依然還在 (試想一下,二十年前相簿系統,其需求規格和今天大不相同的)
站在巨人的肩膀確實能看得更遠,但不要忘記巨人不停在長高,如何站穩變成了一個現代開發避不開的問題。
以下我們就以兩個常見的需求來做些討論。
「人月神話」一書清楚闡述了軟體開發的本質性問題及附屬性問題

範例一:什麼是社群登入?

適當的使用社群登入能有效縮短用戶接入服務的難度,更能夠在一定程度上取得 email 這些進階資訊。看起來在建構帳戶系統時把 Google、Facebook 這些社群登入納入規格似乎是個不太需要討論的事情。
但我們來想一下當一個系統支援社群登入時代表了什麼其他意義?
  1. 社群登入其實是第三方整合,要注意維運的規劃
    社群登入作為 Google 及 Facebook 提供的服務,相關規格及條款是掌握在他們手上的。所以導入之後就代表維運新增需要持續追蹤的任務。
  2. 社群登入可取得的資料不盡相同,要注意系統內如何統合不同來源的資料
    如果你的服務會需要對應到真實世界的用戶身份(如號碼或 email),如果不同社群登入給的資料不同該怎麼辦?該如何以 UI/UX 設計收回缺失資料?
  3. 成熟的商業服務可能跨 WEB / APP 等多構面,要適當規劃開發方向
    當今的軟體服務可能會在多種載體上提供服務,如 APP、Web 甚至純桌面程式。當你決定納入社群登入功能後,就要考慮多種載體如何整合的後續工程問題。(延伸:可以參考一下微前端 (micro-frontend)的概念)
image from https://user65635.pse.is/3c43ts

範例二:什麼是 APP 推播?

如果請你列出 APP 有哪些 Web 不具備的能力,相信推播功能應該會是前幾名的答案(當然 Web 有自己的推播機制,但相對不成熟)。作為作業系統原生提供的通知機制,在很多情境中推播可以很好的起到黏住用戶及行銷推廣的目的。看起來整合這個功能也是勢在必行囉。
可當我們在提起推播功能整合時,到底又代表了什麼呢?
  1. 推播本質上是會員系統的擴充
    蠻多開發者在關注推播功能時往往只注意價格及導入難度,卻忽略了其實推播是植基於會員系統之上的互動。所有會員系統可能遇到的議題都得在這裡注意,比如是否允許多裝置及如何控管帳號合併等。更有甚者,有多少系統因為用了 AWS 的推播功能而使整個會員系統得完全進到 AWS 生態系。
  2. 推播內容管理牽涉到後續行銷的流程
    假如你的系統有多語系甚至希望做到不同載體有不同訊息,那後台系統該如何設計呢?這裡需要引入的視角是行銷及品牌經營,這些衍生的參與者該怎樣做需求釐清及控管也是個工程。
  3. 用戶對於推播的授權到哪個層級需要被討論
    推播是把雙刃劍,對用戶來說它是資訊通知或是垃圾訊息取決於頻次即可控制的粒度。推播的底層單位是「則」,但架構在商業行為上卻往往是「情境」。該如何讓用戶能控制想看到的範圍也涉及系統設計及實作。
image from https://pse.is/3b6hfx

為山九仞,功虧一簣?

簡單地舉了兩個例子做個觀察,希望能讓大家從中看到一點什麼。
「系統上線後沒有 bug 只有 feature」這句話看似戲謔卻也在一定程度反應了現代工程開發的真實困境。很多軟體開發的坑是可以在初期防範於未然的,畢竟解決 bug 的最好方式就是別讓 bug 出現
平常跟協作方溝通時我常常將之稱為「功能的厚度」,指的是那些乍看之下簡單、深想卻覺得並不容易的狀況。事實上人力有時而窮,不可能做好完整規劃再出發(其實也不太可能算無遺策),只能靠時時注意這些潛在的功能影響面來確保一路平安。
而如何徹底解決這些問題 … 應該會是個永久的追尋,畢竟它來自於對服務價值及工程掌握度的永恆拉扯。但話又說回來,這也是軟體產品開發如此吸引人的原因不是嗎?
為什麼會看到廣告
avatar-img
18會員
33內容數
從超過 50 個合作經驗中擷取在系統開發、顧問及營運上的經驗及心得
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Sam Huang的沙龍 的其他內容
2020 新冠疫情的突然來襲,直接為世界按下了暫停鍵。除了旅遊住宿這些傳統被視為相對穩健的產業受到極大的傷害之外,連帶也讓周邊產業也受到輕重不一的損失。
回顧過往,參與協作了超過 60 個軟體方案。 曾接觸過合作內容差異頗大,比如 仔細看看也還蠻多面向的,未來好像可以就這些部分做些分享交流。但總會想到一件事,到底這些開發裡頭到底都在做些什麼? 身為設計師是否常常覺得某些著名產品的體驗不好?比如該對齊沒對齊或重要功能拜放在很難找到的地方。
2020 新冠疫情的突然來襲,直接為世界按下了暫停鍵。除了旅遊住宿這些傳統被視為相對穩健的產業受到極大的傷害之外,連帶也讓周邊產業也受到輕重不一的損失。
回顧過往,參與協作了超過 60 個軟體方案。 曾接觸過合作內容差異頗大,比如 仔細看看也還蠻多面向的,未來好像可以就這些部分做些分享交流。但總會想到一件事,到底這些開發裡頭到底都在做些什麼? 身為設計師是否常常覺得某些著名產品的體驗不好?比如該對齊沒對齊或重要功能拜放在很難找到的地方。
你可能也想看
Google News 追蹤
Thumbnail
/ 大家現在出門買東西還會帶錢包嗎 鴨鴨發現自己好像快一個禮拜沒帶錢包出門 還是可以天天買滿買好回家(? 因此為了記錄手機消費跟各種紅利優惠 鴨鴨都會特別注意銀行的App好不好用! 像是介面設計就是會很在意的地方 很多銀行通常會為了要滿足不同客群 會推出很多App讓使用者下載 每次
Thumbnail
這篇文章探討了工程師在如何有效提升自己,強調不僅僅是多coding,而是要對程式碼有更深層的理解。隨著職涯發展,工程師需要從單純的技術執行者轉變為團隊領導者,具備解決複雜問題和與他人有效溝通的能力。
Thumbnail
工程師希望能釐清任務的輕重緩急,其中那些「看起來不錯,但目前重要性沒那麼高」的任務,就叫做 nice-to-have...
Thumbnail
實際就業後,會發現收集與分析需求,通常都不是工程師在做,會有另一群人,以非工程的角度收集及分析需求,然後在開發過程中蹦出不同的火花,於是很好奇另一群人的想法是什麼?我不敢說這本書能完全代表另一群人的想法,但確實能夠得到很多有用的思維。推薦給所有的軟體工程師。
Thumbnail
軟體系統的發展歷程大多相似,首重解決基本需求、提供操作介面,進而提升安全性、擴充功能、優化操作。
Thumbnail
當你開始創業時,有一個客戶開發系統是很重要的。這個系統將説明你識別和瞭解你的目標市場,並與潛在客戶發展關係。
Thumbnail
「聯絡我們」頁面,對於許多人來說,可能只是一個填寫表格或放置聯絡資訊的地方。然而,在服務客戶的過程中,我經常被問到:網站真的需要這樣的頁面嗎?事實上,現今的聯絡方式多樣化,可以根據不同的需求和情境進行設計,讓我們來看看具體如何做。 服務性質的考量 考慮服務的性質是第一步。通常,服務性質會涵蓋多個
Thumbnail
追求乾淨的程式碼是好的開始,但不要陷入過度設計的陷阱,導致程式難以維護。實際上,考慮團隊狀況和專注於解決真正的問題更為重要。了解公司的規模和現實情況,適時調整工作重心。技術不斷進步,使得寫程式變得更加容易,但這並不意味著工程師的角色會消失。在選擇技術時,也要考慮隱形成本有時簡單的解決方案反而更有效。
Thumbnail
替產業做設計 有人要我談程式設計,那我就稍微談一下。我從事的大都是產業的工作,所以我們也從如何替產業做設計來談起。基本上,每個產業都會有自己的作業流程,大同小異。但是基礎來做都是一樣的,都會有客戶、物料、產品、供應商、員工等資料。不同的是,由於企業型態的不同,他們每個人有不同的作業流程。這個作業流
許多人常說電腦手機發展,使人與人之間的彼此的感情變得冷漠,但事實上人們從網路千禧年爆發以來,就有不少熱門的社群軟體,主軸仍然是社交。例如:PTT、奇摩即時通、台灣論壇、無名小站等,直到現在大家熟知的FB、IG、推特,甚至最新的抖音和小紅書短影片為首的社群。這些經過好幾十年,仍然是3C發展不可或缺的一
Thumbnail
/ 大家現在出門買東西還會帶錢包嗎 鴨鴨發現自己好像快一個禮拜沒帶錢包出門 還是可以天天買滿買好回家(? 因此為了記錄手機消費跟各種紅利優惠 鴨鴨都會特別注意銀行的App好不好用! 像是介面設計就是會很在意的地方 很多銀行通常會為了要滿足不同客群 會推出很多App讓使用者下載 每次
Thumbnail
這篇文章探討了工程師在如何有效提升自己,強調不僅僅是多coding,而是要對程式碼有更深層的理解。隨著職涯發展,工程師需要從單純的技術執行者轉變為團隊領導者,具備解決複雜問題和與他人有效溝通的能力。
Thumbnail
工程師希望能釐清任務的輕重緩急,其中那些「看起來不錯,但目前重要性沒那麼高」的任務,就叫做 nice-to-have...
Thumbnail
實際就業後,會發現收集與分析需求,通常都不是工程師在做,會有另一群人,以非工程的角度收集及分析需求,然後在開發過程中蹦出不同的火花,於是很好奇另一群人的想法是什麼?我不敢說這本書能完全代表另一群人的想法,但確實能夠得到很多有用的思維。推薦給所有的軟體工程師。
Thumbnail
軟體系統的發展歷程大多相似,首重解決基本需求、提供操作介面,進而提升安全性、擴充功能、優化操作。
Thumbnail
當你開始創業時,有一個客戶開發系統是很重要的。這個系統將説明你識別和瞭解你的目標市場,並與潛在客戶發展關係。
Thumbnail
「聯絡我們」頁面,對於許多人來說,可能只是一個填寫表格或放置聯絡資訊的地方。然而,在服務客戶的過程中,我經常被問到:網站真的需要這樣的頁面嗎?事實上,現今的聯絡方式多樣化,可以根據不同的需求和情境進行設計,讓我們來看看具體如何做。 服務性質的考量 考慮服務的性質是第一步。通常,服務性質會涵蓋多個
Thumbnail
追求乾淨的程式碼是好的開始,但不要陷入過度設計的陷阱,導致程式難以維護。實際上,考慮團隊狀況和專注於解決真正的問題更為重要。了解公司的規模和現實情況,適時調整工作重心。技術不斷進步,使得寫程式變得更加容易,但這並不意味著工程師的角色會消失。在選擇技術時,也要考慮隱形成本有時簡單的解決方案反而更有效。
Thumbnail
替產業做設計 有人要我談程式設計,那我就稍微談一下。我從事的大都是產業的工作,所以我們也從如何替產業做設計來談起。基本上,每個產業都會有自己的作業流程,大同小異。但是基礎來做都是一樣的,都會有客戶、物料、產品、供應商、員工等資料。不同的是,由於企業型態的不同,他們每個人有不同的作業流程。這個作業流
許多人常說電腦手機發展,使人與人之間的彼此的感情變得冷漠,但事實上人們從網路千禧年爆發以來,就有不少熱門的社群軟體,主軸仍然是社交。例如:PTT、奇摩即時通、台灣論壇、無名小站等,直到現在大家熟知的FB、IG、推特,甚至最新的抖音和小紅書短影片為首的社群。這些經過好幾十年,仍然是3C發展不可或缺的一