一個印度程序員的生活領悟
我叫Siva,是印度海得拉巴的一名軟件開發(fā)人員。軟件開發(fā)是一份令人興奮的工作,因為你每天都可以看到新事物。如果沒有新的事物,我們還可以賦予 一些舊概念新的有趣的名字,然后自娛自樂。但是,從我的角度來說,在印度做一個軟件開發(fā)人員略有不同,也有點難。總之,一言難盡。
來自于其他國家的軟件開發(fā)人員對印度軟件開發(fā)人員的看法,讓我大吃一驚。
所以今天,我想和大家分享我作為印度IT行業(yè)中的一名軟件開發(fā)人員的感受。
ps:這些純粹是個人觀點,不喜勿噴。
我的***份工作
我的***份工作是在一家小公司里,職位是Java開發(fā)人員。并且我的幾個非常親密的朋友也加入了這家公司。我很慶幸能在我職業(yè)生涯的初期就和一些非常有才華的人一起工作。
我的***個經(jīng)理習慣于強迫我們在工作的第2到3個月時間內(nèi)只使用 Notepad+ + / EditPlus編碼,目的是為了讓我們熟悉如何編譯和運行程序,并知道編譯時和運行時的類路徑等。但是,架構師對此頗不認同。有一天,他看見我在用 EditPlus編碼,就走到我身邊,說:“難道你去打仗都不用武器的嗎?”。他從我一片茫然的表情中知道了我并不知道他在說什么。他將鍵盤拖到他面前, 下載了Lomboz Eclipse(一種Eclipse的變體,不過現(xiàn)在已經(jīng)沒落了),然后給我解說如何使用它。此外,時不時地,他還教了我一些很有趣的鍵盤快捷鍵,用 IDE代替Notepad/ EditPlus寫代碼的速度明顯快多了。
我從他們身上學到了了解事物的工作原理以及如何有效使用工具來加快工作的重要性。
對了,我的團隊領導是實戰(zhàn)經(jīng)驗非常豐富的開發(fā)人員。他記得大多數(shù)核心的Java API方法,并對設計模式有 一個很好的理解。他是一個***主義者。即使只是代碼縮進不正確,他也不同意我們提交代碼。有一天,我們正在加班,時間甚至已經(jīng)是第二天凌晨了,因為我們得 提供一些緊急交付。然而即使這樣,他也堅持要糾正縮進,清理導入的包和未使用的變量,嚴格按照TABs和空格一致等原則。我們抱怨不休。
但是后來在融合來自于不同開發(fā)人員的所有代碼更改的時候,我們才意識到這么做的重要性。他總是說:“既然要做,就要把事情做好。否則就不要做。”
至于團隊中的其他成員,由于我們也是好朋友,所以彼此之間沒有任何沖突,也沒有政治矛盾。我們常常周五晚上開party直至凌晨2點,在辦公室講笑話樂得哈哈大笑。一切都是那么美好。
開啟我真正的旅程
3年后,我離開了這家公司,跳槽到一家大公司里,大公司意味著更好的工作,更高的工資和更佳的工作文化。然而我很快發(fā)現(xiàn),并不是所有的東西,大公司都比小公司好!在那里,我遇到了一個有著可怕代碼庫的遺留應用程序,看得我真是頭大無比。
此外,和我一起工作的開發(fā)人員,都是這家公司的老員工,他們不愿意接受任何新的東西,沒有興趣使應用程序變得更好,只想墨守陳規(guī),即使原來用慣的方法是令人痛苦不堪。
由于印度IT產(chǎn)業(yè)主要是基于離岸開發(fā)模式,大部分的時間我們都在維護遺留的代碼庫。我們很少有機會去搞新建的項目。即使是那些關鍵架構/設計部分是由現(xiàn)場團隊完成的新建項目。
幸運的是我有機會去參與一些新建項目,也涉及了從頭開始設計應用程序的過程。
許多公司里對那些想要繼續(xù)走技術路線不想轉去管理部門的程序員,都沒有明確的職業(yè)發(fā)展規(guī)劃。更糟糕的是有些公司迫使開發(fā)人員在具備了一定年限的工作經(jīng)驗之后,步入人事管理的行列。
青菜蘿卜各有所愛,不是所有的開發(fā)人員都熱衷于技術,這無可厚非。有的人是做一天和尚撞一天鐘,有的人只想著不擇手段完成就好,不管代碼質量和可維護性如何。在印度,你很難找到那種充滿激情的開發(fā)人員,因為大部分人只是將編程當作工作而已,而是不是因為樂趣和愛好。
有時,我學會了新的東西,或做了一些很酷的玩意兒,環(huán)顧四周想分享我的激動心情之時,卻發(fā)覺沒有人能夠理解我的這種興奮之情。
寫博客
當我在一個項目中使用Struts 1.x框架的時候,我碰到了一些棘手的問題。并且在努力搗鼓了3天之后依然找不到任何解決方案。我不停地調(diào)試,搜索了所有的書籍和論壇。終于發(fā)現(xiàn)有人針對 這個問題剛好寫了一篇文章,并提供了解決方案。果然他的解決方案是有效的。我向那位博客作者表達了萬分感謝。但想到還有很多不知道作者的博客也幫助了我很 多,于是也想開一個博客回饋社區(qū)。于是,我有了我自己的博客www.sivalabs
不久,我的文章發(fā)表在了DZone和JavaCodeGeeks社區(qū)網(wǎng)站上。雖然我的英語寫作能力不夠好,但我一直在寫文章,希望通過練習能夠熟能生巧。
當看到有人對我的文章評論“在你的文章中我學到了一些東西”的時候,我真的非常開心。我從StackOverflow,博客,論壇等社區(qū)中獲得了很多幫助,如果可能的話我也想盡我的微薄之力回饋給社區(qū): -)
寫書
之后,我寫的文章陸陸續(xù)續(xù)發(fā)表在了DZone和JavaCodeGeeks上,我的博客擁有了越來越多的訪問者。終于有一天,我收到了來自Packt出版社的一封電子郵件,上面問我是否有興趣寫一本關于MyBatis的書,我當時真的是激動萬分。
在我答應寫這本書之后,他們開始向我解釋寫作流程和支付的詳細信息。他們可能不知道,即使沒有任何報酬,我也愿意寫這本書。我同意寫這本書是因為我對技術的熱情,而不是為了賺錢。
當我差不多完成我的***本書的時候,他們要求我寫另一本關于PrimeFaces的書,我同意了。我大概花了18個月的時間來寫這兩本書。在這一年 半的時間里,我沒有任何休息,沒有周末,也沒有外出游玩,什么都沒有。一有時間我就去寫書,或閱讀我已經(jīng)寫好的內(nèi)容看看能不能改動什么使表達描述更精準。
也正是這段時間,讓我意識到有一些自己的空余時間是多么的重要。寫書是非常耗費時間的。如果你寫書的目的是為了賺錢,那么我建議你換一種方法!
然后有一天,我收到了一個快遞,里面是《MyBatis》這本書的印刷本。看著自己的勞動成果變?yōu)楝F(xiàn)實,感覺真心太棒了。我激動不已。
充滿激情的開發(fā)人員面臨的挑戰(zhàn)
印度的軟件開發(fā)人員需要面對很多問題。
優(yōu)秀的開發(fā)人員就像戰(zhàn)爭英雄
由于我們要做的大多數(shù)是遺留項目,或是在維護模式下的項目,因此管理層更喜歡那些忠誠的,堅守在公司的老員工(盡管很多老員工拿的工資并不高或者公司并沒有將他們當作一種資源對待),而不是技術力量雄厚的人才。
優(yōu)秀的開發(fā)人員就像戰(zhàn)爭英雄,雖然在我們開啟新項目或創(chuàng)建一些核心設計的時候需要這樣的人才,但是一旦核心設計已經(jīng)搞定了,其他的開發(fā)人員按照設計 走也可以添加方法到流的時候,就像一旦戰(zhàn)爭結束了,那些英雄就會變得無人問津一樣,很多公司就不會再去關注那些優(yōu)秀的開發(fā)人員。
許多非印度技術人員討厭印度的開發(fā)人員
我經(jīng)??吹揭恍┡険粲《溶浖_發(fā)人員的文章。當然,這只是一些個人的意見。
請參閱https://avinashsingh.wordpress.com/2007/04/05/a-myth-called-the-indian-programmer/并閱讀留言。甚至有人想贊助巴基斯坦轟炸印度。真是有夠幼稚的!。
印度IT企業(yè)的主要問題是,為了獲得項目,他們讓客戶相信他們能在幾乎不可能的時間內(nèi)交付項目。而為了達成這些瘋狂的時間線,他們將責任下放到管理 人員身上,然后管理人員強迫團隊領導接受任務,而團隊領導再將截止時間扔給開發(fā)人員。這就是印度的開發(fā)人員面臨的***問題。許多印度的開發(fā)人員不知道怎么 說“NO”。他們只會默默地接受這種瘋狂的時間計劃,竭盡全力地完成。而這整個過程的結果是“不可維護的蹩腳的代碼”。
但是,我還有幾個問題?,F(xiàn)場的非印度客戶怎么會相信“印度離岸團隊可以用6個月的時間建造現(xiàn)場團隊預估要18個月的同一個項目”?他們?yōu)槭裁床灰蠼K端到終端的測試套件?他們?yōu)槭裁床灰蟠a質量報告?
一分價錢一分貨!你支付多少,你才會得到多少!
那些大放厥詞說“所有印度程序員都很差勁”的人,應該先想清楚再說。這樣一棍子打死一船人,是要不得的。每個地方每個國家都既有優(yōu)秀的開發(fā)人員,也 有差勁的開發(fā)人員。我曾經(jīng)和一些非常囂張傲慢的現(xiàn)場開發(fā)人員合作過。那么難道說所有的現(xiàn)場開發(fā)人員都是囂張的嗎?這當然是大錯特錯的。
我堅信,在印度也有很多偉大的開發(fā)人員和架構師,而且我和他們共事過。
也有很多像我這樣希望每天都能學到什么,想要成為比昨天更優(yōu)秀的開發(fā)人員。這么多年時間中,我學會了“如何快速學習新事物”。所以,我竭盡全力學 習,為明天做好準備。無論你要我使用的是Spring還是JavaEE,Python還是RoR,Eclipse還是NetBeans,我都能手到擒來, 游刃有余。
繼社區(qū)之后
正如我說,在印度很難找到充滿激情的開發(fā)人員,因此我希望能夠多多接觸世界各地使用社交網(wǎng)絡如Twitter的充滿激情的開發(fā)人員。
我喜歡參加技術會議,喜歡接觸偉大的開發(fā)人員。但不幸的是,相比美國,印度這樣的會議很少很少。所以,我會在InfoQ,Parleys和Youtube上觀看那些會議會談,這是我的盛宴,令我心曠神怡。
我喜歡Venkat Subramaniam (@venkat_s)的演講,內(nèi)容豐富又有趣。在閱讀了他的《Programming Groovy 2: Dynamic Productivity for the Java Developer》之后,我會情不自禁地大笑。他真的很了不起。
Venkat Subramaniam關于談判的演講 https://www.
Venkat Subramaniam提出的關于如何重構的演講 https://www.
《JVM語言能做的超酷的10件事》 https://www.
《尖頭發(fā)老板和務實程序員》——Venkat Subramaniam https://www.
關于Scala https://www.
我是Rod Johnson的忠實粉絲,我喜歡他關于企業(yè)家的言論http://www.i
我還看了他的“Scala 2018”的演講 https://www.
我也很喜歡Uncle Bob的演講 https://blog
此外還有很多超棒的Java社區(qū)***的演講和博客是我所推崇的,如
Antonio Goncalves @agoncal http://antoniogoncalves.org/
Adam Bien @AdamBien http://www.adam-bien.com/roller/abien/
Reza Rahman @reza_rahman https://blogs.oracle.com/reza/
Arun Gupta @arungupta http://blog.arungupta.me/
Josh Long @starbuxman
Phil Webb @phillip_webb
Cagatay Civici @cagataycivici http://www.primefaces.org/
Oliver Gierke @olivergierke http://olivergierke.de/
David Blevins @dblevins http://www.tomitribe.com/blog/
等等等等。
此外還有一些明星博客作者寫的好博客也不容錯過
Baeldung @baeldung http://www.baeldung.com/
Petri Kainulainen @petrikainulaine http://www.petrikainulainen.net/
Vlad Mihalcea @vlad_mihalcea http://vladmihalcea.com/
Abhishek Gupta @abhi_tweeter https://abhirockzz.wordpress.com/
Manuel Jordan @dr_pompeii http://manueljordanelera.blogspot.in/2014/06/manuel-jordan.html
Lukas Eder @lukaseder http://blog.jooq.org
Trisha Gee @trisha_gee http://trishagee.github.io
Thorben Janssen @thjanssen123 http://www.thoughts-on-java.org
Nicolas Frankel @nicolas_frankel http://blog.frankel.ch
等等等等。
我真的愛死所有頂呱呱的Java社區(qū)了!
展望美好未來
近年來,很多事情正在慢慢改變。如今的印度IT產(chǎn)業(yè)已經(jīng)不再完全依賴基于美國的項目。印度企業(yè)中技術應用增長了很多。但是,除非思維過程得到改變,否則一切就都還是在原地踏步走。企業(yè)不應該再異想天開讓“9個開發(fā)者1個月時間發(fā)布一個新項目”。
開發(fā)人員應該更專業(yè),并且當要求他們?nèi)プ鲆恍┎荒芨哔|量完成代碼的實現(xiàn)任務的時候,能夠鼓起勇氣說“NO”,。
總之,通過這些年的學習,我明白了軟件開發(fā)并不都意味著技術。關鍵是要理解業(yè)務領域,重視其他人的溝通交流。
希望一切會變得越來越好: -)
譯文鏈接:http://www.codeceo.com/article/india-programmer-life.html
英文原文:My Life as a Software Developer in India