今天要來聊聊如何開發App或網站。一樣,我覺得這種技術並不是「學校上個課就可以學到的東西」。
先說說我自己的經驗,當初自己對軟體工程師的想像也是「製作產品的人」。而以政大資管來說,大一的程式設計教的語言為Java,期中期末都是考物件導向的觀念,題目大致上就是改改小考、lab作業,老師會給一個類似系統分析文件的檔案,用紙筆寫下code,這都是上學期。
而下學期時,老師會帶我們認識Android studio,但是不會教如何開發,期末報告就是寫出一支App。也就在當時,我製作了第一款自己的App,一款餐廳的推薦指南。之後擱置了一段時間沒有碰軟體開發,直到今年大二寒假,看了一個禮拜的swift(開發ios app的語言)就寫了大概四、五支小ios App出來,下學期開始踏入網頁的坑,也寫了一個找飯友的網站,不過還沒完成就是。
我覺得,開發App比開發網站簡易許多,怎麼說呢,以ios為例,前端頁面完全可以用「拉」的,把素材拖拉一下就可以配製出一個頁面。
更遑論網路上有一堆模板可以套,就跟PPT很像,可以將別人做好的PTT套用在自己的報告裡面。
寫程式也是,喜歡哪個UI,稍微研究一下就可以把它變成自己的App頁面。
這邊先補充一下,軟體通常有前、後端之分,前端就是展現使用者看到的部分、畫面、按鈕等等…而使用者紀錄、金流、帳號驗證等「看不到的東西」就會交給後端,通常這兩個部分會交給不同的人寫,還有一個詞是「全端工程師」,一條龍負責開發產品(畢竟來回溝通的成本實在太高了)。所以手機前端就很好完成了,而網頁就不是這樣,光是前端就是一條漫長的學習之路,框架時常翻新,各有各的愛好者。
那我是如何開發App的呢?其實就是上一篇所說的:「第九講:寫程式的情境,軟體開發是怎麼一回事」。在這道流程之中,開發App位於「撰寫程式」的階段,步驟大致上是:
- 確認要製作的功能(查看data model , wireframe , prototype)
- 學習相關技術(買書、看文件、看影片)
- 簡單測試一下自己理解這道技術的程度
- 照著PRD開發
確認要製作的功能:
這邊我們需要密集與團隊中產品經理討論,跟設計師溝通版型、前端展示等等….有些太天馬行空的想法如果要花許多時間修跟學習,就可以考慮提出擱置,先完成大概的系統再說。之前自己就碰過開會一次就要馬上寫程式的團隊,我是覺得過於魯莽,因為沒有好好確認就寫的成本實在太大了,中間絕對會碰到很多問題。好比讀完一本書就馬上小考,其實會發現做題做到一半經常會冒出:「ㄜ…下一步是?」的疑問,就是對細節的不熟悉,至少要做個prototype出來。
學習相關技術(買書、看文件、看影片)
學習相關技術其實就只是大概看一下這門語言、系統有哪些功能、套件可以用,也是這個時候去Github找類似專案研究code,這裡絕對不會花太多時間,因為「做中學」真的是最快的,PRD有什麼就去學什麼,學以致用才能加快速度。當然平常也要自己額外花點時間進修、練技術,不然技術更新得實在太快,其實不是很有熱忱在學習新東西的人,不適合當寫程式的人。
簡單測試一下自己理解這道技術的程度
最簡單,就是做個todo list,資料科學做個鐵達尼號生存者…..電腦科學每個領域在技術上,都有一份Hello world等級的專案,以App跟Web來說就是待辦清單,寫個增刪查改的功能,可以讓自己熟悉資料流以及介面、API串接,練習做簡單的專案可以讓自己對技術有個大概的理解。
照著PRD開發
PRD就是產品需求文件,列出需求、功能、細節,讓工程師可以更專注在實現需求上。這裡有一份詳細的說明:https://www.pmtone.com/mrd-vs-prd/
之前跟Pinkoi的Mosky有過一次mentor coffee chat,我很喜歡她的一句話:
「Make it work , make it right , make it faster . 」
我寫程式的確就是如此,先讓它能跑再說,之後改良為符合自己情境的code,最後做優化,讓效能提升。
碰到新技術、不會的東西絕對不要太氣餒,一步一步來,還能享受到解決問題的快樂!
那麼以上,就是第十講,我們下篇文章見!
好文作者轉自—Dennis Dsh