開源開發人員都是義務勞動者的觀點已經成為編程世界中的陳詞濫調,即使是那些偉大的開源舉措也無法駁倒這種風靡一時的心態。但是真理總是掌握在少數人手裡即使是在開源慣例中,也需要參與開源的開發人員主動為其他人貢獻他們的技能,一些企業(或企業集團)往往會因此僱用並支付這些程序員去研究特定的開源項目(如 linux Kernel)。除了開發人員確實可以從開源代碼項目中得到薪酬這個事實外,還有 6 個理由可以說服你去做更多的開源項目如果你是一個開發人員的話:
1. 學習和實踐
還有什麼能讓我們一直緊密關聯自己的工作領域?作為一個程序員,你需要不斷學習編碼的最新趨勢,你需要不斷練習以進一步磨練自己的技能。開源是助你攀登這兩座高峰的階梯。開源的確是預防我們生銹的最佳途徑。
2. 經驗和簡歷
你是一個新手開發者?那麼,從開源項目中學習,並致力於開源項目是你獲得經驗和打造有吸引力的簡歷的最佳方法,它能讓你爭取到原本不可能的就業機會。在 IT 界找工作並不容易,而且如果你沒有任何實戰經驗的話,那麼情況就更糟了。但是如果當僱主看到你的簡歷,看到你已經參與過一些開源工作,那麼可能會認為你主動積極,願意工作,有工作經驗從而增加你被僱用的機會。
3. 網路和協作
你可以與其他偉大的程序員聯網,建立項目之外的關系。這是增加 Twitter 粉絲的好辦法。開源還可以幫助你和那些志趣相投的,優質的聯系人建立網路聯系。
你和你的小夥伴還可以一起工作於以後的項目,或者創建一個交流技巧的組群。各種可能數不勝數。
4. 展現(技能,代碼等)
參與開源項目能讓你獲得大量的曝光機會無論是技能還是工作機會。通過使用以前寫的代碼,能讓你節省大量編寫開源代碼的時間。此外,在你貢獻了自己的代碼之後,其他程序員可能會緊隨你的身後去擴展這些代碼你可能會發現代碼變得更高級。這是一個開發和機遇無休止的循環,可能會大大影響你的職業生涯。
5. 社區建設
除了能讓你獲取偉大的實踐和經驗,開源還能幫助構建一個偉大的社區。因為它是開源的,所以大家可以互相學習彼此的技巧,提高自己的編碼技能。
教學相長。就像其他職業一樣,你在教授別人的過程中,在為開源項目或社區簡單地貢獻自己的專業知識的同時,也可以學到東西。
6. 更好的收入機會
現在,如果我們再回過頭談談錢,為大家揭示所謂的自由工作神話。真的能賺到錢的編程或許就是開源領域了。
為什麼?這是因為雖然開源軟體產品大多是免費提供給公司使用的,但是公司往往還是會僱用程序員(尤其是那些對此有貢獻的程序員)來提供與開源軟體相關的服務例如,安裝,支持,維護,等等。
具有諷刺意味的是:這些服務很賺錢,而且比銷售類似付費軟體所賺的錢更多反而這些付費軟體不需要這些相關服務。
現在,你知道開源的好處了吧,所以每個開發人員都應該致力於開源項目。而且開源不僅對開發人員有利,對企業而言,也是好事,因為它保證了最高的安全性和質量。
開源並不是完全免費的志願活動。相反,從長期來看,它能讓你漸漸地超越你的同齡人,它會成為一棵真正的搖錢樹。
希望可以幫到您,謝謝!
⑵ 參與開源項目對大學生技術與職業發展有什麼好處
1.學習和實踐
作為一個程序員,需要不斷學習編碼的最新趨勢,需要不斷練習以進一步磨練自己的技能。開源是助你攀登這兩座高峰的階梯。
2.經驗和簡歷
從開源項目中學習,並致力於開源項目是你獲得經驗和打造有吸引力的簡歷的最佳方法,它能讓你爭取到原本不可能的就業機會。
在IT界找工作並不容易,而且如果你沒有任何實戰經驗的話,那麼情況就更糟了。但是如果當僱主看到你的簡歷,看到你已經參與過一些開源工作,那麼可能會認為你主動積極,願意工作,有工作經驗——從而增加你被僱用的機會。
3.網路和協作
這是開源的主要精髓——也是開源培養的精神。你需要作為團隊一員和其他程序員一起工作——優化項目,尋找並修復bug,等等。
你可以與其他偉大的程序員聯網,建立項目之外的關系。開源還可以幫助你和那些志趣相投的,優質的聯系人建立網路聯系。
你和你的小夥伴還可以一起工作於以後的項目,或者創建一個交流技巧的組群。
4.展現(技能,代碼等)
參與開源項目能讓你獲得大量的曝光機會——無論是技能還是工作機會。
通過使用以前寫的代碼,能讓你節省大量編寫開源代碼的時間。此外,在你貢獻了自己的代碼之後,其他程序員可能會緊隨你的身後去擴展這些代碼——你可能會發現代碼變得更高級。這是一個開發和機遇無休止的循環,可能會大大影響你的職業生涯。
⑶ 國內有哪些優秀的開源項目讓你眼前一亮
國內的很多開源項目都吸引了大批程序員去關注。比如說阿里,騰訊,網路,網易,新浪等,他們都有一些好的開源項目正在進行,各具特點,各有特色,如果說是讓人眼前一亮的話,真的是很不好選擇。
⑷ 程序員去哪裡多讀一些源代碼比如C、JAVA、C++的
樓上說的很對,有幾個代表性的項目:
1、C的話還是linux kernel源代碼,可以直接下載源代碼,
2、Java的話,建議看一些框架的源代碼比如spring,hibernate,struts
3、C++可以看Mysql源代碼。
⑸ 程序員是如何找項目練手的
首先,你能想到平時找項目來進行練手,說明你是一個在技術上面是一個非常上進的同學。想要找到項目進行練手,第一個想到的地方應該是 Github。Github 上擁有全球最多的開源項目,你可以從其中找到自己感興趣的開源項目,然後參與到開源項目的開發中去。能夠參與開源社區,這也是很多互聯網公司非常看重的一點。
其次現在也有很多舉辦計算機類比賽的平台,比如阿里雲的天池大數據、Kaggle、Datacasle等。你如果有時間,可以參與上面舉辦的比賽,進行項目練手。
⑹ php有好多開源項目,怎麼還要學php,拿來直接用就行,還有php程序員在市場上有沒有需求啊
有需求
很多制定開發,並不是所有開源項目都可以拿來直接用。
1.制定開發
2.很多國內的所謂開源項目,商業運用需要授權即收錢,因此有獨立開發的需求
3.開源的主要是通用的,但是用於各自行業或者需求都需要修改,調整。
⑺ 如何參加開源項目
If you wanted to join an open-source project first thing you do is get on the mailing list.'I started working with it. I saw these problems. I fixed them. Here they are.' 這類人可以加入.'I am a Java engineer from Dallas, Texas. I've been working for five years, and I really would like to help. Give me something to do.'這些人往往什麼都不做.他們是光說不練的專家. 第三類人是空想家,他們說,'I think Freenet is great, but it needs permanent storage, announcements, and boadcasting.' 他們往往永遠都不會參與進來.'我在想是什麼讓核心程序員與眾不同呢,他們願意做那些沒人做的任務,因為我認為他們對個人職責和長期的路線有著很好的理解. 所以那些不太積極的人將會去做簡單或有趣的工作,而核心程序員會出現在需要他的地方,以便項目能持續地發展下去.' 參與開源項目需要團隊精神,也許就是助人為樂,高風亮節之類的吧. 我比較欠缺這種精神,應該多為別人著想才是啊. 並且,光說不練是不行的,但光練不說也不行,我覺得一個團隊應該多交流,不管說的對或錯,也不管是不是有人格問題,表達思想應該是自由的,只要不互相攻擊就行. 根據上文資料的意思,只要去做了就已經參與到項目中了,無需別人分派任務,但對於Joiner來說,起碼應該有一個引導或者說明吧,對項目有個起碼的了解是必要的啊?應該樂於修改原有的代碼,這叫hack,應該抱著這樣的心態,'反正又不是我的東西,改了又沒啥損失.' 我覺得開源的本意就是鼓勵這樣做的~
⑻ 程序員都需要學習什麼軟體
現在做為一名程序員,壓力越來越大,各種開發工具越來越龐大、不斷推陳出新,各種開發設計工程理念繽紛精彩、需要融入平常的開發當中,還有很多新的知識點在不斷開拓中,相比以前,做為一名程序員尤其是合格程序員的難度的確增加了不少。
那麼,做為一名程序員你應該學習掌握哪些軟體與技能呢?
1. 資料庫管理工具
MySQL,使用Navicat是針對資料庫而研發管理工具,Navicat擅長於對資料庫的管理,可以幫助程序員更好的管理資料庫,視覺化創建 SQL 語句,自動生成報表等,Navicat具備所有資料庫類型的絕大部分功能,包括存儲過程、事件、觸發器、函數、視圖等。
Mongodb,使用Robomongo,是一個基於 Shell 的跨平台開源 MongoDB 管理工具。嵌入了 JavaScript 引擎和 MongoDB mogo。提供語法高亮、自動完成、差別視圖等。
Sublime,具有漂亮的用戶界面和強大的功能,可自定義鍵綁定菜單和工具欄。Sublime的主要功能包括拼寫檢查、書簽、完整的 Python API,Goto 功能、即時項目切換、多選擇、多窗口等。
插件多,Markdown插件,各種語言插件
⑼ 現在開源軟體這么多,會不會對程序員崗位造成沖擊
不會。首先,很多開源軟體都是基金會或公共資源贊助的,比如Apache基金會等等。他們是付錢給程序員來開發,然後把產品開源,回報社會。程序員在這種開源項目里其實就是雇員,是有工資的。其次,很多軟體企業把自己的產品開源,比如google等等,開源的目的是讓他們的產品更普及,增強市場佔有率,程序員在這種開源項目里依然是雇員的角色。最後,軟體行業不像勞動密集型行業,軟體行業里的人力不是用機器或產品可以替代的,即使將來程序員不需要自己開發軟體產品的主體,而是使用開源產品,但是根據具體的使用場景也需要對該開源產品進行配置、二次開發、調試等等,這些工作依然需要程序員來具體執行。
所以,開源軟體其實降低了程序員的編程負擔,提高了整個軟體行業的效率,而不是對程序員崗位造成沖擊。
⑽ [探討]如何更有效地學習開源項目的代碼
導讀:對於開發者來說,社區里豐富的開源代碼其實是筆極為寶貴的財富。如果能充分利用好開放源代碼的資源,不僅可以掌握多種編程方法,提高實踐能力,還能獲得好的思想,激發編程靈感。開源代碼怎麼學以及怎樣才能學好是大家經常關注的話題,日前,在問答網站知乎上,有人拋出了「如何更有效地學習開源項目的代碼?」的話題,眾技術好手各抒己見,CSDN軟體研發頻道對本文內容進行了整理,方便大家學習與參考。盛大創新研究院研究員 庄表偉:學習開源 盡可能在代碼里找答案 庄表偉提供了以下9個建議:1.在下載源代碼之後,首先要跑起來,編譯通過、正常運行;2.在你覺得最有可能運行到的地方,設置斷點或者拋出異常,這樣,就能夠找到一個項目在正常運行時的入口點;3.從入口點所在的那個源文件開始閱讀,逐步把握整個項目是如何啟動起來;4.隨便改點代碼,看看會不會報錯,如果報錯,會從哪裡報錯;5.試著把報錯屏蔽、修復、或者繞開;6.嘗試理解一個系統的內部結構,多少組成部分,主線模塊是哪些?輔助模塊是哪些?7.從實際需要出發,修改這個項目,滿足自己的某一個小的需求。(注意在此之前,盡量不要在網路上找答案);8.看看相關的討論與心得,是否與自己的理解相一致;9.提交bug fix或者某個新的功能代碼。在學習開源的過程中,有幾個方面會獲得大量收獲,1.架構與模式;2.開源社區常見的一些慣用法;3.相關領域的結構與演算法。總結一點:學習開源,盡可能在代碼里找答案,而不是在代碼之外找答案,那些都是二手的,而且很可能不準確。互聯網評論員 朱曉陽:從簡單做起 理論聯系實踐朱曉陽對此發表了兩點看法:首先,從簡單做起。剛開始的時候學習一些領域內基礎理論,然後找一些簡單的東西去實現,不能一開始就去找開源項目。建議大家經常動手寫一些小程序,如改進宿舍網路登錄客戶端等。積小成多,能顯著提高自己的編程能力。其次,學習的知識一定要和自己生活或工作有聯系,這樣才會有樂趣或動力。互聯網評論員孫竟:先構想一個想做的項目首先,構想一個想做的項目(比如論壇、博客、微博等);然後,思考需要什麼功能,應該怎麼去實現,盡可能包括各種細節,有必要時記錄下來;最後,去找個類似的開源應用,看看它是怎麼實現的,和你的想法有什麼差異,有什麼可以學習或需要改進的地方。互聯網草根hqman:我的5個建議:1.反復地使用軟體,熟釋軟體的組成文件和軟體功能,注意IE地址欄內的地址變化;2.打開資料庫文件或存放數據的XML文件,參照數據字典了解各個表和欄位的數據含意;如果沒有數據字典,就運行軟體輸入數據,參照所輸入的數據,了解各個表和欄位的數據含義;3.利用Visio進行反向工程,將類圖抽出來;4.研究類之間的關系,注釋各個類的屬性和方法,弄清程序的整體框架;5.另開一個項目,按照軟體開發的流程,將代碼分段復制進新的項目,進行編譯調試,關注一些實現細節,學習一些編程的技巧。在讀研究生張偉:在校學生空閑時間多參加一下比賽張偉的建議是大家在空閑時間多參加一些比賽。一個完整的項目,不管再小,只要做完了,就會有收獲。多看一些比較大的開源項目源代碼,每次看完後都會受益匪淺。從網上成熟的開源代碼里,可以學到很多的設計思想。他認為,從項目入手,以項目為驅動,可激勵自己進步。當然,是否一定需要看開源代碼,這將取決於個人的興趣和需要。畫出程序流程圖 理解程序流程思想CSDN博客專家i_like_cpp:曾在CSDN分享了《如何將源代碼學好》的博文,對此,他給出了四點建議:1. 畫出整個程序的流程圖,理解整個程序流程的思想。畫流程圖的方式更讓人很直接的理解程序的整體流程,而不會被代碼所干擾,讓程序員總體上把握整個程序;2. 對流程各節點(函數或過程)的理解,流程的每一節點是構成整個流程的不可缺少的部份;3.再把流程和流程各節點串起來理解整個程序,可能的話最好寫出讀書筆記;4. 如果想深刻的學習到源代碼的精髓所在,請寫一個相近的程序進行操練。理解了這個程序並不表明掌握了這個程序,只有在操練一個相近的程序時,才知道你到底理解了多少,掌握了多少。編後語:源代碼的學習是一個從整體到不斷細化的過程,是一個極為繁瑣的過程同時也是一個不斷認清事物本源的過程。本文總結的源代碼的學習經驗,希望對您有所幫助。那麼,CSDN的網友們,你們是如何對待開源項目源代碼的呢?不妨分享一下!