2015年10月25日 星期日

軟體人才缺工潮? 正確的使用說明書

天下:軟體缺工問題

軟體工程師雖然是一個勞力密集的工作,但與製造業工廠不同的是:一個軟體工程師可以同時服務很多的工廠。
若是覺得每個位置都要有一個實體的員工在那上演鍵盤四重奏,人才怎麼算都不會夠。
如果我們現在談的是軟體業,就算讓人人都會 Coding也是無用的。人人有功練,幾年後,就會從:
「小時不讀書、長大當記者」到「小時不讀書、長大寫程式」
一篇很廢的新聞看看就忘了
一行程式可能會讓火箭爆炸、導彈亂飛、價格標錯、資料外洩。這裡講的是質比量重要。量的不足不應只拿人來補,1+1 = 2 、 1 + 1 = 0都是正確的答案。質的問題,可以從設計軟體的目標來改變。
此時該如何是好呢?工業革命的時候,發明蒸汽機大型機具。資訊革命的時代,可以發明軟體服務去解決通點。想想看你手邊有的程式碼,如果有天要讓人用,該怎麼去改寫。讓不這麼專精的工程師,也能甘願用你寫的東西,更進一步讚嘆,「X!也太好用了吧」。就像如果有米其林輪胎可用,就不會找三百個人來重新做一個"我的平台"輪胎。
會找人來做,就是市面上沒有產品可用。原來的教育制度、工作環境下,訓練出來的人(如本魯),無法從"技術"看到需求與價值,這是工程師們每天上廁所時可以想想的事。
就我所知,越來越多的人開始看到在資訊革命中,賣"機具"、"廠房"、"系統"的生意。請你看看"/home/user/workspace"中,是不是也有改變世界的螺帽呢?
總之,缺工的問題,除了人力資源部跟教育部在解決,工程師們也必須要扛起的責任。
新的市場已經來了,一起往海上前進,不然潮水一退就很害羞了。

Code wins arguments - 工人智慧 程式演化

"Mark Zuckerberg’s Letter to Investors: ‘The Hacker Way’Code wins arguments."

工作時,我們常常會花時間在討論、或是說辯論、亦或是只為堅持己見而吵架討論。
從以前到現在,我一直都很重視自己所做的東西。越是在乎越容易陷入迷思,越是迷思更討論不清楚。不了解,是許多失敗會議的主因。

"Code wins arguments" 讓我反思。花這麼多的時間虛擬的討論,只要花一點時間,攤開程式碼來順過流程,問題便迎刃而解。能與人"溝通"與"講清楚"的能力,此能力並非普遍與生俱來的,是練習就能學會。在軟體設計裡面,不斷的加強溝通一環我認為非常重要。

下圖是最近滿流行的,在達成同樣功能下,不同的類的程式設計師寫法。在裡頭,我看到在程式內的溝通,是一個軟體未來能高速成長的關鍵因素。

常常看到軟體工程師不夠。明年要開 1000個職缺,大聲疾呼必須要重視資訊人才數目的培養。現在人才真的不夠多,政府請注意等等。

主要的因素在於容易修改、可擴充的程式碼過少,工程師重寫相同功能的次數過多導致。我認為這不是工程師的問題。而是組織內,有沒有把"程式"本身當成資產。

在寫每段程式時,一定有不可分割的部分(Lagacy)、可模組化的部分(Modulized)、可提供外部資料(Application Interface)。說穿了,就是用 Framework的概念,設計軟體。

在追求個人的程式精簡之美的反義就是只有自己看得懂。開發團隊舊人會離開、新人會加入。我認為從最底層的程式起,做架構管理是有其必要的。開發團隊建議迭代(iteration)的制訂團隊內,開發程式的共識、設計方法、注解、Commit log等,這些規定形成一個開發系統不斷成長。強調只做出功能的公司,稱不上軟體公司,只能是 Hackerathon罷了。

軟體開發跟硬體時代最大的不同,就在於此"軟體資產"是可以累計的。一次次的開發,多花一點時間,保存或進步自己的程式,才能築起通往成功之路。

編按:透過文章,把自己的想法整理、讓別人看得懂。果然是需要練習的。


















2015年10月21日 星期三

[Developer] Xcode 7, iOS 9+ default deny insecure http loader

iOS 9.0+

這個問題大概是升級到 XCODE 7 最容易遇到的問題。

主要是為了安全性。在目前的網路時代中,有很多各式各樣的 Man in middle 攻擊能隨意的置換、攔截 HTTP的封包,沒有 HTTPS已經無法保證你的結果。甚至連一些早期的加密方式 SSLv3 (POODLE),攻擊者能有效的擷取傳輸資訊。在 Mobile這種高度依賴 HTTP傳輸的程式,APPLE決定從 IDE著手,希望大家能重視這件事。

當然,程式要先能動再談安全性。若要將這個設定關掉可以參考

https://developer.apple.com/library/prerelease/ios/technotes/App-Transport-Security-Technote/

在 Project 的 plist 中增加
NSAppTransportSecurity -> dict
    NSExceptionDomains -> dict  (單一設定 domain)
    NSAllowsArbitraryLoads -> boolean (全開)

以下為設定範例:

<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>mydomain.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
<key>crashlytics.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>


2015年10月16日 星期五

MAC/ iPhone FLAC convert MP3













因為 iTune無法匯入無損音樂 FLAC,對於要求高音質的時代,還真的滿麻煩的。

用 FFMPEG也可以轉檔,只是這樣一般人就不能用了。

登登登!今天找到一個好用的工具 Max,可以方便的轉 FLAC成 Apple lossless 或 MP3


http://sbooth.org/Max/

因為這是第三方軟體,所以下載後要使用的話。

記得要從電腦左上角黑蘋果進入

系統偏好設定-> 安全性與隱私 -> 打開這個程式的使用權限。

至於無損音樂...

"Maroon 5 無損" 去搜尋好像會有意想不到的結果?

2015年10月12日 星期一

前言 - 變成更好的自己

"變成更好的自己" 

如果你覺得可能,那就還有可能。如果你覺得不可能,那就不可能。「願力」是一個非常重要的力量,善用力量就能成就目標。我,時常在迷惘、發願、努力中來回震盪。藉由分享我的過程,提醒自己並期望能幫助跟我一樣煩惱的朋友們。我是一位很普通的工程師,努力的寫著程式,並在心中有一個願望,期待自己能幫這個世界變得更好。

擁有著人身,想充滿活力的面對人生,必須要有能持續追求的目標。"變成更好的自己"是我時時提醒自己的座右銘。 這個網誌希望紀錄在一次次考驗出現時,當下的想法。讓未來的我,能檢視自己的成長過程。常常會被環境影響後,容易忘記自己曾經是怎樣的人。透過看看照片、文字可以莫忘初衷。在迷失的時候,能藉著這些紀錄丈量自己的位置與距離。