2014年7月11日 星期五

Before leave. - 工作(2)

在實習的這一年Team 正在進行一個供內部使用的專案,是以網站的形式呈現。

大約在12月的某天,Mike說:「你可以研究一下Windows phone app要怎麼開發嗎?」

當下我說:「じょうとうだ!」「喔喔好噢。」

示意圖



其實之前想做mobile app很久了,有這個機會真是覺得受寵若驚。

殊不知就此開啟了一段探索Windows phone 的新的旅程。


一開始甚至連資料都沒有,因為內部還沒有成熟的API可供使用。

Mike說那先自己建立一些假資料吧!

於是憑藉著幾乎為零的SQL 知識,試構想可能的資料結構之內容。

又因為Windows phone 不能直接對SQL 資料庫做Query,

要為兩者中間建立一個WCF Service 由其來代勞並提供API 給手機。

又因為是供內部使用的App,必須要提供使用者認證機制,

努力翻找公司內部的文件,好不容易找到Solution但等弄懂又是過一個禮拜了。



這些其實當初做的有點暴躁,因為很想趕快進入App的部分(XD)。

示意圖

但實際做過之後,對這些工具有所了解,真的是一個很大的收獲。

其中深深佩服Linq的優美,與Rails 的ActiveRecord 有異曲同工感。

而Linq to SQL 因為有Visual Studio的輔助而更顯得強大好用了。

一開始也覺得WCF Service 雖然要設定許多Config 很麻煩,

但在手機的Project 裡可以直接呼叫其函式,而不是透過Url 來使用,真的很讓人驚豔。

更別提之後與其他實習生一起組隊參加微軟黑客松,這些東西每個都派上用場了!



不過等假資料的東西呈現在手機上後,又因為公司內部的API還是沒有Ready。

所以App又先暫時時被擺在一旁,跑去幫Kim寫Test case。

到API Ready,已是五月的事了。

雖然並不是所有功能都成熟,但已經有許多可供使用。

在資料的部分不成問題後,我更能專注在Windows phone App的本體上了。

包括版面設計、元件的使用、與使用者的體驗上。



在Windows phone App的元件或許比其他的平台的少了一些。

但使用上也是有這些便堪堪足夠!

這是在開發時體會到Windows phone他的設計邏輯而得到的結論。

Windows phone app 元件在設計上要注意許多細節,否則總會覺得「怎麼哪裡怪怪的」。

我想這是因為Windows phone 極端扁平化與以文字為重,必須了解其設計法則。

雖然呈現上總會需要停下來思考,但讓我想到在Rails 聽到的一句話:「Constraint are liberating 」

在設計上的侷限,迫使開發者思考如何找出每個頁面最重要的資訊,進而呈現與強調之。



在實習的尾聲,許多設計上都是由我自己進行思考,再詢問Mike是否有哪裡需要做修正。

以我至今的Windows phone App開發的經驗,雖可能不足以做出令人驚豔的設計,

但要能符合其規則的單純簡潔與以資料為重的版面卻是不成問題。

這都要感謝Mike許多事都由我自己去思考如何呈現。

除了設計上,在程式的部分也是獲益良多。

其中有了解了MVVM的架構,對於C# 的Property功能也是愛不釋手。

最重要的也是因為複雜的資料查詢、過濾、分組功能。

讓我好一段時間努力思考其程式的架構,找出最相近的概念、分成相同層級的模式等等。

對於我蠻貧弱的抽象思考能力有如醍醐灌頂,在自己想出來的那一刻。



在開發的過程中,除了Kim一開始借我的HTC 8X到Kabin的8X,到後來自己終於被推坑買了Lumia 920。

我想實習結束後我也會來開發自己的Windows phone App吧!(XD)



總之,在實習倒數兩個禮拜時,每天瘋狂加班希望可以做出更進一步的功能,也如願以償。

在離職前Mike跟我說這個App不只是個Project,其中牽涉到認證、API服務等,已經是個Solution了!

最後交接的三天,有個「我已經沒有待要在這裡,但這個App卻會持續走下去」的感覺啊。

害我忍不住想起第一次面試的場景,有位有點奇葩的同學在面試官問說為什麼想來微軟實習時,

他說:「希望等我老了我可以跟我孫子提到說,你看這行Code就是爺爺當初寫的喔。」

因為是供內部使用的App我想要不是我以後加入微軟,大概也很難指著這個App跟孫子說吧!(XD)

但我還是很開心能完成這樣的一個Project ,對我的實習有更廣面向的接觸與學習。:)

沒有留言:

張貼留言