tag:blogger.com,1999:blog-59745901904042242982024-03-06T00:04:58.984+08:00霹靂開發邦分享開發和經營的兩三事。Unknownnoreply@blogger.comBlogger3125tag:blogger.com,1999:blog-5974590190404224298.post-42061025199226640442014-04-28T08:36:00.003+08:002014-04-28T08:38:20.122+08:00新技術的採用,先考量成本和效益最近發生了一件事,就是我又掉進了要不要採用「新東西」的胡同裡。這個新東西,叫作 angular js ,最後我的決定是不採用 angular js,並且把已經採用 angular js 的專案,改寫回傳統的 jquery 版本。這一篇文章就是在說明過去的經驗,以及相關的決策。<br />
<br />
<h3>
Google AppEngine (python)</h3>
好幾年前我很愛 Google ,當 Google App Engine 一推出的時候,我二話不說就買了一本書,由於白天還在上班,大概前後花了半個月的閒餘時間,換算成全職大概是2~3天吧!才把 python + Google AppEngine 搞懂。當初更熱血的是,我把工具邦由 PHP 整個搬移到 Google App Engine 上了!當初搬過去的原因大概是:<br />
<br />
<ol>
<li>寫 python 好像很利害</li>
<li>Google AppEngine 上面好便宜</li>
</ol>
<br />
我來解釋理由一 ,當你做了一個決定時,你一定可以在網路上找到許多取暖文章,說 python的好:易讀、簡短、好維護、Google 都用 python。(這個跟政治還蠻類似的);而你反過來查詢你正要遺棄的 PHP ,也可以找到許多咒罵的文章。所以沒人能阻止我,我就搬過去了。理由二就不用解釋了,我當初搬過去時,每個月都不用付錢。<br />
<br />
<a name='more'></a><br />
兩年後,在 Google App Engine 漲價了幾十倍之後,我重新思考了 python 的架構,並做出一個重大的決定:搬回 PHP。理由如下:<br />
<br />
<ol>
<li>python 很難!而且不適合用做 web 語言</li>
<li>Google App Engine 變得很貴很貴</li>
</ol>
<div>
寫一個 hello world 要多久? 這是判斷一個新技術要採用的最佳辦法。 一個技術太難,人才就不好找。創業注重的在於你 busniess model 如何快速轉變和執行,產品的生產速度,而不是你用了多高的科技。hello world 簡單,其它地方也一定簡單;hello world 複雜,其它方法也會更複雜,debug 也就更難了。再者,python 不是 web 專用的語言,php 的 urlencode ,我上一次為了這個函數的查詢 document 大概是10年前學 php 的時候,因為太簡單好記了;而 python 就要查 document ,要先 import urllib ,又或者是 urllib2 ,而且 python 2 和 python 3 又不一樣!用 php 我花5秒鐘寫好了 urlencode ,python 我要花 50秒在寫 urlencode ,生產力差十倍!當然, hello world 只要一行和 hello world 要十行的程式,請問維護成本誰比較高呢?</div>
<div>
<br /></div>
<h3>
angular js</h3>
<div>
記得在 2007 年,我以新鮮人的身份加入了公司,部門每週一次的資訊分享,我分享了一個正掘起的新技術,叫作 jQuery ,在學習 jQuery 之前,我也摸過 prototype js ,當時覺得 prototype js 太複雜了,而 jQuery 的新潮的 coding style ,解決和簡化了前端開發。學 jQuery 要多久?可能幾個小時就可以,在新的專案中就可以很輕易的導入。</div>
<div>
<br /></div>
<div>
而另一個最重要的問題是,導入 jQuery 的生產力有沒有提升?我想答案已經夠明顯了。</div>
<div>
<br /></div>
<div>
那再來反觀 angular js ,當初我先請同事用 angular js 在新的專案導入,同事寫好了 angular js 版本的程式,在專案尾聲時,我要做 code review ,才發現我看不懂!於是我花了一個休假日,跟著 angular js 官方的tutorial 做一遍,我理解了 angular js 了嗎?我只能說,如果有一個三天的前端程式,我可能要花五天來進行導入。又花了一個下午的時間來研究同事的 angular 版本的前端程式,做了幾個重大的 comment:</div>
<div>
<ol>
<li>因為 SEO 因素要把 angular 改成半殘:angular 用 js 透過 template 來產生 html,不能這樣用!因為 SEO 不好,要改!</li>
<li>因為效能考量又要把 angular 漂亮的 data model 給改壞:採用了兩個 data model 來顯示兩件不同的東西,但這會造成 2 個 ajax requests,要合併為一個</li>
<li>把 angular 漂亮的 angular service 改成四不像:由於 data model 的資料是來自 server ,所以在頁面 load 出來的時候,angular 會透過 ajax 來要資料。但 mobile 上 request 很珍貴,不能這麼做!也就是說 第一個 ajax 的資料要和頁面一起載入</li>
</ol>
</div>
上述的理由讓我們難以採用 angular js ,再來反觀 angular js 的本質<br />
<br />
<ol>
<li>前端程式用 MVC 切開,程式碼並不會變得比較短。</li>
<li>angular js 並不會讓成本降低,因為</li>
<ol>
<li>學習的曲線很高</li>
<li>程式碼並不會比較短。</li>
<li>維護也相對比較複雜</li>
</ol>
</ol>
<br />
於是最後決定:放棄導入,改寫回傳統的 jquery style ,以利後續維護。<br />
<br />
<h3>
結論</h3>
技術開發和導入是不一樣的。當前的新技術很多,像是 nodejs、angularjs、backbone js、laveral php、RoR 等...,但導入就要有實質的成本和效益的考量,兩個工程師多花一週來學習、導入、轉換等於多花了少錢?新的技術都會說明自己可以解決很多問題、提升很多問題。就像是保健食品一樣,你吃了這麼多年真的有變強壯嗎?<br />
<br />
導入的另一面則是開發,開發可以重覆使用的 library 。 工具邦自己專有的 library 就有五個以上,這些 library 是依據我們專有的需求來開發的,我們會先尋找 open source 有沒有相關的解決方案,沒有,我們再自行開發!預計還有很多 library 要開發,要花時間在自己的需求上。<br />
<br />
接觸外頭的新技術是必要的。我知道 node.js 很多年了,始終沒有去接觸,因為想不到能為工具邦帶來什麼轉變。直到最近 phantom js,才為此眼睛一亮,因為似乎可以用來偵測頁面上的 javascript 是否會發生錯誤,可以解決長久以來的問題。<br />
<br />Unknownnoreply@blogger.comtag:blogger.com,1999:blog-5974590190404224298.post-25242949629974346322013-12-31T16:28:00.000+08:002013-12-31T20:37:34.199+08:00國道計程收費地圖的開發日誌<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://tw.piliapp.com/tw-highway/" target="_blank">國道計程收費、交流道地圖</a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
大概一個月前開始注意到國道要計程收費,心中有在想著要製作相關的網路工具,因為也忙著<a href="http://tw.piliapp.com/move/" target="_blank">搬家工具</a>,所以沒花時間細想,心中也沒有個譜。直到近日搬家工具告一段落,才開始驚覺國道計程收費要開始了,只剩六天的時間。我習慣要先花一到二天來決定要不要做,<b style="background-color: yellow;"><span style="color: red;">如果這個市場已經有了很好的 app 或工具,就別再跟別人做一樣的東西!</span></b>不過這次只花了一個小時就決定要做了。</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div style="text-align: center;">
習慣在紙上做簡單的規劃 ▼</div>
<div style="text-align: center;">
<img border="0" height="286" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3YFb7D9kEiiB6Dy1otRzRu1w9h5nCedZZslyhsCAK_o6z3nZYdWeQptcnYGFh8UmsvSqIL4-vfM5OxJ55CUhS8NeHvA_PJgxDg2kGG0vL1dMcACRh1P-hXILV_xpXQI3SvhX3hNlVlKw/s400/IMG_8467.JPG" width="400" /></div>
<br />
<a name='more'></a><br />
<h3>
網路上既有的工具</h3>
<div class="separator" style="clear: both;">
現行有兩家有做 app</div>
<div class="separator" style="clear: both;">
</div>
<ol>
<li>Good life 做的國道計程收費:看評價就被幹到爆。我還沒搞清楚就死當跳出...</li>
<li>國道里程收費:它主要就是選的,起點要從 169 個交流道選一個;訖地也是要從169選一。金額計算也不精確,可能因高公局沒有公開的資料的關係。</li>
</ol>
<div>
再找了官方的工具,官方其實是遠通做的,可能是大家很討厭遠通,所以做得跟政府做的一樣。還不錯用,因為會跨國道做路徑規劃,缺點就是要輸入起訖點,當然也沒有一個地圖來的一目瞭然。不用點選的也有原因,因為有 169 個交流道很難點選。輸入起訖點對桌面的使用者還算方便,</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirBbB9EDlqo5iH9PtPBruNFDHHWx8ZnZfx3VzrQORA86ECVG3QtACAEnBUC4tKMvmC-2wVml2ylH1ZZhbvE43uGEDg9B3IqH75KJ7yMViaLeMxUy4K7h_QvvmubR0FurY2Rpv-Jhr-Grg/s1600/%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7+2013-12-31+%E4%B8%8B%E5%8D%882.54.31.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="187" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirBbB9EDlqo5iH9PtPBruNFDHHWx8ZnZfx3VzrQORA86ECVG3QtACAEnBUC4tKMvmC-2wVml2ylH1ZZhbvE43uGEDg9B3IqH75KJ7yMViaLeMxUy4K7h_QvvmubR0FurY2Rpv-Jhr-Grg/s400/%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7+2013-12-31+%E4%B8%8B%E5%8D%882.54.31.png" width="400" /></a></div>
<h3>
開發</h3>
<div class="separator" style="clear: both; text-align: left;">
程大概如下:</div>
<br />
<ol>
<li>花了 0 .5 天來研究、規劃和設計</li>
<li>花了 2 天畫圖</li>
<li>遠通只提供 pdf 檔,將 pdf 檔匯入到資料庫大約 0.5 天</li>
<li>前後端大約花上 2 天</li>
<li>上線後有許多 feedback ,修修改改大約花 2 天(包括寫這一篇)</li>
</ol>
<div>
開發花了七天不長不短,但是這也是基於先前寫好的<a href="http://dev.sopili.net/2013/01/create-taipei-mrt-route-map-using.html" target="_blank">路線圖的 library</a> ,還有工具邦花了兩年建置完善的 php framework 和開發環境。<br />
<br />
另外許多人問為什麼不做跨國道的路徑規劃,7 天做出來的產品就別太強求了... 其實原本演算法都想好了,實際開發後發現,路徑規劃並沒有想像中這麼簡單,例外狀況也太多了。例如:由快速道路來接國一或國三比較快,若硬是由國道接,一整個繞路又貴;另外像是我常走的台北到宜蘭,走平面道路來接國一深坑到國五石碇也是方式之一。與其做了沒有實際狀況的路徑,那還不如提供簡單的方式供大家參考就好。</div>
<h3>
小結</h3>
<div>
成果不錯,上線兩天就達到了2萬個讚,這兩天多賺了幾個便當錢,不知道這一波熱潮之後,常態的 PV 還剩多下多少。<br />
<br />
<br /></div>
<div>
<br /></div>
Unknownnoreply@blogger.comtag:blogger.com,1999:blog-5974590190404224298.post-63109441416100115642013-04-07T00:23:00.003+08:002013-04-10T10:12:09.848+08:00賺錢才能永續發展看到超級多的網路創業網站,就是一股勁的在燒錢!可能因為燒錢的免費服務可以搶佔各媒體的版面,也可能某一天大網站會收購你。但現在大網站也都慢慢開始認知不賺錢的東西必需收山;大網站也開始可以快速複製產品!就還是早點收了提供免費服務的心吧!當然,如果免費是為了促銷就另當別論。你的服務必需賺錢,無論是廣告、Freemium、賣排序、加值功能等等。<br />
<br />
如果創業的目的是想要改變世界,那請做出一個永續的服務來!<br />
<br />
<br />Unknownnoreply@blogger.com