朋友在 MSN 上問我用 vb.net 和 c++ 開發程式有沒有很大的不同,因為她的主管要她加入一個使用 vc++ 開發系統的專案。她很怕接下這個任務會很難上手,但主管告訴他用不同的程式語言,只是工具的差異而已,她只需要依主管給的程式範例照著做就沒有問題。朋友不大相信主管的說法,於是想聽聽我的意見。
同人直覺感到不妥,並非因為朋友並不諳 c/c++ 這種程式語言,加上它與 vb 之間,存在根本的程式語言差異。我認為比較嚴重的問題還是溝通過程出現不精確的語言,這代表她們公司的品質文化,對解決專案的問題是沒有效果的。
學習 c++ 當然並不輕鬆,尤其如果沒有 c 語言基礎的話,學起來更是會格外吃力。因為 c++ 語言特性與 vb 的差異很大。比如 c/c++ 特有的指標,就很容易讓初學者混淆,如果觀念不清楚,常會讓程式產生記憶體衝突甚至是當在不明所以的地方。但程式語言或是程式設計的技術,這些都還可以藉由學習成長,對於積極進取、追求自我成長的開發者而言,這些並非是大問題。
誠如我在 facebook 的好友,也是以前在點空間聚會有一面之緣的仁傑兄,看到我對這件事情的分享,他建議:
If you want to encourage her, you can said that. Let her have a confidence to do it.But you have to keep coaching, monitoring and reviewing her codes.
然而,這件事情我覺得讓人擔心的並不是朋友的能力夠不夠。我注意到的是她們公司的品質文化,品質文化的問題並不在技術,它多半不會是專案成敗的關鍵,而是專案管理者的態度。
朋友的分享讓同人看到,她的主管用一些不大精確的語言來讓她感覺問題不大。比如說用「c++、vb 都只是工具而已,不管你用那一種工具來開發系統,其實都不會有太大的差異,所以我們大可不用擔心」的說法,正是用不精確的語言來表達不當的概念,這其實是相當要不得的簡化。
溫伯格認為一個軟體開發組織的「品質文化」,重點在於管理者面對品質的態度。他在《第一級評量》提到對軟體工程師而言,沒有什麼觀察技巧比準確聆聽更重要的。為什麼需要準確聆聽?溫伯格指出軟體是一個講求準確的行業。當不準確潛入軟體之中,失敗和危機也就不遠了。但我們如何聽出朋友主管溝通用詞不精確?溫伯格在書中提到不當的概念會使人做出錯誤推論:
概念會讓人難以應付的原因是,這樣的概括性觀念通常可提供一個便捷的捷徑。所有的科學和工程領域都是以概念為基礎,這些概念是從觀察少數的案例後為多數未經觀察的案例做出總結。但是,概念會讓我們落入過度簡化的陷阱。
如果我們聽到刻意或無意地將概念的使用範圍擴大,那我們就要小心了。好比說朋友主管說「只是」工具,「不管」用那一種工具,「都」不會有問題。如此擴大言語的普遍性,是否朋友的主管想要隱藏什麼資訊呢?實在是值得我們更進一步地深入了解。
事實上,不同程式語言間存在的差異,這些技術細節常會使問題變得複雜,使我們必須花更多的時間來釐清問題。也就是表面上技術似乎是不成問題,但實際上出現的問題,卻會花費許多時間及心力來溝通清楚。尤其是 c++ 和 vb 使用上有很大的差異;程式語言的改變,並不是只要把它們看做是工具的改變那麼簡單。
果然朋友告訴我,她們公司很多 SA 及 SD 都只會開規格,不管程式是否做得到。後來發生問題卻多半找不到原來的設計者,而結果最後都要重新設計。這讓同人一點都不意外,因為從朋友主管把棘手任務視為燙手山芋;只要有人接就不用管朋友能不能勝任,那不是他的問題而是朋友自己的問題來看。這些都是朋友所任職公司的軟體品質文化使然,而最根本的原因是基於管理者無效的管理行為所造就的呀。
延伸閱讀:參考噗浪討論串。
一位以前的長官對我說過類似的話: “把 thread 跟 socket 用 class 包一包就好了啊”~
自動引用通知: 同人的生活派對 » Blog Archive » 簡單,複雜世界的致勝之道