我一直在想這件事。程序員如何獲得他們的經驗?什麼是最具決定性的因素?是書嗎?還是工作?教育?是什麼使你從一開始的程序員轉向了知識豐富的程序員?程序員如何獲得經驗?
回答
的Wikipedia article on the word experience開始了,像這樣:
經驗,作爲一個籠統的概念 包含的知識或技能或 觀察的一些事情或一些 事件通過參與獲得了或 暴露於事物或事件。
爲了成爲一名經驗豐富的程序員,您將需要經歷許多編程。換句話說,通過編程就可以做很多事情。
你可以從閱讀中學習技術,思維方式,方法等。所有這些將幫助您成爲更好的程序員。但經驗也是遇到過。要去過那裏,要認清情況,在你的腸道感受它。這種直覺是來自積極的工作。
刻意練習。
修復其他人的代碼 - 特別是如果代碼是巨大的和/或舊的。沒有更好的方法來找出寫什麼是好的方法,什麼不是。
+1 - 我認爲這是學習識別什麼時候出現錯誤以及爲什麼錯誤的關鍵組成部分。 – 2010-07-26 17:00:09
我認爲它因人而異。我感覺我在學校學到了編程和背後的科學過程,但直到我在現實世界中進行實際的編程工作之後,才真正變得「有經驗」。
嘗試事情和閱讀事物的組合。其中一些嘗試可以在學校或工作中進行,但關鍵在於,在使用知識而不僅僅是一頭公牛時纔是實用的。
我成熟的原因是各種各樣的考驗,我必須做我以前從未做過的事情,並開發解決問題的能力和系統構建技能。在一個開源項目(見http://www.hanselman.com/blog/ExampleHowToContributeAPatchToAnOpenSourceProjectLikeDasBlog.aspx對於如何啓動一個很好的解釋)
這
參加,不僅讓你在現實世界的應用體驗,但會給你置身於社會。
程序員通過幹活獲得經驗。書是可以的,但除非你只是按照這本書而做,否則你沒有學到任何東西。我學會了最多嘗試做某事並且不得不尋找解決各種問題的事情。你解決的每一個問題都會比閱讀它更好地堅持在你的腦海裏。
我發現從設計的第1天開始就成爲一個項目的一部分是最有益的經驗。
這是基本的體系結構和設計,它最終將確定項目是否成功/失敗。
世界上所有的編碼都無法彌補糟糕的設計!(雖然多數民衆贊成什麼,我們可能會花90%的時間我們做)
戴夫胡佛和阿德瓦萊Oshineye寫了一篇關於學徒模式的一個很好的書:
http://www.amazon.com/Apprenticeship-Patterns-Guidance-Aspiring-Craftsman/dp/0596518382
他們是新手開發商特別相關,但對於有經驗的開發人員來說也相當好
我的兩個選擇模式,和那些已經做出了最對我來說差別,分別是:
是最差的。如果你是你隊伍中最好的人,那麼你不會從別人那裏學到任何東西。找一個你可以從每個人身上學到的團隊。
易碎玩具。有你自己的寵物項目 - 開源或其他 - 你可以安全地練習你正在學習的技術和技術。
我也很重視反饋。如果球隊能夠支持我,我不會過多擔心解決弱點的問題,但任何使我不能與團隊合作的事情,或者我可以更好地利用我的優勢的任何方式都是非常好的。這非常困難 - 人腦對驗證有自然偏好,而不是反饋會改變你的心理模型 - 但如果你能克服需要的勇氣,這是完全值得的。
+1看看亞馬遜那本書 - 即使是你可以免費閱讀的附錄,總結了一下pattterns對於很好的閱讀。一個用於閱讀列表我認爲。 – 2010-07-26 17:20:03
從經驗來看,基本上有三種方式來獲得知識,編程
- A - 讀一下:閱讀博客,書籍,論壇等
- 乙 - 讀碼:約5小時的A將獲得與讀取其他人的代碼1小時相同的回報。然而,單獨閱讀代碼的使用是有限的,直到你意識到要尋找什麼爲止,因此A是第一個,並且在此之後。
- C - 編程: B每5小時,您將通過編寫自己的東西一個小時獲得相同的好處。再次,沒有知識和對比的東西,你永遠不會真正向前發展你的技能。因此,編程排在第三位。
我認爲編程是國王,直到我遇到了30年經驗的程序員,他們仍然不知道如何編寫他們交易的基本原則。當然,他們知道所有關於封裝和多態的知識,但是閱讀代碼會產生一種完全不同的理解形象。
- 1. 有經驗的Ruby程序員如何重寫我的迷你遊戲?
- 2. 缺乏經驗的程序員如何開始在團隊中工作?
- 3. 獲得matlab變量的經驗分佈?
- 4. PHP通過級別獲得經驗
- 5. 在驗證程序中獲得isModified
- 6. 在PHP中使用數組(缺乏經驗的程序員)
- 7. 資源學習Swift經驗豐富的Objective C程序員
- 8. 對經驗豐富的程序員的關注closesocket()
- 9. 如何獲得可信/經過驗證的發佈者?
- 10. scala如何獲得路徑依賴類型的經驗值
- 11. 如何獲得簽名程序的已驗證發佈者?
- 12. 一位經驗豐富的程序員,對如何從頭開始編碼rails應用程序感到困惑
- 13. 幫助參與系統驗證測試團隊獲得更好的程序員?
- 14. 如何獲得經過一天在Oracle
- 15. 如何獲得一個程序調用
- 16. 如何從程序獲得std輸出
- 17. 如何獲得下安裝程序類
- 18. 如何獲得,並在Java程序
- 19. 如何從程序獲得的Java
- 20. Qt如何獲得應用程序以獲取其本身的md5校驗碼
- 21. 如何獲得接口成員列表
- 22. 我如何獲得LinkedIn羣組成員
- 23. 如何獲得magento開發人員ip?
- 24. 如何獲得管理員權限?
- 25. 如何獲得Tridion的團隊成員
- 26. 你如何獲得一個進程已經運行了多久?
- 27. 如何捲曲經過驗證的Django應用程序?
- 28. 如何獲得遠程創建的演員?
- 29. 如何獲得Android應用程序的應用程序列表?
- 30. 如何獲得短程序的程序集輸出?
應該是CW或關閉。 – 2010-07-26 16:54:20
你真的應該把這個問題轉換成@Paul建議的社區Wiki。如果您編輯該問題,則會在編輯文本框的右下角看到一個社區Wiki複選框。 – 2010-07-26 17:10:05
通過殺死錯誤。 – 2010-07-26 17:24:43