1. 程式人生 > >技術面試中常被問到是否參與開源,那如何清晰展示 GitHub 專案呢?

技術面試中常被問到是否參與開源,那如何清晰展示 GitHub 專案呢?

你面試的公司找你要 GitHub 連結,獵頭找你要 GitHub 連結。“你參與過開源專案麼?”是目前 IT 技術面試中的常見問題之一。

既然他們要 GitHub,你就得給。本文將闡述如何在面試中展示你在 GitHub 上的專案。

以下的建議有兩個用途:應聘者可以學習怎麼寫軟體的簡介(不一定非要是GitHub);招聘者(程式設計師)可以學習可以從哪些關鍵點來評價一個程式設計師的水平和軟體的質量。

submit application form with a GitHub link
When having a GitHub is mandatory, just like having a name.

連結一個特定的專案

在你的簡歷和每一份申請裡面都放上你的GitHub連結。

該連結要直鏈到一個專案。不要給你GitHub的主頁地址,那個頁面沒有有用資訊,很難讓人繼續瀏覽。

你必須只展示一個專案。一個就夠了,不需要更多。

這個專案將是你的“登入頁面”,是招聘者看到的第一個頁面。他們很少去看其他頁面(也沒有這個必要)所以該頁面本身就應該展示一切資訊。如果他們去看了其他頁面,說明這個主頁成功引起了他們的興趣,他們想知道更多專案細節。

我們要寫一個可以充分展示你的能力,並能給人留下好的第一印象的專案頁面。

專案結構

用5秒時間看軟體的架構就可以知道專案優劣。

你一眼就能看出來一個程式設計師沒有經驗,他們的專案往往沒有結構。專案檔案要麼在隨便一個地方或者都在根目錄。

一個好的專案結構必須將原始碼,測試,庫檔案,可執行檔案分開放在不同的資料夾中

命名的細節,例如是用‘doc’還是用‘docs’並不重要。這裡是GitHub專案的

資料夾結構

123456789 .├──build# Compiled files (alternatively `dist`)├──docs# Documentation files (alternatively `doc`)├──src# Source files (alternatively `lib` or `app`)├──test# Automated tests (alternatively `spec` or `tests`)├──tools# Tools and utilities├──LICENSE└──README.md
software project structure
A well-organized project

有一個專案簡介檔案

專案簡介檔案可以提供:

  • 專案目標
  • 截圖或視訊
  • 使用說明
  • 軟體下載頁面

在簡介檔案裡面放軟體介面截圖

一張圖比一千個字更能說明問題。

人們不會因為要看軟體介面就去安裝軟體。請提供軟體介面截圖。

在簡介中放視訊

一張圖能抵一千個字,那麼一個視訊頂一千張圖。

注意:GitHub不允許插入視訊,你可以使用動態圖。

網頁連結或安裝檔案連結

如果該專案是網路應用,請提供網頁地址。當然,所有人都應該能訪問該地址。

如果該專案是單機程式,請提供安裝檔案下載地址。如果安裝檔案看上去不專業,使用者是不會安裝它的。很多時候,是否專業跟釋出方式有關。

整合GitHub工具

GitHub提供了一整套免費工具用於編連,打包,測試和其他功能。這些工具在專業軟體開發中都是必須的。

以前想要實現這些功能非常困難,但如今通過GitHub一切都非常簡單。你沒有理由不用它們。

GitHub-integration-icons

這是一個由C++實現的四子棋的例子。按鈕從左到右代表:

如何處理原始碼?

“沒人在乎你的原始碼——得知這個事實的時候我也很吃驚。我在整理程式碼上花了不少時間,但發現沒人在乎。重要的不是程式碼,而是產品” (出處

比起猜,讀一段軟體功能描述要快10倍。比起自己弄明白軟體用法,觀看一個介紹基本用法的視訊可以快100倍。比起逆向工程,讀設計圖表要快1000倍。你可以通過讀原始碼來搞清楚一切,但這個過程要費事得多。讀原始碼(解碼原始碼)是非常耗時的。只有在走投無路的時候才應該用。

經驗教訓1:沒人在乎你的程式碼,也不會有人去讀你的程式碼。

經驗教訓2:別指望別人會去讀你的程式碼,也彆強迫別人去讀程式碼。

如果我沒有像樣的大專案要怎麼辦?

挺好的。簡單的專案更容易展示,更容易解釋,面試官也更容易理解。比如大家都知道四子棋是怎麼回事。

即使第一眼看上去很簡單,但每一個專案都包含了很多工作量:寫一個好的使用者介面,調整顏色,允許兩個人一起遊戲,加上對下一步棋的走子建議,加上 AI 選手等等。

這個遊戲規則很簡單但是要把它做成好的軟體要做很多工作。這些都是你在面對面的面試中可以跟面試官深入探討的地方。

你知道玩四子棋的時候先走的選手一定會贏麼?【如果他不犯錯的話】你知道如果第一個選手第一步棋不走中間的話,第二個選手一定可以將棋走成平局麼?

面試官真的會去看GitHub麼?

事實上他們不會

GitHub traffic statistics
GitHub Traffic Statistics

我們測試過了。這個圖是我們發出一堆簡歷之後的資料統計。這三個點選是我自己點的。在寫這篇文章的時候我沒有登入就去點了GitHub。我的錯。

從我上次找工作的經驗來說,經過十幾個電話面試(每次電話有一個技術人員)和幾個現場面試(4到7個技術人員),只有一個人去看了我的GitHub頁面。

結論:沒人關心GitHub,沒人會看GitHub。每人都會問,是因為別人也在這樣做。

好處:既然沒有人真的去看,你也可以拒絕參加這場GitHub的假面舞會。你可以用這個 hello world 終極版本庫 去迴應所有的GitHub要求。這個版本庫包含用一百種語言實現的“Hello world”。

小抄

  1. 專案要有結構
  2. 要有專案簡介檔案
  3. 寫一段說明軟體功能的介紹
  4. 放上軟體介面截圖和使用說明視訊
  5. 提供安裝檔案下載地址或者網路應用的網址
  6. 整合發開工具(CI,單元測試,打包工具等等)

這世上還有其他軟體工程的好範例,不僅僅侷限於GitHub。

打賞支援我翻譯更多好文章,謝謝!

打賞譯者

打賞支援我翻譯更多好文章,謝謝!

任選一種支付方式