不做民工化的程序員
和大學同學祥子聊天討論到這幾年對開發的體會的時候,他說:"我在工作的時候就是在框架的基礎上把需求轉換為代碼,一沒有學到業務,二沒有學到技術!那是非常的抑郁!".軟件發展到今天,就是需要在框架的基礎上大規模的復制API,把相關的需求轉換為代碼,讓公司能夠在最短的時間做出項目或者是一個新的產品。這樣的操作對公司的好處是:1:分工細化,缺少了誰都行;2:可以大規模的利用外包來節約成本。一句話形容一下:提高開發效率,降低開發成本。但是對程序員來說,這樣對個人的成長非常的不利。繼續拿出幾個問題來反思自己!
1:你在奉獻智慧么?
書寫代碼的過程中,必然會涉及到N多的.老代碼的維護,有沒有考慮去抽象公用方法,有沒有考慮去改造包結構,有沒有考慮一些代碼上的重構,有沒有考慮解決系統的性能瓶頸和可用性的問題?思考是必須的,只有在思考的過程中人才會成長起來。想辦法去奉獻智慧,人才可能慢慢的成長!
在項目組中,動手去解決問題要比說出自己的想法更加重要。因為在你考慮是否應該這樣做的時候,別人很可能就走到了你的前面。所以,在提高軟件可用性的前提下,任何的嘗試都應該動手去實施,作為行動的巨人。(這個地方本人是吃虧不少,總是想著和系統架構師的想法保持一致了,有些情況下,系統架構師是錯誤的。)
2:看的知識是不是越來越底層?
在平時接觸到不同的框架的時候,一般花上一天的時間看看架構圖并且理解其中關鍵環節的配置調用就可以了。但是如果想提高自己的架構水平,還是不斷的看別人的源代碼,吸取別人思想的精華部分,然后自己在工作中去發揮智慧。Rod Johson寫的spring框架也是在不斷吸取別人思想的基礎上逐漸的發展壯大起來的,在他大聲疾呼"develop without EJB"的時候,這個人對EJB非常的熟悉,不信的話可以去看看書的分析。其實EJB2.0是一個思想庫,只是我現在還沒有時間去研究這個。
cache對象的時候,有沒有考慮到對象的clone,HashMap中的clone的方法是深clone還是淺clone,ArrayList和LinkedList呢?什么時候在創建ExectorService對象的時候使用newFixedThreadPool而不是newCachedThreadPool?java nio你知道多少?如果一開始我寫了足夠理解并發,積分計算和公共出發拉直的代碼我會寫成另外一個樣子。那個為了改善性能的jobs我TMD也不會寫一個quartz的job了。我只能現在慢慢的修改其中代碼來提升系統的性能和程序的健壯性。我需要花大功夫研究java的基礎知識。
3:和高手交流了么?
其實網上很多技術blog寫的都很好,尤其那些持續更新的架構和技術的程序員們更是值得學習。找到他們,和他們討論一個方面的技術。真正的高手都是謙虛的,討教一些他們知道的東西,這些人會不遺余力的指導你,前提是他們不是很忙。
4:必殺技是?
行走江湖,怎么能沒有看家本領,其實大部分程序員都沒有。有人說自己精通java,但是我問一下他對concurrent包的了解情況的時候,卻是一問三不知。如果是我寫簡歷,我更樂意寫:精通java 的并發編程和nio.其實其他方面也需要關注,但是談到精通就差一點了。
如果未來和別人討論技術的時候,我希望總是能夠談到一些讓別人覺得成長的知識。
學習技術不怕慢就怕停,每天堅持編碼,堅持總結,成為那個"焊火箭的民工"也是完全可能的!
【不做民工化的程序員】相關文章:
試析農民工市民化意愿與我國城市化道路選擇09-02
農民工文化生活“孤島化”現象探析11-14
創業不做合伙生意09-13
面試中的“做”和“不做”11-15
不做越位的職場蘿卜的職場勵志故事11-18
測試你會如何不做金錢的奴隸10-16
程序員的創業歷程09-26
農民工返鄉創業的政策08-16
淺談農民工的心理問題07-23
農民工創業的好項目09-27