2010年1月14日 星期四

如何做一個出色的程式人員(轉)

轉自 http://blog.csdn.net/lkjxshi/archive/2010/01/07/5149541.aspx
愛這行! ! !
從事任何行業都一樣,只有真正的愛上了這份工作,才會投入熱情,才會在順境中自我警醒,在逆境中尋找突破。這個行業的競爭很激烈,你停下來走,別人就立刻會跑步超過你,沒有對這一行業的一種熱情,就很難在困境中保持一種執著的態度堅持到底。
踏踏實實“紮馬步”
今天無意中看了“校長”的“程序員&司機”,其中談到了關於程序員速成的問題。其實速成班畢業的“系統殺手”早已在遍布大江南北,只是在互聯網時代,互聯網的應用型軟件生命週期越來越短,業務驅動主導的情況下,這種速成方式看起來反而提高了企業生產效率。但這樣的人才也就只能寫幾個Facebook上的插件應用或者iGoogle上的Gadget,真的要出Google,Amazon,Yahoo改變互聯網世界的企業,還是需要踏踏實實先學“紮馬步”的人。

很多在學校的同學或者剛剛畢業的朋友都看什麼熱門學什麼,Spring,AJAX,Hibernate等等,又有多少人在看Spring之前把J2SE的NIO,XML,Collection等先好好學習一下,在看AJAX之前把Http協議、DTD、XML Schema好好看一下,在學習Hibernate以前先把J2EE事務規範搞清楚。 Java最大的好處就是開源,能夠讓人們站在更高的起點來作出更多的創新,但是對於學習者來說,不了解自己站在什麼上面的時候,可能摔下來會很痛。在用的時候多問一些為什麼,在遇到問題的時候多找找原因,在了解以後多提出一些優化的方案,這樣才會進步的更快,走的更遠。
記得我前一陣子回家的時候和媽媽聊起最近的工作,雖然媽媽不太明白,但是也知道我現在做的東西技術含量比較高,囑咐我“千萬不要什麼都教給自己的同事,徒弟帶出就不要師傅了”(這當然是老一輩的觀念了)。我和她說:“不要擔心,這種學的會的不教遲早也會,學不會的教了也學不會”。其實這裡說的學的會的就是技術,而學不會的就是經驗和能力。這個行業的人在日積月累過程中並不會去比較掌握的知識面有多廣多深,畢竟這行業更新很快,其實能力強的人在多年的學習中就積累了很多的找問題,分析問題,總結問題,提出建議,發掘創新的能力,這些才是這行業人在發展中最寶貴的財富,也是一個人成長的標誌。開始的過程中,踏踏實實地“紮馬步”,了解一些最基本的知識,那麼上層技術的發展對於他來說僅僅只是一個短暫的學習過程,甚至可以觸類旁通。因此還是要奉勸每一個新入行的同學,踏踏實實,靜下心來做技術,就算工作安排得都是一些浮躁和重複的工作,用高效的方式來結束那些重複勞動,多留一些時間給自己打基礎。
逆境養兵、順境攻城掠地
普通人的工作經歷通常都是起伏不定的,一個人的能力是否能夠得到體現,不僅僅靠自己的努力,有時候也需要“天時”、“地利”。馬雲比較有名的一句話:“今天很殘酷,明天更殘酷,後天很美好,但是大多數人死在明天晚上,看不到後天的太陽!!!”,其實也在說明一件事,就是很多時候需要一種堅持的精神才能得到寶貴的機會。
今天是我進入阿里巴巴滿3年,這3年讓我感觸很深的是:
1.逆境不要氣餒,厚積薄發。
2.順境不要懈怠,一股作氣,把握機會展現自己最大的能力。
3.在逆境和順境的轉換過程中,創造機會,不要坐等機會,要學會不在其位,也謀其職。
最後一點就拿我自己的親身經歷來說,我原來就職於一家通信公司,因此對於互聯網應用的開發和架構設計要比很多人弱,進入阿里巴巴以後工作了半年(主要作業務開發),正好阿里軟件創立,當時被分配到了阿里軟件第一個產品負責客戶模塊,當時的應用是通過MDA框架配置搭建的,開發人員很大程度上不需要自己做太多的編碼,但是這個平台並沒有搭建過如此復雜的大型應用,因此存在著不少問題,當然這些問題都是通過業務產品線的人反饋給平台部的人,當時平台部門人員很少,但是卻要修復和完善諾大一個平台,因此常常擱置開發人員的反饋。當時在自己工作之餘就琢磨和研究平台,同時跟踪調試平台,最後直接給出解決方案,逐漸的就融入到了平台開發中,最後被吸收到了平台部門,進入平台部門以後遇到了兩位很好的老大,根據我的特質給我安排了研究和學習的工作。接下去就是不斷地參與阿里軟件各個基礎平台的構建,核心技術的研究和探索,找到了興趣和工作的最佳結合點。因此,當你困惑的時候首先不是去抱怨,而是審視一下自己是否還有作的不夠的,是否還有可以提升的空間,多給自己製造一些機會,也許我們不用等到後天,也不會死在明天夜裡,明天早晨我們就看到了太陽。
海納百川、冰凍三尺
很多朋友可能聽老師或者前輩也說過類似的話,就是作為一個技術人員要廣也要鑽。就好比現在很多人都要DB Scale out,同時也要Scale up。我從自己的角度來說一下廣和鑽的看法。廣:1.要有容人之量。 (很多時候程序員最大的毛病就是喜歡在技術上比較,未嘗不是好事,但是一個人的能力總歸有限,多看看別人的,多聽聽別人的,也許能夠讓自己少用時間獲得更多的收穫,特別是自己戰友的聲音)2.觸類旁通,多問個為什麼,多跨過界去學習。在阿里巴巴,PD、SA、DBA、UI等等職位各司其職,作為開發的我們其實也應該去了解如何去畫Use Case,如何假設服務器和應用環境,如何寫一些略微複雜的SQL,了解一些DB的特性,如何能夠簡單的作出一些基礎的頁面,使用簡單的css來美化一下門面。這些就是需要多跨過界,多虛心的去學習。鑽:1.本職工作技術一定要紮實,每作一個技術點就要把技術吃透,同時延伸開來,發掘更多的技術亮點。 2. 多接觸新鮮事物,但是有選擇的去了解,有目的的去學習和實踐(目的的源泉就是工作的需求)。 3.學會分享,一個人自己搞懂一個技術很容易,一個人要把他熟悉的技術寫下來就會發覺原來自己還有那麼多沒有搞清楚,一個人如果要把寫下來的東西宣講給別人聽,他就會發現,原來寫下來的僅僅是那麼一小塊,因此學會分享,從自己了解,到記錄分享,到演講傳播就是一個不斷深化和廣化的過程。個人覺得小公司鍛煉人(啥都自己幹),大公司培養人(該干的要干好),因此自己常回頭看看自己在廣和鑽上的不足,可以讓自己進步的更快,學的更全面。
學中醫積累經驗,學西醫尋找突破
中醫以對人體經絡血脈了解為基礎,通過望聞問切來尋找病理根源,行醫年限越久,找問題解決問題的經驗越強。西醫以科學技術為手段,通過試驗化的方式不斷尋找突破,並且將成果積累並且傳遞給更多的人,但是否年限越久越有能力,或者是使用得器材越廣越資深,這點全要看個人對於醫術的理解,如果僅僅停留在對器械的使用和對成果的依賴,那麼只會成為一個庸醫。當然這裡絕對沒有對中西醫的差別化或者評價,僅僅要說明的是,在手段豐富的情況下,容易忽視了本質,只看到了皮毛,積累的時候多一些追根溯源,站在別人的成果上才更踏實,因此在對經驗積累上向中醫多學一些,在尋找突破,傳播技術上多學一點西醫的風格。不過說到低,還是要看學習的人,靜的下心,沉得住氣,才會有積累,才會有突破.
不做一個純粹的“技術人員”
不做一個純粹的“技術人員”,其實也就是說要培養自己多方面的能力,我僅僅把自己想到的一些點列出來說說:
1.項目產品化的思想。現在就算在學校裡面給導師作項目都講究一個商業價值,更不要說在企業里工作。作為一個開發或者架構師最重要的就是要有產品化的概念,這也是項目是否成功的關鍵。軟件的目的是為人服務,如何服務的好,那就要以一個產品的思路去做項目,而不是作為實驗室的實驗品,為客戶提供好服務就會給公司帶來商業價值,對自己的工作也會有很好的肯定。這是一個良性循環,反之則是惡性循環(多贏變成多輸)。如何做到產品化,首先就是需要去了解需求,而不是佈置需求,其次就是設計時多聽取一些不同角色的意見,最後就是在客戶的反饋過程中反省。
2.多一些設計,少砌兩塊磚。代碼寫的再好,其實也只是用磚塊砌牆砌的比較好罷了,這年代已經不會為了節省兩塊磚而給一個優秀工作者了,同時技術的日新月異,總是擺弄技巧,學習花拳繡腿已經跟不上時代了。多了解一些行業背景,多參與一些架構設計,將業務設計用良好的架構體係來實現,那才是一個稱得上有能力的技術人員。
3.學會前瞻,學會自己找事。記得我剛進平台組,最不適應的就是我的老大基本不太給我佈置太詳細的任務,這就好比進入大學,老師不給作業,自己反而心裡沒底了,其實自己找事的過程就是一個自己學習的過程,當我一天下來感覺沒幹什麼,沒學到什麼,心裡就開始發虛。如何能夠前瞻性的去選擇一些目標,如何對現有情況提出一些創新和建議,都是一種更高能力的要求。現在SIP組也是一樣,在我們這個組裡雖然現在每週還是佈置一定工作,但是我對其他兩個同學的要求也是希望能夠有前瞻性,學會發現問題,預防問題,更甚者就是提出創新。當你具備了這種環境的時候,你就需要鍛煉自己的能力了。
4.做個讓老大放心的人。這點也許很多人和我一樣在業務上很早就讓老大覺得可以安心睡覺了,但是其實另一方面,如何在商業角度看問題,如何培養新人,如何協調部門合作等等,都會讓你的老大更加安心。另一方面來看,其實在這些能力的培養過程中,你不再局限於業務水平的提升,讓自己在更多方面更加成熟。
六脈神劍
今天是我進入阿里巴巴3年整。在阿里巴巴有個說法,只有在阿里巴巴工作了3年,才能算是一個真正的阿里人,因為理解阿里巴巴的文化,需要三年時間的沉澱。這裡就從一個寫代碼的角度分享一下阿里巴巴的六脈神劍文化。
客戶第一:如果你是做架構的,作平台的,作開發工具的,那麼客戶就是和自己一樣的開發者,多學習一下開源項目的精神,多從使用者角度去考慮問題,那麼你的東西才會被更多的人認可和使用,永遠不要去做一個“玩具”的開發者。如果你是做產品的,那麼就多聽,多想,多問,永遠不要急著去寫代碼。
擁抱變化:敏捷開發的基本原則。互聯網應用尤其如此,不要害怕變化,在需求和架構之間找到平衡點(說起來比較容易^_^)。
團隊合作:一個人的力量始終有限,分享,交流,合作能夠讓自己事半功倍,學的更多,看得更遠。
誠信:說到就要做到,做了就要做好,做軟件開發一樣也需要有責任感,貼滿狗皮膏藥的代碼上如果註釋是你的名字未來也會給你蒙羞。踏踏實實地用心去寫代碼,去設計架構,不經意間得到的要遠遠比那麼一點工資來的多。
激情:還是那句話,你如果不愛這行,乘著年輕趕快轉行。
敬業:專業執著,精益求精
很感謝各位能看完這篇感受分享,以上都僅僅是個人的一點感受,能夠引起共鳴那麼證明我們的經歷很相似,如果能夠給到你一點幫助,那寫這些就真的有意義了。不論你在別人眼裡是一個資深架構師還是開發人員,其實如果你愛這個行業的話,你應該就是一個寫代碼的,但是每個人的經歷都是一本“寫代碼的自我修養”,珍惜自己的選擇,讓自己在興趣和工作中找到最佳結合點。
--------------------------------------------------------- 這篇文章真的很棒,或許身為程式人員的你可以當成一份守則來看

1 則留言: