1K GitHub star+ 的项目是如何炼成的?
前言
首先标题党一下,其实这篇文章主要是记录我的第二个过 1K star
的项目 Java-Interview,顺便分享下其中的过程及经验。
需求选择
Java-Interview
之所以要做这个项目主要是当时我正在面阿里的两个部门,非常幸运的是技术面都过了。其中的过程真是让我受益匪浅更是印象深刻,所以就想把期间的问题记录下来,加上自己的理解希望能对其他朋友起到帮助。
正好那段时间也是传说中的金三银四
,所以无形中也叫顺势而为吧?。
SSM
这个项目的历史就比较悠久了,我看了下第一次提交差不多是两年前。
从这个名字也可以看出当初还是一个刚入行没多久的小菜鸟,因为之前在学 Java 的时候真的走了很多冤枉路,所以从头开始记录到现在整个过程所学到的东西,踩过的坑。
由于是面向小白,入门简单,上手较快也取的了一定的关注。
其实从这两个项目可以看出选择一个方向是很重要的。
以及该项目解决了什么问题,长期的规划,受众是哪些都要考虑清楚(怎么有点像做产品?,其实这就是你自己的产品)。
比如这两个项目的目标:
文档很重要
既然项目做出来是给人用的,那文档就显得至关重要了。
就像日常和前端怼接口时,有一个标准的文档输出比在白板上折腾半天要高的多。
其实仔细观察 GitHub 上热门的项目,会发现他们的文档几乎都有一些共同结构:
主要目的就是要简单易读,快速上手。
然后把一些复杂的如系统设计、开发指南等可以放到 wiki 中。
切记不要什么东西都往 README.MD 中写,保持一个简洁的文档可以加分哦。
当然也可以在首页加入一些徽章如:
下面是我自身体验比较优质的推荐渠道:
- 开发者头条:由于截图的时候没有新发文章,之前那篇秒杀架构实践发了之后博客 80% 的流量都是从头条过来的,而且质量很高,不得不点个赞。
- 并发编程网: 并发编程网是由阿里大牛清英(买了那本《并发编程的艺术》就被圈粉了)创办的,其中的文章质量普遍较高(导致也会有一点写作门槛)。由于网站的流量也比较高,只要你的文章质量不错肯定会得到好处。
- 掘金:掘金这两年也比较火,是专门做开发者内容的,也是网站流量不错。
- 开源中国:开源中国的博客也不错,自己也有代码托管,但我还是更喜欢用 GitHub,一般上了编辑推荐都会有不错的访问量。
- V2EX:大名鼎鼎的 V 站,其实受众较少,正因为如此也形成了独有的文化,因此也是我每天比逛(摸鱼)的网站,由于受众大多是开发者所以也能得到很多有用的反馈。
- 大佬推荐:最快捷的方式其实就是口口相传,其中当然是大佬的效率最高。之前有个纯洁的微笑、程序猿DD 都投过稿,也能带来不错的流量。
- 简书:本来不想推荐简书的(之前的事件以及现在鸡汤太多),但是流量还可以,现在就纯粹当做博客备份的工具了。
坚持下来之后会发现:只要自己坚持、保证质量最后会形成自己的阅读圈子,到后面甚至会有其他朋友主动来找你分享,这些都是自我提升的过程。
不忘初心
当初做的第一个开源项目就是 SSM,完全受够学习时找资料的痛苦,也得到了很多人的帮助,所以才有了该项目。
平时工作中或多或少都会用到开源项目,其实我们大部分人也写不出 Spring、Guava 这样的项目,只是再这过程中可以参与进去,收获也是非常丰富的。
两年前参与开源到现在有收到面试邀请、物质奖励这些都是正面积极的,可以鼓励我们接着做下去。
但最多的还是在这过程中结识了很多朋友,技术能力提升也很明显,这些都是保持自我可持续发展的必要条件。
- Enterprise Library 4.0缓存应用程序块
- 通过.htaccess 让WordPress 的上传文件夹更安全
- asp.net 性能调较
- 零基础学习大数据,搭建Hadoop处理环境
- 为你的WordPress 博客开启两步验证功能(技术支持:谷歌)
- 为你的WordPress 博客开启两步验证功能(技术支持:谷歌)
- WordPress 注册页面显示自定义提示信息
- Windows Server 2008密码重设盘
- Dynamite动态排序库
- WordPress 顶部管理工具条添加自定义栏目
- WordPress 在后台文章和页面列表显示对应的ID
- WordPress 修改默认的 wp_ 数据库前缀
- WordPress自动在uploads文件夹内创建子文件夹
- MP6 Light:浅色型的扁平化WordPress 后台管理界面
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android Usb设备的监听(Dev)外设端口的判定以及耳机的插拔
- Android自定义View实现简单文字描边功能
- 在脚本中单独使用django的ORM模型详解
- Android5.0之Activity的转场动画的示例
- Django-rest-framework中过滤器的定制实例
- Python greenlet和gevent使用代码示例解析
- 完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误
- Android开发中Intent.Action各种常见的作用汇总
- Android解决ScrollView下嵌套ListView和GridView中内容显示不全的问题
- Android添加ButterKnife时报错Error:(2, 0) Cannot add extension with name 'android'的解决办法
- Python视频编辑库MoviePy的使用
- python json.dumps中文乱码问题解决
- Android定时器实现定时执行、重复执行、定时重复执行、定次数执行的多种方式
- Android开发导入项目报错Ignoring InnerClasses attribute for an anonymous inner class的解决办法
- Android中buildToolVersion与CompileSdkVersion的区别