Showing posts with label software. Show all posts
Showing posts with label software. Show all posts

Sunday, August 5, 2012

增進程式設計功力的好書推薦

身為一個不太勤快的工程師,從學校畢業後看程式設計相關的書的時間減少很多,在這些書中有三本(其實有認真看的也沒幾本:-D )對我的影響最大。

Pragmatic Programmer / Andrew Hunt and David Thomas



Code Complete / Steve McConnell
Programming Pearls / Jon Bentley

這三本書中我第一名推薦的是Pragmatic Programmer,有兩個原因,其一是夠薄,三百多頁而已,在不算長的篇幅中把單兵作戰守則解說得很清楚。第二個原因是他有一個很棒的小抄。




推薦的第二名是Code Complete,此本為聖經不需多說,應該是所有推薦書單的平均第一名,我沒有放在第一名的原因是因為太厚了我還沒看完。

第三名推薦的是Programming Pearls,很老的書,很薄。最推薦的是"Back of the Envelope"這一章。此書在台灣甚難入手,Amazon上也沒有電子書,如果有機會得到的話一定要買下。

本日學習:
翻到Code Complete的第三十章:程式設計工具,其中一個自我檢查是:你的編輯器是否有自動編譯和錯誤檢查?
我赫然發覺平時用Vim寫Perl程式居然沒有這個功能,我必須用 perl -c 自行檢查。沒關係亡羊補牢猶未遲,趕緊找一個plugin perl_synwrite來幫忙,搭配這個外掛只需在存檔的時候用:W就可以先編譯perl程式,如果錯誤的話就會顯示錯誤訊息。

最後的總結就用 Jeff Atwood 的推薦書單吧


Sunday, January 1, 2012

親愛的軟體工程師,你平常到底在做什麼?

又到了歲末年初的時候,三五好友聚會的時候總是會談到:最近的工作如何呀?誰誰誰受不了要跳槽了之類的。剛開始到業界工作時,我常跟人說我的工作不有趣,好像只是為了賺錢而已,所以萌生的辭職的想法。但是聽聽朋友的意見之後,發覺我其實還蠻幸福的,因為:
  • 休假多,而且想放假就能放假,不會有專案緊急被叫回去加班的情況。這點很重要,我聽說不少公司的假很多,但是看得到吃不到。
  • 每天平均開會時間約一小時,相當有效率。
  • 薪水有外商的水準。
  • 主管的技術底子強,不會有外行領導內行的情況。

以上是從外部來評量工作的好壞,但是我實際上在做的事究竟是怎樣呢?有那麼無趣嗎?我試著回想看看自己的工作情況,並看看自己有什麼成長。

Who:和誰一起工作
工作一年後,發覺關鍵果然是人,如果人對了,可以聊天打屁之外,還能夠相互刺激學習。如同一般軟體團隊,我們有
產品經理:收集客戶反應,然後決定產品的功能。
專案經理:scrum master。不曉得scrum是什麼?請收看Teddy Chen的部落格。此人並不需深入瞭解技術,他的工作追蹤專案進度。
架構師:一人,負責決定技術決策。
開發者:我和另外五人。主要工作是依據需求設計程式。
支援工程師:平時不會看到他們,不過當產品上市後,站在第一線面對顧客的意見抱怨的就是他們 :) 所以我們需要寫FAQ給他們用。最近從支援工程師那邊來的抱怨是:FAQ寫太多啦,特別是安裝系統的步驟太繁瑣。

What:做了哪些事
我嘗試用簡短幾句話來說我做了什麼。我們團隊的產品是開發針對VMware虛擬化環境的分析工具。為什麼要做這個產品呢?因為VMware是個包山包海的大怪物,裡面什麼東西都有,即便我接觸快一年了,對裡面各種虛擬硬體仍是不完全瞭解,更別說新近的VMware管理員了。
1. 收集事實:用Perl來擷取VMware環境的所有資料,像記憶體用量,CPU用量,錯誤紀錄,使用者的操作歷史等等等。這些東西都會送到我們後端的專用資料庫中。
2. 說故事:有了事實,我們要找出合適的呈現方法。好比說用折線圖呈現各種資源的用量,讓使用者能快速的瞭解他的虛擬環境。由於我們的前端是Web,所以我們常用到Javascript,將來更會多採用HTML5。
3. 回答問題:雖說預防勝於治療,但是一般管理者平時不一定會去用我們的分析工具,只有在火燒屁股時才會趕緊問:到底什麼東西壞掉了?所以我們事先收集各種錯誤的發生原因,並找出偵測方法,好在問題發生時能快速鎖定。

學到什麼
Script language:我們工作用到Perl和Python。特別是Perl,因為這是VMware官方的SDK之一。在這之前我怎麼都搞不懂Perl裡面的%&$@奇怪符號。說真的script langulage開發起來比C快很多,程式也簡短很多。唯一的遺憾是你沒辦法吹噓說自己寫了上萬行程式碼:)
VMware:這是個龐大的怪物!我好像進了大觀園一樣,改天要整理自己的心得分享一下。
Splunk:強大的搜尋引擎,有著類似SQL但又獨特的指令。

回顧完這一年的工作經驗後,發覺好像也沒哪麼無趣嘛。新的一年如果還在這家公司的話,我想要學習HTML5和jQuery,一方面可以強化我們的使用者介面,一方面可以玩一些資料視覺化。

各位看官,你們的工作是否也能說成一個有趣的故事呢?

Saturday, December 3, 2011

我的軟體生涯發展規劃

到業界工作進一年來,有幸遇到功力深厚又照護晚輩的前輩。由於師徒制在軟體業不盛行,一般的人不會花多餘時間指導新人,一來是沒有回報,二來是怕被超越。對我來說學到的東西中,是前輩指出我的兩個最大的缺點。

1. 應付了事。我向來是那種很會考試的人,對於大多數問題都能找到一個答案並且應付過去。但是久而久之會養成一種交差了事的態度,只求解決眼前的問題,沒有去思索整個問題的來龍去脈,並且透徹了解問題。

2. 獨善其身。所謂教學相長,我平時學到的東西很少與人分享,一方面是個性不主動親近人,另一方面是表達能力不強。


前輩給我的建議是先改進第二點,練習成為某個領域的大師,並且能幫別人速成。所謂速成就是指:比自己更快速學成。他指出唯有能幫別人速成,才表示你已經學的透徹。由於現在沒有學生,我先嘗試把自己學習的心得以教學的方式放在部落格上。

最後分享一篇文章做為結尾: 給學生與軟體業新進的十招