顯示具有 book 標籤的文章。 顯示所有文章
顯示具有 book 標籤的文章。 顯示所有文章

2014年5月9日 星期五

Rework工作大解放:這樣做事反而更成功



這本書的作者是Ruby on Rails的開發者DHH,他也是知名小公司37Signals的創辦人。37Signals是一家很特別的公司,公司的員工不到20人且分布在兩大洲、8個城市。一年雖然見不到幾次面,但是卻能開發出高品質的專案管理軟體basecamp,為公司每年帶來數百萬美元的收入。
書中所寫得內容其實就是DHH在創業過程中的一些心得,許多書中的觀念都顛覆了傳統的管理方式。書中花了很大一部份是在講解創業時的一些觀念,從公司發展、人才招募到資金募集都有提到,很適合有心創業或正在創業的人閱讀。以下是幾個書中對工作的看法和大家分享:

工作效率


我最喜歡書中探討工作效率的章節,作者認為要提昇工作效率最好的方法就是避免被中斷。在工作時候,我們時常會被一些事情打斷,像是有人找你聊天、電話、電子郵件、噪音……。每次中斷後都需要花一段時間再重新啟動,進入狀況,自然工作效率就低落。作者提到我們應該試著讓自己不被中斷,你會很訝異原來一天可以做這麼多事情。這個論點其實在Peopleware這本書也有提到。

工作狂


工作狂是另一個Peopleware也提過得觀念,傳統上我們會認為一個人工作到越晚表示他越認真。這本書用一段經典的話來描述工作狂。
工作狂不是英雄,真正的英雄已經回家了
作者認為工作狂代表工作效率差,他們習慣用蠻力解決所有問題,而不去思考好的方法幫助自己提昇工作效率。這點也是我這幾年開始工作後的體會,同樣都是寫程式,高手會試著找尋好的方法來提昇自己的效率,像是使用快速鍵、好用的vim外掛,甚至是自己寫一些工具來改善工作效率。而一般人就如同作者寫得,習慣使用蠻力來解決所有問題,而不是動腦想更好的方法。

加班


作者在書中建議讓員工在5點前下班,長時間的加班對企業絕對是弊大於利。這點在很多書都有提到。作者的公司一週只工作40小時,每年還是能創造出上百萬美金的利潤。可見工作效率的重要性絕對大於工作時間。

小公司


作者也以自身公司為例說明不是所有公司都需要持續擴張規模,小公司的優點是能快速對改變做出應對,擴張成大公司後做任何決定都會傾向保守。作者認為不管是大公司、小公司,只要能持續獲利的公司就是好公司。

結論


這本書的確是一本非常經典的書,書中提到許多創業的心得可能要實際有創業經驗才能有所體會。關於探討工作效率的部份,我認為非常值得一讀。看完這本書後我也檢視了一下自己的工作效率,提醒自己不能變成像書中所寫得工作狂。

2013年5月23日 星期四

C# in Depth(精通C#)

這是一本想更深入瞭解C#的人必讀的一本書。作者完整的交代了C#1.0到C#4.0之間的改變,這樣的寫法讓讀這本書有點像在念C#的歷史。書中詳細的說明C#每次改版新增了哪些功能,以及為什麼要新增這些功能,是為了解決什麼樣的問題。

我一直覺得要瞭解一個程式語言的語法最重要的事情就是瞭解語法演進的過程。其實就像學習數學和物理一樣,只會死背公式是沒有用的。程式語言作者設計某種語法一定是有他的原因。如果我們不懂背後設計的原由,就很難活用這個語法。學習程式語言另一個重要事情是此語法實際的用途和例子,比如說使用某種語法可以改善程式的可讀性,讓程式看起來更精簡。這兩點作者都有完整的解釋,這也是這本書為什麼被這麼多人推薦的原因。

書中甚至提到一些compiler相關的東西,像是compiler如何推論匿名型別的正確型別,LINQ和extension methods是如何被compiler轉譯。這些東西在其他C#的書幾乎沒有被解釋。雖然說不用懂這些也能寫程式,不過我相信要寫出好程式多瞭解這些東西是會有幫助的。

這本書雖然有中文版,但是我覺得翻譯不是很理想。在閱讀過程中常常可以看到錯字或缺字,句子翻譯起來不太通順(書中很常出現"然而"有點妨礙閱讀),甚至會有少翻的情況發生。因此還是建議有能力的讀者可以閱讀原文本。另外第二版沒有中文版是蠻可惜的,中文版只有介紹到C#3.0。

總而言之,這是一本C#的經典書籍,很適合學完基本語法後當C#的第二本書,看完之後一定會對C#有更深入的體認

最近看到C# in Depth要出第三版,內容涵蓋了C#5.0的語法。有興趣的人可以到Amazon網站注意出版訊息。

2013年3月28日 星期四

無瑕的程式碼-敏捷軟體開發技巧守則 (Clean Code: A Handbook of Agile Software Craftsmanship)


最近發現Clean Code總算出中文翻譯書了,去書局翻了一下內容發現翻譯品質還不錯。害怕原文書的朋友們可以考慮買這本翻譯書。前陣子也看到O'reilly最近要出The Art of Readable Code的中文翻譯本,這本書和Clean Code主題類似,有興趣的人可以注意一下出版的消息。

很高興看到有越來越多好書被翻譯成中文,也希望未來能夠有更多經典書能被翻譯成中文讓更多人閱讀。

原文板的讀書心得和筆記如下:

心得 : Clean Code

筆記 :

2013年1月20日 星期日

Peopleware:腦力密集產業的人才管理之道 (Peopleware: Productive Projects and Teams, 2/e)

就如同封面所寫,這是一本軟體專案管理的聖經本,和人月神話齊名。雖然這是一本26年前出版的書籍,但是書中觀念現在同樣還是適用。甚至現在還有許多軟體公司使用書中所寫得錯誤方法來管理員工。

書中一開始就講到,軟體業和一般製造業完全不同。軟體業比較像是藝術創作。老闆如果把員工當成可替換的零件,那這家公司註定是要失敗的。Peopleware提到幾個成功的關鍵,例如管理底下的軟體工程師的方式會決定這家公司會成功還是失敗。書中提了許多實際案例以及有趣的實驗,一一破解傳統主管的迷思。舉例來說,書中提到強迫員工加班的成效並沒有一般人想的這麼大,長久下來反而會造成員工效率低落。書中也提到環境對員工的影響,優秀的程式設計師大多數都來自於安靜不易受干擾的工作環境,但是老闆往往為了省小錢而造成工程師效率低落。

我最喜歡書中做的一個實驗,作者把不同公司的工程師們安排在自己的工作環境進行程式競賽。結果發現最優秀的工程師和最差的工程師效率可以差到10倍。同時最優秀的那群工程師們大多數擁有良好的工作環境。

Peopleware這本書不只適合給主管閱讀,也很推薦一般工程師去閱讀這本書。書中提到許多改善工作效率的方法。讀者可一一檢視,改善自己的工作效率。

2013年1月7日 星期一

The Art of Readable Code



這是一本教你如何寫出容易閱讀程式碼的書。其實市面上已經有許多這類型的書籍了,比如說Clean Code。如果你是一位很有經驗的程式設計師,你會發現這本書內容其實和之前市面上這類型的書籍都差不多,並沒有什麼新的東西。這本書作者很強調一個觀念,好讀的程式碼是指讓別人花最少時間就可以完全瞭解它,整本書就是圍繞這個原則來教你如何寫出容易閱讀程式碼。

這本書最大的特色是例子很豐富,書中舉的例子包涵了C, C++, Java, Python, JaveScript。其中大多數的範例都是作者花超過五年的時間從實際專案中的程式碼擷取下來的,看得出來作者花了很多時間在收集這些範例。書中會先解釋舊的程式碼為什麼不好,並且教讀者該如何修改成好的程式碼。

另一個本書的特色是書中的漫畫,書中每個章節都會有一些漫畫。而這些漫畫都和所談得主題有些呼應,讓讀者讀起來相當輕鬆。本書頁數也不長,只有180頁。這樣的篇幅我覺得十分洽當,不會太長也不至於到沒有內容。

書中內容專注在如何寫出別人容易閱讀的程式碼,從命名、註解一直到程式邏輯,最後教你如何重新精簡你的程式碼以及如何測試。重要的主題都有涵蓋在裡頭。書中最後也列出作者推薦相關類型的書籍。讓讀者在讀完這本書後能繼續深入閱讀。

很推薦想增加自己程式碼品質的人去閱讀這本書。如果之前沒讀過這類型得書籍,相信收穫會很多。

讀書筆記:

2012年12月17日 星期一

Head First C(深入淺出C)


這本書延續了Head First系列的傳統,用有趣的圖片和例子帶領大家更深入認識C。就如作者前言所寫,這是一本寫給已經學過C或是學過其他程式語言的人看的。書中只花了一個Chapter帶大家復習一下C的語法。因此不要被書名給騙了,這本書不適合完全沒有程式經驗的人看。如果你只是想學習C的語法這本書也不適合你。

我認為這本書很適合當C的第二本書,書中大部份篇幅都在講解一些較進階的議題。比如說程式在執行時的記憶體區段(stack, heap, code);為什麼char *str = "hello"無法被修改;指標以及函式指標的詳細解釋;union和bitfield。這些部分搭配深入淺出系列特有的圖型教學法,讓讀者可以很輕易地瞭解這些議題,這點是本書做的最好的地方。

這本書另一個值得推薦的地方是他介紹了一些其他C教學書不太會講到的地方。比如說gcc的參數,動態連接和靜態連接,Makefile的撰寫。這些都是實務上很常用到的東西。作者解釋的也非常好,難易適中。這也是為什麼我推薦這本書當作C第二本的原因。

書中後半段介紹了一些更深入的議題:process, fork, thread, socket, IPC。這部分大致上只是帶你了解有這些東西而已,更深入的部分還是建議去看其他專門探討此議題的書。

這本書的定位我覺得是在新手到進階之間,書中講解的議題是每個進階的C程式設計師都要知道的。很適合學過C想更進階的人看,看完這本書相信對C會有更深一層的認識。

2012年11月27日 星期二

Head First Object-Oriented Analysis and Design(深入淺出物件導向分析與設計)

我一直都很喜歡深入淺出系列的書籍。這本深入淺出物件導向分析與設計就是一本深入淺出系列經典的例子,用實際生活上的例子穿插有趣的圖案一步一步帶領讀者進入OOAD的世界。書中介紹了一些基本的OO原則、部份Design Patten、UML以及軟體開發的流程,幾乎可以說涵蓋了大部分軟體開發的基本議題,很適合當OOAD初學者的第一本入門書。

其中我最喜歡書中一步一步帶你思考的模式,作者會先從不好的設計開始講起,一步一步帶你運用一些OO的基本原則修改程式架構。此外書中舉的例子也十分有趣,搭配作者幽默的文字會讓你有種在讀故事書的感覺,不知不覺就看完整本書。

書中列出開發偉大軟體的三步驟,我覺得分類的非常好。開發軟體不脫離這三個步驟:
  1. 確認你的軟體做客戶要它做的事。
  2. 應用基本的OO原則,增加軟體的彈性。
  3. 努力達成可維護、可重利用的設計。
不過這本書也像其他深入淺出系列一樣,是屬於入門類型的書籍,比較不適合有豐富OO經驗的軟體工程師。此外書中範例程式都是使用Java,讀者可能需要一些Java基本的OO知識才能閱讀。

總而言之,這是一本很棒的OOAD入門書。看完這本書後可以接著針對書中的各個議題去看進階的書籍。比如說Design Patten可以接著看深入淺出系列另外一本有名的書深入淺出設計模式

2012年7月18日 星期三

Python 學習手冊

Learning Python是一本很有名的Python入門書。目前最新版是第四版,但是中文版只有翻譯到第三版,蠻可惜的(這本書是Python書籍裡面我覺得翻譯很好得一本書)。第四版和第三版最大的差別在於多了一些Python 3.0的介紹,其餘部份都大同小異。這本書已經出很久了,但是在Amazon上的評價一直不是很好。不過我覺得這本書其實沒這麼差,今天我來幫他平反一下。

首先,有兩種人不適合看這本書:

第一種人是程式語言新手,我甚至覺得Python新手也不適合看這本書。為什麼呢?因為這本書寫得很冗長、很多廢話,而且又喜歡在前面的章節就開始講一些比較進階和細節的技術(像是Python Object Model)。如果完全不會Python的話你一定沒辦法消化這些東西,更不用說之前沒學過程式語言的人。這也就是為什麼在Amazon評分會這麼低的原因之一。

第二種人是已經有其他程式語言底子,但是想快速學會Python的人,這本磚頭書可是有700多頁,又很多廢話。等你看完都不知道什麼時候了。這種人我會推薦他看The Quick Python Book,一本精簡又好閱讀的入門書。

講了這麼多缺點,來講講這本書的優點。這本書最大的優點就是他寫得夠詳細。書中提到的一些Python的細節是我在其他書裡頭比較少看到的。比如說這本書完整的介紹Python的reference以及Python Object Model,這些都是初學者學Python很容易搞混的一點。很多書籍都只有簡單帶過或是完全不提。其他像是bound unbound這類比較進階的議題也都有提到。因此這本書很適合當第二本Python的書籍。

所以不要被他書名給騙了,初學者真的不適合看這本書。反而推薦這本書給有時間並且有一點Python基礎的人,看完後絕對會更了解Python。




2012年5月1日 星期二

大話處理器 : 了解DSP.CPU及MCU基礎架構


這本書是一本講解處理器內部運作原理的書,看得出來作者試圖用很多生活化的例子來解釋CPU內部運作的原理。大致上可以把這本書看成是一本簡單的計算機組織入門書,整本書的內容絕大多數都是從Computer Organization and Design以及Computer Architecture: A Quantitative Approach這兩本書而來。這本書的內容比較淺,作者跳過了很多細節。因此只適合完全不懂計算機組織的人來念,否則會覺得書中寫得內容太淺了。

書中前面幾章在講解電腦的歷史,以及介紹一些常見的CPU和DSP,這部份我覺得還蠻不錯的。這本書最大的缺點就在於翻譯品質,可能是因為兩岸用語不同的關係,許多地方寫得中文名詞都有點奇怪。這點在很多大陸翻譯書都會出現,國內出版社真的該好好改善這一部份。

總而言之,這本書可以帶你初淺的認識CPU的內部運作原理。不過詳細的細節還是建議去閱讀計算機組織的聖經 Computer Organization and Design以及Computer Architecture: A Quantitative Approach 這兩本書,這兩本書才能真正帶你瞭解CPU的世界是怎麼運作的。

2012年3月14日 星期三

約耳續談軟體:探究軟體經營的根本實學

這本書是『約耳趣談軟體:來自專案管理的現場實錄』的續集,同樣是由充滿幽默感的約耳所撰寫。大部分文章其實之前在網路上都有人翻譯。約耳還是延續他一貫幽默的風格,很輕鬆就能讀完他。和前一本不同的地方在於,這本書主要的主題是在探討如何管理一間軟體公司,其實蠻適合主管和老闆來看看。這本書可以看到約耳對待員工以及如何管理他的公司,看了會很令人羨慕,面試時候不但有豪華轎車到機場接送,還免費住在高級的旅館並且在高級的旅館舉辦party。辦公室裡頭有私人的辦公室,坐得是一張900美金的椅子。就如同約耳文章所寫得,最好的管理就是找最優秀的人進來,讓他們認同你並放手讓這些專家自己去做。當然約耳的徵才標準也是非常高,他同時也花了幾章在抱怨目前大學課程(Java學校帶來的危害,耶魯大學的演講),相信能進去他的公司都是數一數二的高手。

其中有幾章作者特別替微軟的IE還有Office的格式做出解釋,還蠻值得一看得,有些東西真的是因為有歷史包袱在,結果就是現在使用者看到的這樣。



2012年2月22日 星期三

松本行弘的程式世界:成為一流程式設計師的14種思考術


這本書是Ruby的開發者Matz所寫得書。第一眼看到可能會覺得是Ruby的教學書,但其實這完全不是一本Ruby教學書。本書主要是以開發一個程式語言的角度來探討一些程式上的問題,作者並以Ruby的角度來講解如何解決這些問題並和其他程式語言做比較。比如說講到多重繼承,作者先探討多重繼承在C++和Java的設計上分別會有那些問題,最後再講解為什麽Ruby要使用Mix-in來實做多重繼承。

當然還有很多其他的內容,比如說探討Design Pattern,作者就用Ruby示範了一些Pattern的實做,有些Pattern改用Ruby這種動態語言來實做會變得非常直覺好懂。其他包含MVC, Unicode, Regular Expression, Floating Point......作者一開始都先簡單講解其他語言的設計方法,最後再說明為什麽Ruby要這樣設計,看完以後會覺得Ruby真的實做了很多新的東西,並且吸收了其他程式語言好得設計方式。

看這本書前其實不太需要先學會Ruby,作者在用Ruby寫範例Code的時候都會順便解釋Ruby的語法,像我本身並不會Ruby,但是大部分範例都可以看得懂。如果你是像我一樣對如何設計一個程式語言很有興趣的話,這本書是市面上少見在探討語言本身性質的書,非常值得一看!

2012年1月20日 星期五

Clean Code: A Handbook of Agile Software Craftsmanship

Clean Code,看到書名就知道這是一本教你如何寫出乾淨且容易維護程式碼的一本書。這本書一開始先從最基本的命名開始講起,接著講到怎麼寫出漂亮乾淨的function以及如何撰寫好的註解。最後還講到了例外處理、Class以及Unit Test要注意的事項。

我覺得寫程式分幾種境界,一開始初學者的時候只要想辦法把程式寫出來就好了。但是變成老手之後,要把程式寫出來變得不是那麼困難。困難的地方反而是如何寫出乾淨且容易維護程式碼。大部份的人都可以寫出電腦看得懂的程式,只有高手才能寫出乾淨簡潔、讓其他人很容易看懂的程式碼。這本書介紹了很多技巧幫助程式設計師能寫出Clean Code,很推薦學程式有一段時間的人去閱讀這本書

書中有提到一些重要的觀念,比如說強調命名的重要性、function要盡量簡短、盡量用程式碼來解釋程式而不是註解、不要害怕重構。看完以後收穫很多。可惜這本書目前只有英文版,而且作者有用到一些艱深的單字。不知道未來會不會有中譯本出現(補充: 已經有國內出版社推出中譯本)。

以下是一些我的讀書筆記,大家可以參考看看

2011年12月26日 星期一

人月神話:軟體專案管理之道


這本書應該不用多介紹了,軟體工程的聖經

人月神話雖然出版30多年了,但是書中所寫得大部分準則到現今仍然適用,甚至有許多主管或是老闆都還是會犯書中所寫到的一些問題。書中最重要的觀念之一就是人月(man-month),到現在還是很多人會認為軟體開發進度落後時候就是要多加一些人手進來。作者在30年前就告訴大家這個主張是完全錯誤的。因為人力和工時根本無法互換。

記得這本書最早是我高中時候看得,那時候大部分的章節都沒辦法真正體會。研究所時我又看了一次,這次因為有實際開發過一些大型Project,所以比較能搞懂書中的一些章節。接下來我想等工作5年後再來看一次,相信又會體會更多的東西。

這本書絕對是每個軟體工程師必讀的一本書,如果你還是學生的話可能很多內容沒辦法體會。不過等你經驗夠多之後再看,絕對能學到很多東西。

Head First Programming(深入淺出程式設計)



我一直很喜歡Head First系列的書籍,HF的特色就是用許多圖片和有趣且實際的範例來教導讀者。因此看到這本HF Programming就決定借回家看。這本書就如同書名所寫得,是專門寫給完全沒寫過程式的人看。不過花了幾個小時看完之後,我覺得這本書根本不適合初學者看

先講本書的優點。書中以Python來教導基本的程式概念,我覺得這是很好的主意。Python簡單的語法會比C來的更適合初學者學習。本書1~6章主要以教導程式流程和基本資料結構為主,這部份我覺得寫得還OK,舉得例子(web parser, twitter貼文程式)也很貼近實際上的應用。

不過從第7章到結束竟然都在講解GUI,我邊看邊想一個完全沒寫過程式的人看到這邊真的能瞭解怎麼撰寫GUI嗎?何況後面講解GUI的速度又非常的快,新手一定很難消化。我反而覺得應該藉由一些簡單的Project再度複習一些前面的基本觀念,這樣才是一本適合初學者的書。

因此這本書我覺得比較適合有一點點程式基礎的人來看,而不是給完全沒有程式基礎的人看。完全沒程式基礎的人還是比較適合去看詳細一點的入門書,並搭配大量的練習。這本書只花了大約200頁(而且因為圖片的關係,大概3頁等於傳統書籍的一頁)在介紹基本的語法,對初學者來說是完全不夠的。

題外話,如果是想學Python的人那更是完全不需要看這本書。因為這本書不是一本Python的教學書,沒有很深入的介紹Python,建議去看Python專門的書會比較好。

2011年11月28日 星期一

學徒模式:優秀軟體開發者的養成之路

一開始我以為這本書是在講軟體工程的書,不過實際看過才知道跟我想的完全不一樣。這本書的重點不是那些技術性的內容,而是在講解如何成為一個優秀軟體開發者。這本書教了一些態度以及一些方法。

本書主要圍繞幾個重要的觀念。第一就是要熱愛你的工作,一個偉大的工匠必定十分熱愛自己的工作,而不是只是為了錢在工作。本書也教了一些方法幫助你找回你當初學程式的熱情。再來你要找到一些志同道合的朋友以及導師和他們討論學習,如果你在一個周圍每個成員都比你厲害的團隊,相信你一定會成長的很快。這部份書中也舉了一些建議,比如說多參加研討會或是參加社群的活動。除了持續學習以外,本書也提到保持謙虛的重要性。當你學得越多越會覺得這條路是永無止境的,只有水還沒裝滿的杯子才有辦法繼續裝更多的水。

這本書很適合有一些經驗的程式設計師看,也很適合剛學程式的新手。總而言之,保持對軟體開發的熱情非常的重要,一個沒有熱情的程式設計師絕對沒有辦法成為一位軟體大師。

2011年11月22日 星期二

C語言之修煉與實踐


這本書是我看過C語言入門書籍中,少數有講解到一些比較進階議題的書。作者一開始就先介紹了GDB和Makefile,在介紹function call時順便介紹了memory layout,在講static和extern的時候介紹了binding等一些compiler的issue。因此我覺得這本書不但適合新手看,也很適合有寫過一些程式但是還不太熟的人看。如果是新手的話,這本書可以幫助你稍微瞭解一些底層的觀念。比如說call by value,這本書就有簡介了一下stack frame會怎麼長,variable會放在什麽地方。這些部份是我在傳統的C的教科書中比較少見的。至於有些經驗的程式設計師則可以再複習一次這些觀念,書中有些範例我個人覺得還蠻有用的。

我一直覺得學程式很多盲點就在於這些compiler幫你做的事情,因為這些東西你看不到,感覺起來就會很抽象。大多數的書本也只要你死背而沒跟你說為什麽。但是這些東西我覺得對於一位程式設計師來說是很重要的,這本書做了一些簡單的介紹,有興趣的讀者看完這本書後可以再看一些更進階的書。

2011年11月11日 星期五

Designing Embedded Hardware(設計嵌入式硬體)


這是一本給嵌入式初學者看的書,不過這本書和市面上大部分嵌入式的書籍都不太一樣,對大多數資工背景的學生來說,這是一本很硬的書。作者花了很多時間在介紹硬體相關的議題。前幾章在介紹簡單的電子電路學、焊接工具、示波器,中間幾張花了一些時間在介紹嵌入式常見的協定(SPI, I2C, USB, 紅外線, RS232),最後是介紹幾個常見的處理器架構。

和一般書籍不同的地方,這本書每一章幾乎都會舉一個實際的例子,示範怎麼真的把線路圖兜起來,並講解一些電路是如何實做的。因此如果你之前沒有修過微處理機相關課程的話,這本書對你來說會很難看懂他。

這本書我一共看了兩遍,第一遍的時候幾乎都看不太懂。因為我當時完全沒有什麽嵌入式的底子,只是一個會寫軟體的程式設計師。之後實際接觸嵌入式系統一兩年後,我回來再看了一遍這本書。有點底子之後才發現這本書寫得真的不錯,書中舉的一些例子也都是實際上會用到的,尤其是最後幾章介紹了許多常用微處理器的架構(這是2005年的書,不過大多數微處理器到現在2011年都還可以在市面上看得到),非常值得一看,其中甚至有講解Address Decoder和MMU電路的實做。

因此我的建議是,如果你是軟體背景新手的話可以先大概看看就好。幾個重要的協定先看過有概念就好,因為SPI, I2C這些協定沒有實際實做過,只看書是不可能會得(而且書上也只有講最簡單的概念,詳細相關協定還是要去看spec比較好懂)。電路圖如果都看不懂可以先跳過沒關係。等到你真的有實做經驗後再回來看,相信收穫一定會不少。

2011年11月9日 星期三

約耳趣談軟體:來自專案管理的現場實錄



這本書已經是十年前的書,但絕對是一本值得一看再看的好書。約耳用很幽默的方式來告訴大家如何正確的開發軟體,內容不但有軟體開發還包涵了人才招募以及一些對微軟的看法。約耳本身就是一位開發經驗豐富的程式設計師,加上幽默的文筆。如果你是有點開發專案經驗的程式設計師,絕對會讓你看了就停不下來。其中作者對測試人員和人才招募的部份最讓我有感而發。因為這兩點是台灣大多數公司最不重視的幾個項目。 約耳提出了一些他的看法絕對會讓你不由自主的贊同他。

約耳寫得內容其實都有公佈在網路上,台灣也有人在翻譯
有興趣的朋友可以連到網站上去看
這邊我推薦幾個我覺得非常值得看得幾篇文章:

爪哇學校的危害 The Perils of JavaSchools

軟體人員面試教戰守則 - The Guerilla Guide to Interviewing

不用測試人員的五大(錯誤)藉口 - Top Five (Wrong) Reasons You Don't Have Testers

其他文章當然也很棒,總之推薦每個程式設計師都去看看這本書!

2011年10月26日 星期三

程式設計師的自我修養:連結、載入、程式庫



看完這本書後我有個心得,強烈推薦每位程式設計師都該讀這本書!

本書就如同他副標題所寫得,詳細的帶讀者深入瞭解一個程式的Linking, Loading, Library是如何運作的。書中先從最基本的Compile and Linking開始介紹,之後慢慢介紹Static Linking、剖析Object檔、Loading、Dynamic Linking。作者不只分析了Linux下的ELF檔,連Windows的Dynamic Linking機制都有詳細的介紹。本書是每個想要瞭解系統在做什麼的程式設計師必讀的一本書。我當場在書局翻過之後就決定買一本回家看了。

就我求學的經驗,就算念到碩班,能把這些東西搞清楚的人也沒幾個。很多人念到碩士畢業可能連程式怎麼在OS中執行都沒有概念。雖然說不用懂這些東西也能寫程式,不過我相信要寫一手好程式是不可能不去瞭解Compiler。這本書提供了一個很好的入門點,學C和C++有一段時間的朋友們相信讀了這本書都會有恍然大悟的感覺! 很推薦大家去讀這本好書

最後離題一下,我一直覺得國內中文書很缺少這類偏底層、系統的書籍(這本書也是大陸人寫得)。反而國內很喜歡出一些程式語言的入門書(什麼一個禮拜學會C++......)。說真的有時候很羨慕大陸,他們真的出了很多硬底子技術的書。這點真的值得國內出版社省思。

底下是一些讀書筆記,大家可以參考看看

2011年10月24日 星期一

USB Complete: The Developer's Guide(USB完全開發手冊)


前些日子因為工作要用到USB的關係,我從書局買了這本書。讀完這本書之後再搭配一些網路上的文件。我很快花了一個多禮拜的就搞懂USB的基本原理。

這本書寫得不但詳細而且好懂。因為我是搭配USB spec一起看,有些地方spec沒寫清楚,回頭看一下這本書就瞭解之前不懂得地方了。書中舉了很多Windows USB Driver的sample code(written in C# and VB),雖然我最後沒有用書中的範例,不過sample code還是幫助我瞭解了整個USB的概念。總而言之,這是本很好介紹USB的起步書,推薦給想要瞭解USB的新手!

附註: 這本書同時還有中譯本,翻得也不錯。如果覺得英文書太貴也可以考慮買中文書。