ISBN:9789865027148
我自從約15年前因為專案需要實作訊息佇列,開始著手研究 Apache ActiveMQ 這個開源產品後,程式開發的重心也從微軟的 .NET 平台轉向 Java。而後又更進一步採用 Apache Camel 這個開源框架打造訊息交換平台,接著步入 Hadoop 大數據開發領域等因緣際會下,就此熟悉並喜愛 Java/Apache 相輔相成的軟體生態系。想當然耳,看到這本《Java程式設計師應該知道的97件事》的書名,毫無遲疑地就會買來翻閱,想瞧瞧所謂專家們的智慧。
這本書的編輯形式相當獨特,它匯集了97位頂級的 Java 開發人員,請他們各自以一篇文章分享自身認為 Java 程式設計人員最該關注的事情。由於書後的附錄收錄了這群人的經歷簡介,可以發現他們每一位都足以被稱為大神的頂尖工程師,不論是出身正統科班的 IT 博士、開源專案的貢獻者、資訊書籍的作者,還是服務於大型企業的顧問、講師。來自四面八方的宗師級人物,依據他們各自深切關心的議題,文章探討的內容也因此五花八門,從 Java 語法細節、JVM 效能工具、非 Java 的 JVM 語言,到軟體測試、專案管理、參與社群等等。內容可說是超乎想像地豐富,但又名副其實地淺嘗即止。
所謂人多口雜,此書的缺點也輕而易舉地浮現,連書籍編輯都直接在序言中提出,97位專家的建言肯定會有相互衝突的部分,而且很多文章的重點可能放在非常枝微末節的語法問題,因此會產生一種奇妙的認知悖論:如果你讀了能產生共鳴,那表示你早就懂了;如果你的程度還不夠,看了也形同嚼蠟。整體來說,閱讀這本書的過程,既沒有學習到具體技能的成就感,也沒有獲得實用新知的充實感。對現階段的我而言,讀起來如同雞肋,只是多了一本曾經讀過的電腦書的回憶。
About fifteen years ago, I started working with Apache ActiveMQ, an open-source message broker, because I needed to implement a messaging queue for a project. Since then, my main development focus has gradually shifted from Microsoft's .NET platform to Java. Later, I adopted Apache Camel to build a message integration platform. Combined with my subsequent experience in Hadoop and big data development, I gradually became familiar with—and grew to appreciate—the Java/Apache ecosystem and the way its open-source projects complement one another. So when I came across the title *97 Things Every Java Programmer Should Know*, I didn't hesitate to pick it up. I was curious to see what insights these experts had to offer.
The format of this book is quite unique. It brings together 97 experienced Java developers, each contributing a short article about what they believe every Java programmer should know. The appendix includes a brief biography of each contributor, and it's clear that every one of them is a highly respected expert in the field. They include PhDs in computer science, contributors to open-source projects, authors of technical books, consultants, and trainers working for major companies. Because the contributors come from such diverse backgrounds, the topics covered are equally diverse. They range from Java language details, JVM performance tools, and JVM languages other than Java, to software testing, project management, and participating in open-source communities. The breadth of the content is impressive, but each topic is explored only briefly.
As the saying goes, "Too many cooks spoil the broth." The downside of this format becomes apparent as well. Even the editors mention in the preface that the advice from 97 experts is bound to contain conflicting opinions. In addition, many articles focus on extremely subtle language details. This creates an interesting paradox: if an article resonates with you, you probably already know the topic well. If you don't have enough background knowledge, however, the article may be difficult to appreciate or learn from. Overall, reading this book didn't give me the satisfaction of learning practical new skills, nor did it leave me feeling that I had gained many useful insights. At this stage of my career, the book felt somewhat underwhelming—neither bad nor particularly rewarding. In the end, it simply became another technical book that I can say I've read.

沒有留言:
張貼留言