程序員如何選擇有價(jià)值的開源方向?
我對國內(nèi)開源項(xiàng)目的思考
首先在闡述任何觀點(diǎn)前, 大家都應(yīng)該以一種批判的角度來看待和消化, 因?yàn)槿魏稳说乃伎己陀^點(diǎn)都可能是局限的.
項(xiàng)目開源是一件非常崇高且有意思的事情. 這是我曾經(jīng)一直持有的看法. 國外的開源大佬TJ等人, 國內(nèi)的湯姆大叔等, 一直是我的技術(shù)偶像.
他們和我的唯一共同點(diǎn)就是不及格的發(fā)量, 這讓我找到了些許安慰.
所以閱讀這些優(yōu)秀的開源項(xiàng)目讓我成長很多, 也學(xué)到了真正有價(jià)值的開源項(xiàng)目該如何去做.
但是最近2年, 我在看github的trend的時候, 不免有點(diǎn)尷尬, 同時夾雜著些許的力不從心. 當(dāng)我看到大量國內(nèi)割韭菜式的開源項(xiàng)目之后, 不禁在草稿紙上寫了一句:
好了, 不吐槽了, 接下來總結(jié)一下我對優(yōu)秀開源項(xiàng)目的一些感悟.
從項(xiàng)目自生結(jié)構(gòu)的角度
項(xiàng)目目錄結(jié)構(gòu)清晰
文件/文件夾命名規(guī)范, 可讀性強(qiáng)
清晰完整的readme介紹
- 簡潔的項(xiàng)目描述
- 項(xiàng)目版本信息, 辨識度高的logo
- 項(xiàng)目應(yīng)用場景介紹, demo案例
- api使用文檔
- 清晰的todo和undo清單
- 貢獻(xiàn)指引和相關(guān)生態(tài)
規(guī)范而詳細(xì)的package.json文件(或者項(xiàng)目描述文件)
從項(xiàng)目實(shí)用性角度
- 解決了當(dāng)下開發(fā)環(huán)境的某一痛點(diǎn)(比如模塊化解決方案amd,cmd等)
- 能快速提高開發(fā)效率(提效工具, 工具/類庫等)
- 能很好的解決某一框架遇到的瓶頸(比如vue/react之于jquery)
- 能很好的降低使用某一框架開發(fā)項(xiàng)目的難度(比如vue/react/jq等的插件)
- 能很好的解決企業(yè)通用業(yè)務(wù)需求(比如antd-pro, egg, H5-Dooring)
- 能讓程序員快速理解開源項(xiàng)目的開源(比如翻譯類文檔, 技術(shù)思考性穩(wěn)定, 能快速磨平認(rèn)知差異)
當(dāng)然還有一些方向可以去思考, 比如底層技術(shù)方案(操作系統(tǒng), 基礎(chǔ)語言等), 離我太遠(yuǎn), 暫時擱置.
國內(nèi)開源項(xiàng)目/社區(qū)的不良風(fēng)向, 是如何加速招聘的“內(nèi)卷”?
- 內(nèi)卷: 本意是一類文化模式達(dá)到了某種最終的形態(tài)以后,既沒有辦法穩(wěn)定下來,也沒有辦法轉(zhuǎn)變?yōu)樾碌男螒B(tài),而只能不斷地在內(nèi)部變得更加復(fù)雜的現(xiàn)象。
最近兩年大家有沒有發(fā)現(xiàn), 各大技術(shù)社區(qū)內(nèi)充斥著大量求職面試相關(guān)的文章, 層次不齊, 千篇多少有點(diǎn)一“綠”. 想認(rèn)真看看技術(shù)文章, 還得花時間往下多翻幾次, 因?yàn)轫敳客扑]基本被面試文, 進(jìn)大廠文霸占了.
雖然求職找工作需要準(zhǔn)備, 但是我個人覺得沒必要過渡準(zhǔn)備, 否則必然會遭遇我們最熟悉的名場面: "卷王面試官" 和“卷心菜求職者”的相愛相殺.
這里我來給大家伙分析一下為什么過度釋放面經(jīng)導(dǎo)致越來越卷的原因.
面試官想: 出什么面試題呢, 社區(qū)上這么多面經(jīng), 想必大家一定有所準(zhǔn)備, 那就來點(diǎn)剛的(有難度的).
求職者想: 最近看各種面經(jīng), 不管是大廠小廠, 面試題都這么難, 我要多刷幾道題.
好的, 還沒完, 接下來就是 github上的1000+筆/面試題, 刷去吧, 刷完了你沒進(jìn)大廠, 不是題的原因, 是你的原因.
好家伙, 被這樣的環(huán)境培養(yǎng)出來的程序員, 未來對技術(shù)能有多大的想象空間呢? 這里不經(jīng)讓我想到我另一位偶像的經(jīng)典名言:
- 想象力比知識更重要. —— Albert Einstein
同時想到一位想象力觸及火星的國外老鐵:
所以說這一節(jié)我主要想表達(dá)三個觀點(diǎn):
- 被刷題榨干的求職者未來會對技術(shù)還產(chǎn)生多大的長遠(yuǎn)興趣? 是道德的淪喪還是人性的扭曲?
- 國內(nèi)開源環(huán)境充斥著大同小異的面試題, 國內(nèi)個人開源項(xiàng)目未來還會有多大的想象空間? 難道國內(nèi)有價(jià)值的開源真的是有大公司才能玩的起?
- 沒有持續(xù)的興趣和想象力, 永遠(yuǎn)做不出好的有價(jià)值的開源項(xiàng)目.
這里當(dāng)然不是不鼓勵這些, 意在不要過渡重視刷題, 其實(shí)偶爾做做有價(jià)值的開源項(xiàng)目, 也會為面試加分. 畢竟在近3年的求職面試中, 我是從來沒有為面試做過任何準(zhǔn)備的.
做開源項(xiàng)目能帶給我們什么?
在上面幾小節(jié)的觀點(diǎn)中, 各位提煉有價(jià)值的觀點(diǎn)即可. 我們接下來進(jìn)入今天的正題.
做開源項(xiàng)目能帶給我什么呢? 這也許是大部分想做開源項(xiàng)目的人的一個疑問. 大部分人也會走入一定的誤區(qū), 雖然這個問題很簡單, 但是簡單的問題往往更復(fù)雜.
首先一部分人會覺得, 開源項(xiàng)目可以給自己積累項(xiàng)目經(jīng)驗(yàn), 簡歷上加分, 鞏固自己的知識體系, 積累人氣等等. 我之前也是怎么認(rèn)為的. 但是這種開源思維只適合初級開源, 一般的結(jié)果是: 雖然開源項(xiàng)目讓自己加深了對技術(shù)的熟練度, 簡歷上也可以寫寫了, 但是隨著時間流逝, 最終會被遺忘.
所以現(xiàn)在的我, 在思考這個問題前, 一定會先問自己幾個問題:
- 我做這個開源是為了解決什么問題?
- 目前已有的解決方案有哪些?
- 我怎么做, 才能做的比已有的方案更好?
- 我如何才能讓我的項(xiàng)目持續(xù)發(fā)展下去, 而不是過眼云煙?
在解答了以上4個問題之后, 我們做開源項(xiàng)目會更有目標(biāo)和框架感, 也更能明確自己能得到什么:
- 獨(dú)一無二的解決方案
- 對該領(lǐng)域有更深度的研究和了解
- 對未來職業(yè)發(fā)展更有談資
- 收獲了更多技術(shù)方案和開源小伙伴
- 通過項(xiàng)目價(jià)值體現(xiàn)個人價(jià)值和某一領(lǐng)域影響力
- 收獲money, 流量, 企業(yè)offer
所以我們不要過度的追求結(jié)果, 我們在做有價(jià)值的開源項(xiàng)目的過程中, 自然會讓自己變得更有價(jià)值. 從我做H5-Dooring這個項(xiàng)目之前, 我就已經(jīng)充分回答了自己提的上述4個問題, 所以項(xiàng)目最終的結(jié)果, 大家也有目共睹. 在我做完H5-Dooring第一版之后, 為了解決第四個問題, 我就篩選了幾個志同道合的朋友, 和我一起迭代, 讓項(xiàng)目按照提前規(guī)劃持續(xù)推進(jìn)下去.
從零到一, 如何打造一個高執(zhí)行力,快速迭代的開源項(xiàng)目?
就以我自己實(shí)際經(jīng)歷作為佐證, 來談?wù)勯_源項(xiàng)目的打磨過程.
不要問我這個流程為什么像個“心”形, 我只是想表達(dá)開源作者們10個有7個都是為“愛”發(fā)電. (所以默默為這些優(yōu)秀的人👏)
1.目標(biāo)規(guī)劃期
首先在明確了為什么要做這個項(xiàng)目之后, 我們需要對自己的開源項(xiàng)目有個清晰完整的規(guī)劃路線. 比如1.0版本需要做哪些功能, 哪些功能是高優(yōu)先級一定要完成的,哪些是不緊急的, 可以后期在完成. 所以我們要充分利用好四象限法則.
其次就是明確的功能拆分, 需求池管理, 學(xué)會過濾需求, 而不是一股腦的全盤接收, 因?yàn)橛袝r候用戶提的需求他自己也不知道, 所以需要評審.
有了以上目標(biāo)規(guī)劃和管理法則, 我們就能有一個清晰而高效的目標(biāo)規(guī)劃了.
2. 項(xiàng)目基建期
項(xiàng)目基建期主要是項(xiàng)目的雛形, 這個階段一定是項(xiàng)目負(fù)責(zé)人搭建, 需要對項(xiàng)目的整體技術(shù)選型, 架構(gòu), 解決方案設(shè)計(jì)等有完整的思路和落地方案. 這樣才能為以后團(tuán)隊(duì)開發(fā), 迭代和項(xiàng)目優(yōu)化打下基礎(chǔ), 否則最終會亂成一片. H5-Dooring在項(xiàng)目初期也是按照這個思路走的, 我先把項(xiàng)目完整流程設(shè)計(jì)出來, 并在github上開源, 后面才能找到一批直觀且感興趣的朋友來維護(hù)和優(yōu)化.
3.團(tuán)隊(duì)組建期
團(tuán)隊(duì)組建也是非常關(guān)鍵的環(huán)節(jié). 首先創(chuàng)始人需要具備一下特質(zhì):
- 具備一定的技術(shù)實(shí)力(能獨(dú)立做出解決方案, 把控整個項(xiàng)目)
- 對項(xiàng)目有一定研究深度并且有明確的目標(biāo)規(guī)劃
- 絕對的執(zhí)行力, 發(fā)揮領(lǐng)頭羊作用
- 格局放大, 接受能力比你強(qiáng)或者比你弱的朋友, 發(fā)揮其長處
- 對項(xiàng)目有堅(jiān)定的信念
- 謙虛 + 追求極致
- 相互學(xué)習(xí)和共同成長的態(tài)度和團(tuán)隊(duì)相處
只有具備以上3點(diǎn)以上, 才能打造高效且有凝聚力的團(tuán)隊(duì).
同時, 我們只有選擇價(jià)值觀相同, 對項(xiàng)目感興趣, 且有一定執(zhí)行力的協(xié)作者, 開源項(xiàng)目才能穩(wěn)步發(fā)展下去. 所以團(tuán)隊(duì)人數(shù)多不一定做的就快, 團(tuán)隊(duì)人數(shù)少, 也不一定做的就慢. 所以之前有很多朋友想加入dooring, 我都會請自和他們聊一下, 做一些基礎(chǔ)性的考核和篩選. 目前我們DooringX的團(tuán)隊(duì)雖然人不多, 但是個有專長, 相信未來一定會把項(xiàng)目做的非常出色.
4.團(tuán)隊(duì)協(xié)作/磨合期
團(tuán)隊(duì)協(xié)作/磨合也就是我們在任務(wù)分工時, 相互之間做的一些交流, 溝通等.
我們需要讓每個共建者明確我們共同的目標(biāo), 以及各自的分工. 這個階段往往也是考核團(tuán)隊(duì)的最佳時期, 我們可以發(fā)現(xiàn)團(tuán)隊(duì)不同的成員擅長什么,可以勝任哪些工作, 哪些任務(wù)可以讓他通過項(xiàng)目來獲得提高和成長.
所以定期交流必不可少. 在dooring的磨合期確實(shí)也發(fā)現(xiàn)了一些不合適的朋友, 有些可能時間緊, 有些是價(jià)值觀問題, 這些都需要溝通解決, 解決不了就要果斷處理. 項(xiàng)目發(fā)起人不用過渡考慮個人感情問題, 彼此創(chuàng)造相對舒適的環(huán)境才是最重要的. 畢竟各自都有需要奔赴的彼岸.(有點(diǎn)談戀愛分手論的感覺, 就此打住🐷)
還有一點(diǎn)就是善用人才, 虛心聽取優(yōu)秀的建議. 每個人都是團(tuán)隊(duì)的貢獻(xiàn)者, 各司其職, 我們需要沿著我們目標(biāo)的主線不斷前進(jìn), 所以需要給合適的人分配合適的任務(wù), 讓優(yōu)秀的人帶動大家一起成長. 創(chuàng)始人是讓項(xiàng)目成功的助推器,所以需要接納優(yōu)秀的建議和發(fā)展方向, 從而審視自身的局限. 畢竟, 每個人都有閃閃發(fā)光的地方.
5.版本迭代和復(fù)盤期
每個階段我們的項(xiàng)目都需要有一次復(fù)盤, 反思. 所以做完是第一步, 如何讓項(xiàng)目做的更好, 才是項(xiàng)目長期發(fā)展的關(guān)鍵. 團(tuán)隊(duì)中每個人都可以提建議, 提出自己的看法和發(fā)展方向, 不斷的頭腦風(fēng)暴, 把項(xiàng)目做到極致. 當(dāng)然其中需要把控, 取舍. 就好像PDCA 循環(huán).
分享幾個有價(jià)值的開源方向和開源項(xiàng)目
選擇開源的方向其實(shí)我在上面的開源項(xiàng)目的實(shí)用性中已經(jīng)闡述, 不過前提還是需要根據(jù)自身偏好和擅長點(diǎn)來選擇, 筆者這里列出幾個可以做的開源方向:
- 頁面可視化搭建平臺
- 埋點(diǎn)可視化搭建平臺
- 基于瀏覽器的文檔引擎
- 協(xié)同系統(tǒng)
- 智能客服插件
- 鴻蒙系統(tǒng)工具插件
- 無線端js應(yīng)用搭建平臺
- 可視化圖形引擎
- js ai相關(guān)
- 跨端搭建平臺
大家也可以參與如下幾個現(xiàn)成的開源項(xiàng)目, 畢竟創(chuàng)始人都非常nice:
- H5-Dooring 可視化H5編輯器
- helloworld-Co/html2md 強(qiáng)大的html專md工具
- ant-simple-pro 支持多框架的開箱即用的后臺管理模版
- mengshukeji/Luckysheet 在線電子表格項(xiàng)目(在線excel)
- MrXujiang/pc-Dooring 可視化PC端編輯器
- dooring-electron-lowcode 基于electron的lowcode桌面端編輯器
本文轉(zhuǎn)載自微信公眾號「 趣談前端」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系 趣談前端公眾號。