1. 程式人生 > >一個印度程式設計師的生活領悟

一個印度程式設計師的生活領悟

我叫Siva,是印度海得拉巴的一名軟體開發人員。軟體開發是一份令人興奮的工作,因為你每天都可以看到新事物。如果沒有新的事物,我們還可以賦予一些舊概念新的有趣的名字,然後自娛自樂。但是,從我的角度來說,在印度做一個軟體開發人員略有不同,也有點難。總之,一言難盡。

來自於其他國家的軟體開發人員對印度軟體開發人員的看法,讓我大吃一驚。

所以今天,我想和大家分享我作為印度IT行業中的一名軟體開發人員的感受。

ps:這些純粹是個人觀點,不喜勿噴。

我的第一份工作

我的第一份工作是在一家小公司裡,職位是Java開發人員。並且我的幾個非常親密的朋友也加入了這家公司。我很慶幸能在我職業生涯的初期就和一些非常有才華的人一起工作。

我的第一個經理習慣於強迫我們在工作的第2到3個月時間內只使用 Notepad+ + / EditPlus編碼,目的是為了讓我們熟悉如何編譯和執行程式,並知道編譯時和執行時的類路徑等。但是,架構師對此頗不認同。有一天,他看見我在用EditPlus編碼,就走到我身邊,說:“難道你去打仗都不用武器的嗎?”。他從我一片茫然的表情中知道了我並不知道他在說什麼。他將鍵盤拖到他面前,下載了Lomboz Eclipse(一種Eclipse的變體,不過現在已經沒落了),然後給我解說如何使用它。此外,時不時地,他還教了我一些很有趣的鍵盤快捷鍵,用IDE代替Notepad/ EditPlus寫程式碼的速度明顯快多了。

我從他們身上學到了瞭解事物的工作原理以及如何有效使用工具來加快工作的重要性。

對了,我的團隊領導是實戰經驗非常豐富的開發人員。他記得大多數核心的Java API方法,並對設計模式有一個很好的理解。他是一個完美主義者。即使只是程式碼縮排不正確,他也不同意我們提交程式碼。有一天,我們正在加班,時間甚至已經是第二天凌晨了,因為我們得提供一些緊急交付。然而即使這樣,他也堅持要糾正縮排,清理匯入的包和未使用的變數,嚴格按照TABs和空格一致等原則。我們抱怨不休。

但是後來在融合來自於不同開發人員的所有程式碼更改的時候,我們才意識到這麼做的重要性。他總是說:“既然要做,就要把事情做好。否則就不要做。”

至於團隊中的其他成員,由於我們也是好朋友,所以彼此之間沒有任何衝突,也沒有政治矛盾。我們常常週五晚上開party直至凌晨2點,在辦公室講笑話樂得哈哈大笑。一切都是那麼美好。

開啟我真正的旅程

3年後,我離開了這家公司,跳槽到一家大公司裡,大公司意味著更好的工作,更高的工資和更佳的工作文化。然而我很快發現,並不是所有的東西,大公司都比小公司好!在那裡,我遇到了一個有著可怕程式碼庫的遺留應用程式,看得我真是頭大無比。

此外,和我一起工作的開發人員,都是這家公司的老員工,他們不願意接受任何新的東西,沒有興趣使應用程式變得更好,只想墨守陳規,即使原來用慣的方法是令人痛苦不堪。

由於印度IT產業主要是基於離岸開發模式,大部分的時間我們都在維護遺留的程式碼庫。我們很少有機會去搞新建的專案。即使是那些關鍵架構/設計部分是由現場團隊完成的新建專案。

幸運的是我有機會去參與一些新建專案,也涉及了從頭開始設計應用程式的過程。

許多公司裡對那些想要繼續走技術路線不想轉去管理部門的程式設計師,都沒有明確的職業發展規劃。更糟糕的是有些公司迫使開發人員在具備了一定年限的工作經驗之後,步入人事管理的行列。

青菜蘿蔔各有所愛,不是所有的開發人員都熱衷於技術,這無可厚非。有的人是做一天和尚撞一天鐘,有的人只想著不擇手段完成就好,不管程式碼質量和可維護性如何。在印度,你很難找到那種充滿激情的開發人員,因為大部分人只是將程式設計當作工作而已,而是不是因為樂趣和愛好。

有時,我學會了新的東西,或做了一些很酷的玩意兒,環顧四周想分享我的激動心情之時,卻發覺沒有人能夠理解我的這種興奮之情。

寫部落格

當我在一個專案中使用Struts 1.x框架的時候,我碰到了一些棘手的問題。並且在努力搗鼓了3天之後依然找不到任何解決方案。我不停地除錯,搜尋了所有的書籍和論壇。終於發現有人針對這個問題剛好寫了一篇文章,並提供瞭解決方案。果然他的解決方案是有效的。我向那位部落格作者表達了萬分感謝。但想到還有很多不知道作者的部落格也幫助了我很多,於是也想開一個部落格回饋社群。於是,我有了我自己的部落格 www.sivalabs.in,上面我陸陸續續寫了一些我學到的東西。

不久,我的文章發表在了DZone和JavaCodeGeeks社群網站上。雖然我的英語寫作能力不夠好,但我一直在寫文章,希望通過練習能夠熟能生巧。

當看到有人對我的文章評論“在你的文章中我學到了一些東西”的時候,我真的非常開心。我從StackOverflow,部落格,論壇等社群中獲得了很多幫助,如果可能的話我也想盡我的微薄之力回饋給社群:  -)

寫書

之後,我寫的文章陸陸續續發表在了DZone和JavaCodeGeeks上,我的部落格擁有了越來越多的訪問者。終於有一天,我收到了來自Packt出版社的一封電子郵件,上面問我是否有興趣寫一本關於MyBatis的書,我當時真的是激動萬分。

在我答應寫這本書之後,他們開始向我解釋寫作流程和支付的詳細資訊。他們可能不知道,即使沒有任何報酬,我也願意寫這本書。我同意寫這本書是因為我對技術的熱情,而不是為了賺錢。

當我差不多完成我的第一本書的時候,他們要求我寫另一本關於PrimeFaces的書,我同意了。我大概花了18個月的時間來寫這兩本書。在這一年半的時間裡,我沒有任何休息,沒有周末,也沒有外出遊玩,什麼都沒有。一有時間我就去寫書,或閱讀我已經寫好的內容看看能不能改動什麼使表達描述更精準。

也正是這段時間,讓我意識到有一些自己的空餘時間是多麼的重要。寫書是非常耗費時間的。如果你寫書的目的是為了賺錢,那麼我建議你換一種方法!

然後有一天,我收到了一個快遞,裡面是《MyBatis》這本書的印刷本。看著自己的勞動成果變為現實,感覺真心太棒了。我激動不已。

充滿激情的開發人員面臨的挑戰

印度的軟體開發人員需要面對很多問題。

優秀的開發人員就像戰爭英雄

由於我們要做的大多數是遺留專案,或是在維護模式下的專案,因此管理層更喜歡那些忠誠的,堅守在公司的老員工(儘管很多老員工拿的工資並不高或者公司並沒有將他們當作一種資源對待),而不是技術力量雄厚的人才。

優秀的開發人員就像戰爭英雄,雖然在我們開啟新專案或建立一些核心設計的時候需要這樣的人才,但是一旦核心設計已經搞定了,其他的開發人員按照設計走也可以新增方法到流的時候,就像一旦戰爭結束了,那些英雄就會變得無人問津一樣,很多公司就不會再去關注那些優秀的開發人員。

許多非印度技術人員討厭印度的開發人員

我經常看到一些抨擊印度軟體開發人員的文章。當然,這只是一些個人的意見。

印度IT企業的主要問題是,為了獲得專案,他們讓客戶相信他們能在幾乎不可能的時間內交付專案。而為了達成這些瘋狂的時間線,他們將責任下放到管理人員身上,然後管理人員強迫團隊領導接受任務,而團隊領導再將截止時間扔給開發人員。這就是印度的開發人員面臨的最大問題。許多印度的開發人員不知道怎麼說“NO”。他們只會默默地接受這種瘋狂的時間計劃,竭盡全力地完成。而這整個過程的結果是“不可維護的蹩腳的程式碼”。

但是,我還有幾個問題。現場的非印度客戶怎麼會相信“印度離岸團隊可以用6個月的時間建造現場團隊預估要18個月的同一個專案”?他們為什麼不要求終端到終端的測試套件?他們為什麼不要求程式碼質量報告?

一分價錢一分貨!你支付多少,你才會得到多少!

那些大放厥詞說“所有印度程式設計師都很差勁”的人,應該先想清楚再說。這樣一棍子打死一船人,是要不得的。每個地方每個國家都既有優秀的開發人員,也有差勁的開發人員。我曾經和一些非常囂張傲慢的現場開發人員合作過。那麼難道說所有的現場開發人員都是囂張的嗎?這當然是大錯特錯的。

我堅信,在印度也有很多偉大的開發人員和架構師,而且我和他們共事過。

也有很多像我這樣希望每天都能學到什麼,想要成為比昨天更優秀的開發人員。這麼多年時間中,我學會了“如何快速學習新事物”。所以,我竭盡全力學習,為明天做好準備。無論你要我使用的是Spring還是JavaEE,Python還是RoR,Eclipse還是NetBeans,我都能手到擒來,遊刃有餘。

繼社群之後

正如我說,在印度很難找到充滿激情的開發人員,因此我希望能夠多多接觸世界各地使用社交網路如Twitter的充滿激情的開發人員。

我喜歡參加技術會議,喜歡接觸偉大的開發人員。但不幸的是,相比美國,印度這樣的會議很少很少。所以,我會在InfoQ,Parleys和Youtube上觀看那些會議會談,這是我的盛宴,令我心曠神怡。

我喜歡Venkat Subramaniam (@venkat_s)的演講,內容豐富又有趣。在閱讀了他的《Programming Groovy 2: Dynamic Productivity for the Java Developer》之後,我會情不自禁地大笑。他真的很了不起。

我是Rod Johnson的忠實粉絲,我喜歡他關於企業家的言論 http://www.infoq.com/interviews/rod-johnson-entrepreneurialism,以及在《Things I wish I’d known》 http://www.infoq.com/presentations/Things-I-Wish-I-d-Known中,他分享了他構建Spring框架,並圍繞它建立一個生態系統的過程。真的很棒。

我還看了他的“Scala 2018”的演講 https://www.youtube.com/watch?v=DBu6zmrZ_50,以及關於Scala這個話題在youtube上的討論https://www.youtube.com/watch V = hZlxBRnxzDc。他採取的建設性批評方式讓我覺得很精彩。他真的很牛。

此外還有很多超棒的Java社群領導者的演講和部落格是我所推崇的,如

等等等等。

此外還有一些明星部落格作者寫的好部落格也不容錯過

等等等等。

我真的愛死所有頂呱呱的Java社群了!

展望美好未來

近年來,很多事情正在慢慢改變。如今的印度IT產業已經不再完全依賴基於美國的專案。印度企業中技術應用增長了很多。但是,除非思維過程得到改變,否則一切就都還是在原地踏步走。企業不應該再異想天開讓“9個開發者1個月時間釋出一個新專案”。

開發人員應該更專業,並且當要求他們去做一些不能高質量完成程式碼的實現任務的時候,能夠鼓起勇氣說“NO”。

總之,通過這些年的學習,我明白了軟體開發並不都意味著技術。關鍵是要理解業務領域,重視其他人的溝通交流。

希望一切會變得越來越好:  -)