分類彙整:公眾議題

以太幣購買與傳送初體驗:數據與心得分享

購買與轉帳加密貨幣,究竟是什麼感覺?

它的交易速度、交易成本又是多少呢?

我親自跑了一次流程。分享一下實際的數據與心得。

在 MaiCoin 註冊帳號

我選擇的加密貨幣是以太幣。

台灣能購買以太幣的管道不多,查詢之後決定使用 MaiCoin 的服務,因為可以在萊爾富繳費。

https://www.maicoin.com/

原本只想買個新台幣 300 元,但發現 MaiCoin 規定單次購買至少要滿 0.05 枚以太幣,當下約合新台幣 1,806 元。

所以我用這數字下單了,確認後取得了萊爾富的繳費代碼。

因為匯率波動太大,MaiCoin 提醒我要在 15 分鐘內繳費,否則可能以新匯率計價。

在萊爾富使用代碼繳費

我到萊爾富時已經超過 15 分鐘了,使用 Life-ET 代碼繳費,萊爾富收取手續費 20 元,總計支出 1,826 元,繳費完成。

在 MaiCoin 確認交易完成

回家打開 MaiCoin 網站,馬上確認了繳費完畢,並顯示我帳號擁有 0.04984127 枚以太幣。因為匯率變動,我受到了小小損失。

111

使用 Ethereum Wallet 建立帳號(address)

MaiCoin 上的以太幣是記在 MaiCoin 底下,為了建立一個正式的以太坊地址,我使用了官方的 Ethereum Wallet 建立帳號,並取得地址。

從 MaiCoin 傳送以太幣到我的 address

MaiCoin 規定傳送的以太幣數量至少為 0.01。

確認之後,明細會顯示處理中。

222

在 etherchain.org 確認交易內容

MaiCoin 約 11 分鐘後通知我,確認交易完成。

我電腦上的 Ethereum Wallet 需要下載完所有區塊鏈資料(目前約為 55.1 GB!),才能顯示我的帳戶餘額。

不想等這麼多資料下載完,所以我去 etherchain.org 上確認區塊鏈內容。

區塊編號  4992415 ,實際交易時間約為 9 分鐘。

https://www.etherchain.org/tx/0x37f3597ee17754494ba88e732f6ff32ed604b18fac9e786071089ea773d39501

交易內容 0.01 ETH ,約合美金 $12.31。

交易手續費 0.00084 ETH,約合美金 $1.03,這費用是由 MaiCoin 支付,沒有扣到我身上。

55 GB 資料下載完後,我也在錢包上看到了餘額 0.01 ETHER 沒有錯。

333

心得感想

這次初體驗,以個人用戶來說,我認為交易速度不算太慢,還 OK,手續費也還行。

但是作為投資則非常困難,除了手續費之外,在 MaiCoin 上的匯率跟國外交易所的匯率也有差別。

整體說起來,想到這段金融過程,幾乎沒有銀行或是政府機構介入,而是由全世界各地的電腦一起完成,確實感覺區塊鏈科技滿酷的。

但許多 ICO 相關詐騙、根本沒用的區塊鏈假應用、三不五時傳出的交易所危機等等,讓人不得不保持戒心。

建議有心參與的朋友,以學術精神,保持懷疑,勇於懷疑,建立自己的觀點跟看法,不要輕信任何人的說法。

(完)

寫程式不需要天份,也不需要熱情

從來沒有一個技能,曾經被神化到這個程度:

「你不但要有天份,還要有熱情,才適合寫程式。」

那些寫程式的人,好像「從小就立定志向,決定未來要寫程式了」。

缺乏其一的話,你要嘛是個假貨,要嘛走不遠,總之就是不適合。

這種深植人心的刻板印象不但大錯特錯,同時還是有害的。

隨便找幾個工程師都能證明這點。

Jacob Kaplan-Moss(Django創造者)

Jacob Kaplan-Moss的這份簡報提到:

一個平庸工程師的自白

這種關於「程式天才」的神話非常有害,一方面它把行業門檻設置得特別高,令很多人望而卻步,另一方面它也在折磨產業內的人,因為你如果不能 rocks ,就會變成 sucks ,所以不得不用一切時間來努力學習和工作,導致影響生活。…(略)…我們應該改變這種態度,寫程式只是一些技能,並不需要太多天分,它是可以學習的,而且做一個平庸的工程師不丟人,

他本人在Twitter的自介直接寫「不是真的程式設計師(not a real programmer)」,

透漏著他對這種迷思的不耐煩。

Jacob Thornton(Bootstrap作者)

在Github擁有八萬顆星的Bootstrap作者,

前Twitter、現任Medium工程師Jacob Thornton的一篇採訪也是這種迷思的反例:

Jacob Thornton痛恨電腦(Jacob Thornton Hates Computers)

當他說「我痛恨電腦」的時候,並不完全在開玩笑。…(略)…他說「我本來要去唸社會學的」

接著描述了他第一份工作的情況:

我拿到了一個遠超我能力的工作。每一天都可能被開除。所以我非常努力工作,想搞懂JavaScript,因為我不懂它到底在幹嘛。

我一生中最現實的一刻到了。整間公司的人圍在我身邊,要我做一個XHR request。我根本沒做過,我只稍微聽過而已。於是我開始打字、重新整理瀏覽器,然後什麼都沒出來。我反覆做了幾次,知道自己完蛋了,他們發現我是假貨了。接著我突然發現自己忘記加「.send()」。我加了之後再次重新整理瀏覽器,畫面成功顯示。整個團隊感覺像在說「喔,酷。」然後就各自回辦公桌了。

我在那裡坐了15分鐘。心想,就這樣。我搞定了。我不會被開除了。

這段描述一點也不像「程式天才」在職場的表現。

至於支持他一路走來的動機是什麼呢?他說:

我是一個高度在乎同儕的人,我做前端的朋友總是會告訴我哪個地方做很醜或是在哪個瀏覽器上壞掉。感覺真的很棒。我真的只想跟朋友一起寫程式,一起工作。

他本人的Twitter自介寫「computer loser」,

置頂推文是「公司裡第一爛的工程師,但是第三酷」。

這種態度跟刻板印象完全相反。

Rasmus Lerdorf(PHP之父)

Rasmus Lerdorf的言論常常引起廣泛爭議:

  • 我其實很討厭寫程式,不過我喜歡解決問題。
  • 有些人熱愛寫程式。我不懂他們為何會這樣。
  • 我不是一個真的工程師。我把東西弄一弄,弄到能跑之後就不管了。真的工程師會說「這段程式能跑,但記憶體沒管理好,我們來修好它」。我只會說,一直重新開機不就好了。

從他的言論,很難看出他對電腦本身有多少熱情。

他也跟Jacob Kaplan-Moss以及Jacob Thornton一樣,懶得對寫程式的迷思多做解釋,

乾脆直接說自己是loser、假工程師了。

David Heinemeier Hansson(Rails之父)

DHH在接受Big Think訪問時提到:

說來有點好笑。我以前寫PHP跟Java的時候,常常花時間去摸其他程式語言。到處摸看看其他程式語言…隨便什麼都好。寫PHP跟Java實在太悶了,我需要用這種方式讓自己暫時抽離。

我以前寫PHP跟Java的時候,完全不覺得自己之後會當程式設計師。

整段看起來都不像是一個「電腦天才」的自我介紹。

最後讓他愛上的不是電腦本身,而是Ruby程式語言的優雅性。

如果Ruby沒有被發明,DHH現在也許會做完全不同的事情。


這一類可以說明刻板印象大錯特錯的文章實在太多了,

看看工程師們最愛的幾個玩笑:關於工程師 59 條搞笑但卻真實無比的語錄

  • 一個人寫的爛軟體將會給另一個人帶來一份全職工作。
  • 傻瓜都能寫出電腦能理解的程式,優秀的工程師寫出的是人類能讀懂的程式。
  • 開發軟體和建造教堂非常相似——完工之後我們就開始祈禱。

如果工程師都很有天份跟熱情,這些笑話又怎會受歡迎呢。

再看看Medium上很受歡迎的學習系列文章:資深開發者給後輩的七個 Coding 學習心得

其中的幾個建議

  • 也許常常有人說你是錯的
  • 也許常常會有人跟你說「你並不是個 Coder」
  • 不要在意外表,能力才是一切

無非就是想打破這類寫程式的迷思、無意義的資格論神話。

下次又有人學到一半,開始反省自己適不適合、夠不夠資格的時候,

我只想跟他說:你就多找幾種方式學學看吧,不要抱持那種奇怪的資格論。

很多時候其實只是搞錯方法搞錯心態而已。

真的完全學不懂再放棄吧。

寫程式不需要天份,也不需要熱情。


如果您喜歡我的文章,可以在這裡訂閱。我有新想法的時候,很樂意跟你分享。

(Photo via Sano Rin, CC licensed.)

程式設計第一課:對該死的蠢電腦保持耐心

最近想學寫程式的人很多,我身邊也常常有朋友問我怎麼開始。

許多文章在談選擇工具、程式語言的注意事項。

我認為最重要的注意事項是:電腦其實很笨,和它互動需要保持耐心。

不提醒這件事的話,初學者一碰上挫折會以為自己很笨,以為「自己不適合寫程式」。

一般人常覺得寫程式就是對著電腦打一堆神奇英文,像在施展魔法一樣,只有厲害的人能做。

其實完全不是這麼回事。程式設計比較像是一直看到空白畫面、錯誤訊息,出錯、設法解決、再出錯、再設法解決、結果又出錯。不斷來回循環,慢慢取得進展而已。這就是大家常聽到工程師在講的「trial and error」。

沒跟初學者提醒這件事情,會導致他看到空白畫面就覺得挫折,看到奇怪的英文錯誤訊息就想放棄。

有些人甚至已經寫出一點東西、根本已經順利上路了,卻因為太常看到錯誤訊息就覺得「自己不適合寫程式」。

這真是誤會大了。coding本來就是用這種鳥方式在跟電腦互動。

這樣說可能還是有點籠統。那跟大家分享四個入門小訣竅吧!

訣竅一:至少要看到錯誤訊息

不管你在寫人生第一個小程式、架伺服器、還是連接資料庫,失敗之後至少要看到錯誤訊息,才知道找答案的方向。

找找看去哪邊設定,讓錯誤訊息顯示在螢幕上或是紀錄在某個檔案裡吧!

訣竅二:大量Google就對了,再不行就發問

初學程式設計會遇上一堆問題,這個時候只要不斷Google就可以解決大部份的問題(通常拿錯誤訊息去Google就有答案了)。

不要因為自己「一直在Google找答案」就覺得「自己不適合寫程式」。就算是軟體工程師依然每天在Google上找來找去。

還是解決不了,就找批踢踢看板、臉書社團之類的地方發問吧!

訣竅三:遇到瓶頸,就降低目標,從簡單的開始

不用急著把書上的範例、網路上的範例一次做對。

想在介面上做出一個按鈕卻不斷失敗嗎?那就先在介面上顯示幾個文字試試看,也許會發現別的地方弄錯了。

想把一串資料在程式間傳來傳去卻不斷失敗嗎?那就先讓它們互傳幾個數字試試看,成功了再繼續往下走吧!

訣竅四:隨便瞎搞就可以了,有興趣的部份再鑽研

初學而已,你想做的事情有完成即可。

過程中許多部份會讓你覺得很「黑箱」,覺得自己沒有全都搞懂,好像在學假的?

大可不必這樣想。你不需要在一開始就弄懂每個細節。在瞎搞中獲得樂趣與成就感即可,一些技術原理和細節,有空再慢慢查吧!

總而言之,看到錯誤訊息不要緊張,因為那其實是電腦在找你聊天呢~(溫馨❤)

不要把錯誤訊息和空白畫面視為挫敗的一種。把它視為和電腦互動的方式才對。

不相信的話,去問問身邊當工程師的朋友,問他們一天在螢幕上看到錯誤訊息幾次。

(Photo via Sano Rin, CC licensed.)

不如分享!

學生時代一起研究技術的幾個朋友,最近開始籌組co-writing blog。

他們都是極度有才華的工程師,blog上線之後一定會造福很多人。

寫blog分享的人永遠不嫌多,越多軟體工程師寫blog越好。

我從學生時代就一直這麼認為:不如分享!

讓我從三個角度解釋為什麼:

  • 排名與競爭的錯覺
  • 軟體工程師的本錢
  • 不必畏懼發表洞見

希望你看完之後,也會興起念頭:不如分享!

排名與競爭的錯覺

在職場上競爭,長期累積的個人實力,遠比短期內爭到的排名重要。

學生時代的十多年競爭排名經驗,卻是恰恰與此相反。

大學某年夏天,我見到同學拿著一份共同筆記要去影印。

我:「好厲害,你們幾個人一起做的嗎?可以借我看嗎?」

他一臉錯愕地拒絕:「共同筆記沒有在借的吧,這有公平性的問題。」

同年冬天,一個作業交不出來的朋友,臉色尷尬地問我:「作業該往哪個方向研究?」

我心想:「這傢伙是想跟我借作業吧!這好像有公平性的問題,對我不公平。」

然而,我又想了想:從這間學校離開之後,要面對的是全世界年輕人的競爭。

我今天幫助你學習,根本不害怕你反過來幹掉我,不然今天也不會是你向我請教。

但是你真的幹掉我又如何?那你一定掌握某種學習的訣竅,我到時再請教你就好了,

因為我是你的恩人,屆時你一定會無私報答我。

前者我根本沒吃虧;後者導致我變更強。穩賺不賠。

再說了,今天我排名比你前面畢業又如何?

面對全世界競爭的時候,我是用在校排名跟人競爭,還是用真正的實力跟人競爭?

最終我決定:不如分享!

從此一見到同學面有難色,作業直接遞過去:「拿去參考,要抄就抄。」

(但若被助教抓到害我零分,你就不用再跟我借了。)

更理想的期待是:如果大家都這麼做,那就是整個朋友圈一起變強、

整屆畢業生一起變強、整個國家一起變強。

軟體工程師的本錢

觀察了web programming產業一陣子,我怎麼看都是以「分享」為競爭的主舞台。

  • 若你在Stack Overflow有一萬分,業界怎麼評價你?
  • 若你在Github有一千顆星星,業界怎麼評價你?
  • 若你把洞見放在blog任人檢驗,業界怎麼評價你?

上面三點,不正是全世界軟體工程師奮力較勁的事嗎?

你在2015年,你在美好的產業:你不需要擔心技能被人學走而導致失去競爭力。

因為這行學無止盡、學習曲線沒有邊際效應遞減。

這就是軟體工程師的本錢:你只要擔心自己「分享的不夠用力」就可以了。

想找個與全世界競爭的舞台?不如分享!

不必畏懼發表洞見

不是業界大神,似乎就不應該寫blog?真是這樣嗎?

新手、中手就不應該發表洞見、暢所欲言他們的主張嗎?

國外工程師不都是互相撰文批評,然後讓圍觀的所有人一起學習嗎?

我在看一篇極具爭議的技術文章時,看到網友Zack打了很長一篇他的感想。

在我表達感激之意後,他回答:

Thanks. Writing helps me clarify my understanding.

對他來說,發表洞見不過是整理想法的一種手段。

同篇文章還有其他評論。網友Yannick Majoros留言:

Martin Fowler跟原po都只是毫無根據就愛發出噪音的幾個開發人員而已。

我看了大吃一驚,連忙追問:你哪來的資格批評Martin Fowler?你是認真的?

他回我:

我覺得他毫無學術根據。譬如說他對anemic models的抱怨就是一例。他不過就是有點經驗罷了。然後他試圖把個人意見說得像是事實一樣。如果原po把他的部落格文章寫成一本書,那就很像Martin Fowler那樣。

我根本不知道Yannick Majoros是誰、不知道他的實力、更不知道他的業界地位。

但是他這段話,對我就是極具啟發性。

讓我看完之後,更加覺得:不如分享!

(Photo via clappstar, CC licensed )

大學教授憑什麼出考古題

還在大學唸書的時候,每逢期中期末考,我就對這個問題充滿疑惑。

一直沒想通,卻也沒去請教過老師。

「為什麼考試題目照抄往年考題?」

出考古題導致的後果很明顯。

資質平庸的學生,被迫面臨抉擇:

要拿剩下的時間去死背考古題,讓自己什麼都學不到嗎?但是不這麼做就會輸給別人。

拿考古題來考試,毫無公平可言。

從國高中的段考,到基測、學測、指考、國考,

所有重要考試都嚴禁考題抄襲,否則一經披露,都會引起軒然大波。

看看幾個登上媒體的例子:

中山國中英語段考 試題爆抄襲(聯合報,2011)

教部:段考試卷 不可委外命題(立報,2010)

扯!普考抄襲特考考古題 一字不漏(TVBS,2013)

原民特考 試題抄襲成大5年前講義(自由時報,2014)

歷史爆抄襲 大考中心震怒(自由時報,2007)

如果我們無法接受國小老師、國中老師、高中老師,在任何一場重要考試照抄往年考題,

為什麼大學老師就可以?

大學教授憑什麼出考古題?

(Photo via Michiel, CC licensed)

別急著用那些新奇玩意兒

一個正要用PHP開始工作的朋友焦慮地問我:同事說我應該要用NetBeans。它是一種叫IDE的東西?我查了資料,發現它提供很多功能:字詞自動補完、全文搜索…等等。但我裝了之後覺得好難用,壓力好大!

我看了看他的電腦:他用Ubuntu當作業系統、Sublime當編輯器、git做版本管理、Apache當伺服器。這些工具夠他解決幾乎所有問題了。

我問他是否看得懂那些文章提到的「優點」在說什麼?「看不太懂。」
我問他同事有否解釋要拿NetBeans來做什麼?「好像可以設定連線、好像很方便、好像歐洲人都用NetBeans。」

這讓我回想起自己踏入這行後困惑很久的煩惱:為了一個別人大力提倡、但是自己看不出來有什麼用的東西而感到焦慮。

對於這種看到新工具、新觀念、新知識而產生的焦慮,我最後養成了一種態度:隨便看看、知道有這個東西存在就好了。之後遇到瓶頸、困難時再回頭,看看它們能否解決我的麻煩。

別浪費時間煩惱這個東西到底能解決哪個問題了;也別為了這種困擾感到挫折、覺得自己很笨。

課本上的一個名詞、一個Design Pattern、一個時髦的工具、一個軟體開發方法、一個軟體測試技巧、一個抽象化思考方法、一個程式語言的某個語法…。看不出來有什麼用,就別急著用。

時間一久,你還可能發現一件更難相信的事情:你從頭到尾都是對的。

那些新奇的狗屁也許根本就有某些缺點。你第一眼就看到了,但是所有人都不去提。

國王裸體在街上走!你的眼睛說不定從來沒看錯。

我不是在說學習沒有價值,我想說的是這兩件事:

* 碰到麻煩再去學習進階的,很多時候這樣才學得透徹。

* 所有東西都可能有缺點、或是只在某些情況適用,也許你只是很早就察覺缺點。

我再換句話說吧:

當你為了新奇玩意兒感到焦慮的時候,

或許,學習它的時候未到;

又或許,那東西真的沒什麼屁用。

(Photo via Alessandra, CC licensed.)

工程師的缺德行為:叫朋友去學C/C++

常常看到非資訊背景的朋友問工程師:我最近想學寫程式!該怎麼入門?

通常他們會得到很多糟糕的答案:「先了解演算法」、「先弄懂資料結構」、「先認識物件導向」。

這些答案都夠糟糕了,但最糟糕的答案莫過於「從C/C++開始入門」。

(我看過最扯的建議是「去找C++ Primer Plus來看」。這本磚頭書絕對不適合一般人自學)

照著以上建議去做的朋友,大概會在兩週之內就得到滿滿的挫折感,然後認為自己「果然不適合寫程式」,也不好意思再去跟工程師講自己的狀況,最終再也不想踏入programming領域。

這些建議真是害人不淺。

資訊相關科系,是因為要接續到之後的資料結構、作業系統,所以大一從C/C++開始入門會比較連貫、才能完整學一次電腦的基本知識。

而這些想學coding的朋友,大部分只是這兩種情況:

A. 最近覺得寫網站好酷,想試試看自己能否寫個blog、或是個人網頁
B. 對工作上某些人工流程不滿意,想試試看自己能否學寫程式、用電腦解決問題

他們的願望僅此而已,並沒有打算成為電腦專家、駭客,實在沒有必要從C/C++入門。

就像點火一樣,先從零星的火苗開始、小心保護不要讓它熄滅,接著慢慢加東西進去、讓火焰慢慢成為大火。學習,除了知識/技能之外,培養成就感與熱情也是很重要的。而從C/C++入門,會讓正要萌芽的小火苗直接消滅殆盡。

我對程式設計入門的建議很簡單。
如果你是狀況A,去學PHP&MySQL,先弄一個醜醜網頁出來就可以了。
如果你是狀況B,去學Python,先弄一個能執行、能顯示幾個文字的程式就可以了。

一般人想到程式通常只想到「圖形化介面」,如果能寫出一個有介面的小玩意會非常有成就感。
那樣的話,學PHP來寫個網站、直接就是介面,絕對有趣;學Python很快就能把玩內建的tkinter函式庫、做出按鈕做出選單,樂趣無窮。

話雖如此,你到市面上找PHP或是Python的書,大概還是會落得「滿滿的挫折感然後正式放棄」的下場。

別擔心,這不是你的錯,是那些書寫得不夠好。沒有一本是真正的程式設計入門書。
那些書只想著給你知識/技能,沒有想到要培養你的成就感、保護你的熱情。

要找書的話,我只建議兩本。

狀況A,去找歐萊禮的「深入淺出 PHP 與 MySQL」(Head First PHP & MySQL)。
狀況B,去找歐萊禮的「深入淺出程式設計」(Head First Programming)。

已經出社會了嗎?去台灣大學資訊系統訓練班逛逛吧,看看時間跟課程費用能否負擔(我有經濟系背景的朋友去上過幾堂課程,學得滿開心)。

政府也有推動青年就業讚的課程,滿足某些條件還能申請補助(不過,我有朋友上過其中一堂PHP課程,印象很糟糕、覺得是業者要賺政府補助款隨便開設的課程。但畢竟是單一經驗,我還是列出來給各位參考。)

國外的線上開放課程也可以考慮。

Coursera的

人人都懂的編程課(Python)

學習編程:基礎

麻省理工的

Introduction to Computer Science and Programming

A Gentle Introduction to Programming Using Python

全部都是用Python入門。

我對程式設計入門的建議就只有這樣。你不需要知道什麼演算法、資料結構、物件導向。
什麼狗屁名詞都不需要知道。那大多只是工程師下意識地想讓你覺得他們很厲害而已。

你只要想辦法寫出一個會動的程式就可以了。所有偉大的東西都是這樣開始的。


Q1: 但是狀況A還要面對HTML/CSS耶.. 好像很難?
每個技能深入下去沒有不難的。但是HTML/CSS要入門實在不怎麼難。
就從隨便寫幾個表單或按鈕、弄個醜醜的靜態網頁出來開始吧。

Q2: 我是工程師,我能怎麼幫助朋友?
幫他們搞定環境設定吧!幫他們把最基礎卻又最給新手挫折感的環境給設定好!讓他們能用記事本跟幾個小工具就開始寫code!給他們成就感!

Q3: 那寫手機app呢?你怎麼沒提到?
我覺得手機app還滿難入門的,實在給不出有建設性的建議。不知道。不過,上面的連結也許有一些手機相關課程,不妨試試?

(Photo via Sano Rin, CC licensed.)