無意間發現的好文,分享給大家閱讀~~真的是好文~~
——“阿姨!你的錢包掉了!”
——“謝謝你!小朋友!你真是一個心靈高尚的人!”
——“不用謝!這是我應該做的,我的名字叫少先隊員……”(伴隨著一串銀鈴般地笑聲,小朋友消失在風里,沒有留下姓名……)
嗯,我承認這是惡搞了一把那個年代的小學生作文——韓寒出現之前的那種小學生作文。這種作文中有一個隱含的前提:“拾金不昧、做好事不留姓名”這種事情,在那個時代的背景下,會被判斷為“這是我應該做的”。
那么,在換了一個時代背景之后,什么才是“你應該做的”呢?或者我們換一個容易觀察的角度——在一個特定的職業中(醫生/教師/學者/警察/記者/公仆 /開發商/律師/法官/摔倒的老太/etc),什么才是“你應該做的”呢?怎樣算是平庸?怎樣算是正常?怎樣算是杰出和優秀?做到什么程度才算是完成了本職工作,才算是完成了“你應該做的”事情?
——既然我這個BLOG是和“碼農”這個職業息息相關的,那現在我們就假設你是一個碼農:
你精通各種算法,宰殺了無數遍“豬”與“雞”(珠與璣),對RBTree/BSPTree/SuffixTree/HashTree的原理和應用張口就來;你會估計和比較各種算法的O/Θ/Ω/OO;你知道如何深入淺出地講解算法,知道如何編程實現和實測的表現,你還能夠在實際工作中選用正確的算法……那么,你覺得自己很優秀,還是說“這是你應該做的”?
你精通不少語言,也精通一些很“難”的語言中的很“討厭”的特性,比如C++中的重載決議/偏模板特化/名字空間/多繼承/etc,你還能夠緊追語言的“最新發展”,對GC/closure/multimethod/Continuation/AMB這些“新發明”的東西了如指掌(嗯,好吧,其實這些不是新的,只是從LISP那里借鑒了一下下)……那么,你覺得自己很優秀,還是說“這是你應該做的”?
你懂得多數流行平臺的開發,掌握多數開發包的API;你能夠使用各種輔助工具進行綜合、高效地調試;在解決問題時你有豐富的經驗和清醒的頭腦,以及實證至上的謹慎;你對開發/profiling/testing有良好的理解和實踐,模式/重構/TDD/etc對你來說是合手的工具而不是限制你的牢籠……那么,你覺得自己很優秀,還是說“這是你應該做的”?
你了解不同用戶的興趣在哪里、對軟件錯誤的容忍度有多高,你知道不同設備上的用戶習慣于如何操作,你知道用戶愿意在哪個功能上掏錢,你懂得如何借鑒和超越競爭對手的產品,你能夠跟上當前用戶對功能的期望(甚至預見到未來的)……那么,你覺得自己很優秀,還是說“這是你應該做的”?
你了解可用性的意義、懂得色彩學,能夠設計出有條理、不凌亂的界面,能夠發明用戶喜愛的操控方式,能夠設計貼心、聰明的功能,還能夠用PS/AI /Painter制作素材,并且用程序實現你的設計……那么,你覺得自己很優秀,還是說“這是你應該做的”?(另,引用:“說一個軟件具有‘可用性’,能算是一種贊美嗎?只是合格罷了!”)
你精通計算機原理結構,知道各種外設的IO速度,對它們訪問方式有精晰的理解,會寫device driver,而且你還知道典型外設產品的可靠性在什么樣的數量級上……那么,你覺得自己很優秀,還是說“這是你應該做的”?
你設計過不同規模的系統,知道在什么樣的級別下應該使用什么樣的技術;你知道性能熱點通常在哪里,也精通于查找和解決熱點;你知道如何平衡功能、時間和質量,知道如何在特定情況下取舍;你知道流行的架構的優缺點,你知道哪種硬件能夠構成什么樣的系統、當機時間控制在什么樣的級別上;你知道如何安排指標去區分高低端產品,知道在給定的預算/成本下能夠提供什么樣的產品,你還知道如何對系統進行cost down卻不會損失可靠性……那么,你覺得自己很優秀,還是說“這是你應該做的”?
你熟悉各種軟件開發模式;你有豐富的知識積累,卻又不守舊、勇于接受新鮮事物;你非常善于開會,能夠在很短的時間內取消語言表面上的分歧讓大家達成一致……那么,你覺得自己很優秀,還是說“這是你應該做的”?
你勤勞肯做,工作中不偷奸耍滑,很有大局觀而且也重視細節問題;你性格溫和,樂于助人,團隊成員都說你是一個非常好相處的人,連沒見過面的同事也對你贊不絕口……那么,你覺得自己很優秀,還是說“這是你應該做的”?
……
造句練習:你能夠……能夠……還能夠……即使在XX的時候也能夠YY……那么,你覺得自己很優秀,還是說“這是你應該做的”?
……
如果你做到了以上若干條(注),那么在我看來,你成功地完成了你自己的本職工作,完成了自己做為一個工程師(而不是科學家)的“應該做的事情”—— 也許你比身邊人的平均水平要高出一截,也許你超過了整個業界的平均水平,但那是不是就意味著“優秀”呢?如果那僅僅是你“應該做到的”呢?
最后,你做為一名人類,能夠進行獨立的思考,在清晰邏輯和豐富知識的基礎上擁有批判性的思維,你懂經濟、懂民主;你不憤青、不腦殘、不意淫、不從眾;你不受洗腦和煽動的影響、不信武術和中醫……那么,你覺得自己很優秀,還是說“這是你應該做的”?
……
在你的眼里,什么才是“你應該做的”?
……
延伸閱讀 :
(下面的每一個鏈接都能對應到上面文章里的某句話,用來例證,而不是證明)
Teach Yourself Programming in Ten Years, by Peter Norvig
The Pragmatic Programmer 注重實效的程序員, 中文摘錄版
Algorithm Repository, by Steven Skiena
快排為什么那樣快, by Pongba
Beating The Averages, by Paul Graham
97 Things Every Software Architect Should Know
Anti Pattern, KornerHill譯自Wiki
常見邏輯謬誤(轉)
Java語言學校的危險性, by Joel Spolsky, 阮一峰(譯)
What Every Programmer Should Know About Memory, by Ulrich Drepper
Proebsting’s Law, by Todd Proebsting; Moore’s Law, by Gordon Moore
注:上面列舉了許多的條目,但是這些條目涉及了很多領域,所以并不要求一個人同時具備這些能力。
(完)
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/yuankaining/archive/2009/12/04/4939809.aspx