做為軟體工程師,我們的工作目的是什麼?這個問題困擾我很久。趁著這一次的轉職空檔,讀到了*Bret在2006年所寫的電子書《Magic Ink: Information Software and The Graphical Interface》。在書中,他提出了人類使用軟體的三大目的:學習、創造、溝通,這三大目的對應到的軟體類別分別是*Information Software(資訊軟體)、*Manipulation Software(編輯軟體)和*Communication Software(通訊軟體)。
書裡也提到,我們在日常生活和工作中使用的軟體大多數都屬於Information Software。無論是氣象學家預測未來天氣狀況,投資者追蹤股票市場的投資績效,網路工程師監控網站流量,或是一般人使用新聞應用程式、健康追蹤應用程式、地圖應用程式導航路線,這些都是為了能夠快速有效地獲取與更新自己對某件事物的認知。
定錨在另一觀點:“人類擅長視覺能力;計算機擅長運算能力”。人類可以快速地識別物體、判斷方向、識別顏色。我們的視覺系統可以在複雜的環境中提取有用的信息,並結合我們的記憶和認知能力來理解所看到的事務;計算機特別擅長進行高速且精確的數據運算。這是因為它們被設計成可以快速地執行一系列的算術和邏輯運算,並且不會像人類一樣出現疲勞或錯誤。
總結上述,軟體工程師開發軟體的使命,就是幫助人類將無形的資訊具象化。我們每天使用的軟體,無論是手機或電腦軟體,都在做兩件基本的事情:一是將我們看不見的資訊數據,以我們能理解的方式呈現出來;二是讓我們能透過軟體去操作那些原本看不見的資訊。
當我們(軟體工程師)在設計軟體時,我們的目標不應該只是提供各式各樣的互動或按鈕,而是該以理解使用者所處的問題脈絡、並在該脈絡下幫助使用者更有效地更新認知為目的,拓展使用者思考的邊界。
該如何達成這使命,我認為我們可以參考Magic Ink書內的設計原則:
1.Context-Sensitive Information Graphic:資訊圖形介面應該根據使用者的需求和情境來以直觀且易於理解呈現方式,提供足夠的上下文資訊,幫助使用者理解資訊。
2.Fluid Interaction:使用者應該透過軟體讓使用者即時地與資訊互動。例如,如果正在使用一個地圖應用程式,應該要能夠即時地縮放地圖、移動地圖,並且看到地圖隨著你的操作而即時更新,而不是透過繁複的命令或操作。
3.Incremental Construction:讓使用者能夠逐步地探索和理解資訊,並在每個階段都提供反饋和評估,在這樣的過程中逐步建立使用者對資訊的理解和知識。關於反饋的重要推薦延伸閱讀:Nudge推出你的影響力:每個人都可以影響別人、改善決策,做人生的選擇設計師
透過這樣的原則,創造出更直觀、更易於使用的資訊軟體,從而提高使用者的使用效率和滿意度。
反思第一份工作的內容:
第一份工作裡所負責的系統屬於Information Software,開發過程中常會有”這樣對嗎”,”這樣好用嗎”的想法,卻沒有一個依據可以解構我的疑問,所以才有這篇文章。企業裡的分工一定是不同角色各司其職,作為軟體工程師,一定會碰到”感覺流”的決策方式,如何避免”我覺得”造成產品的風險,我們可以區分不同角色來促使產品與組織的進步:
1.Junior Engineer:應專注於”持續學習和改進”與練習“將大任務分解為小任務逐步完成”。比如被分配了一個任務:建立一個新的網站,這是一個大任務,但可以被分解為許多小任務:設計用戶界面、建立資料庫資料表、實現前端和後端的交互等。
2.Senior Engineer:除了Junior Engineer的責任外,還需要負責”數據驅動的決策”,參考設計指南Design Guideline是一個有助於數據驅動的決策方式。設計指南Design Guideline通常基於大量的用戶研究和數據分析,並提供了如何設計和實現產品的最佳實踐。除此之外也可以使用其他的數據驅動的方法,如A/B測試,用戶調查,數據分析等,以此驅動決策和工作內容。
3.Manager Level:確保產品符合所有原則,與重視團隊的”透明和開放的溝通”,並留意溝通的頻率,創建一個開放和透明的溝通環境,並確保所有的員工都能夠看到相同的資訊。Manager通常擁有較多的經驗與智慧,更應確保團隊能夠使用數據來驅動決策,並提供必要的支援和資源來促進團隊持續學習和改進。
*Bret: Bret Victor(wiki)
*Information Software的主要目的是提供使用者所需的信息。例如,天氣預報應用程式就是一種資訊軟體,它提供了使用者需要的天氣信息。這種軟體的主要特點是它們的使用者界面設計,通常是為了使信息的獲取和理解盡可能地簡單和直觀。
*Manipulation Software的主要目的是讓使用者能夠操作和修改數據或信息。例如,文檔編輯器或圖像編輯軟體就是操作軟體的例子。這種軟體的主要特點是它們提供了一系列的工具和功能,讓使用者能夠按照自己的需求來修改和操作數據。
*Communication Software的主要目的是讓使用者能夠與其他人進行通信。例如,電子郵件客戶端或即時通訊應用程式就是通信軟體的例子。這種軟體的主要特點是它們提供了一種平台,讓使用者能夠發送和接收信息,並與其他人進行互動。