模仿別人的項目自己理解並且做一遍算不算自己的項目?

就是自己到github等網站fork一個項目,然後完全理解了,在面試時能不能說這個項目自己做過?


謝邀!

就是自己到github等網站fork一個項目,然後完全理解了,在面試時能不能說這個項目自己做過?

實話實說就好,不要有任何拔高、掩飾。多數企業不喜歡浮誇、不誠信的程序猿。

做與理解是不同的。說你做過,就具體說下你對原代碼做了哪些改進和增強,貢獻是否被接受等等實在的東西。

面試時,盡量不要說「完全理解」、100% 等溢滿之辭,以免給人留下浮誇的印象。


你打算怎麼證明你理解了?

我舉個栗子。我做的 Dwarfartisan/goparsec · GitHub 項目,最初是模仿的 sanyaade-buildtools/goparsec · GitHub 但是如果寫進簡歷里,大概會有些朋友認為我只是照葫蘆畫瓢,抄了一遍,改一改參數類型。我如何證明我確實已經理解了這些功能如何運用?當然這個時候我可以跟你討論我對每一個函數,每一行代碼的理解,給你看我用我自己實現的這個庫做的應用,這些東西都是我的證據。

進一步,之後我還有 Dwarfartisan/sparsec · GitHub 這樣的項目,大量運用了泛型和運算符重載,這已經跟最初 Jeffrey Massung 的實現很不一樣了。再後來我還實現了python和Rust的版本,特別是從Rust的版本開始,我把Monad正式的跟Parsec運算元分離開,然後再正交的組合起來,這已經完全不是以前的思路,而是更接近 Haskell 的實現方法了。凡是了解 Haskell Parsec 的人,肯定可以看出我到底有沒有理解最初參考的那些東西,我自己有沒有做過 Parsec 實現。

最終我重新實現了一個新的 goparsec Dwarfartisan/goparsec2 · GitHub ,這個時候恐怕沒有人再會認為我只是模仿了吧。

那麼你思考一下,你如何證明你已經充分理解了你fork的那些項目代碼,而不是簡單的fork了它?


為什麼不寫自己看過,而寫自己做過,嘖嘖


重造,照著別人畫的雞蛋按照自己的想法畫出另外一個


或許給知名項目提過幾個Pull Request更有含金量?


推薦閱讀:

效率比擬RapidXml的XML解析庫Textcat::XML即將完工
cocos2d-x代碼質量如何?
寫基於圖形API(如WebGL)的引擎主要考慮的設計因素有哪些?
如何看待武漢大學軟體工程國家重點實驗室因評估未通過遭摘牌?

TAG:面試 | 項目 | 軟體工程 | 簡歷 |