程序员的业余项目,我们也叫它 side project。
前几天,100offer 发起了一场活动叫 <寻找实干和坚持的技术力量>,他们是这么说的:
世界在被代码改变着,而我们在创造着代码。
仅仅是因为好玩,他开发了一款操作系统,连想都没想过,这会让自己有一天成为开源世界的领袖级人物。
只是想创造一个很酷的东西,所以他动手,坚持,因而有了让这个世界上的每一个人都可以免费地获取人类所有知识的百科全书。
成功者和其他人最大的区别就是,他们真正动手去做了,并且做了下去。
近些年来确实有不少 side project 不仅成功转正,而且闪耀世界的例子,比如 Gmail、Instagram、Slack 等。甚至连 Facebook 早年也仅仅是一个学生的 side project。确实这些闪耀的例子激励着我们去尝试着各种各样的 side project,但真正能做到像上述例子中那样光彩夺目,只怕这概率也和买彩票中头彩差不多了。那么我们坚持做 side project 的意义在哪里呢?
自从我走上职业程序员的道路后,我就一直开始在做 side project。这些业余项目,有些是把工作中真实项目碰到的问题的解决方案加以抽象、提炼做成通用的工具,以便用在将来的项目中。这样的事情做的多了,慢慢就积累了一个自己专属的工具箱,好多程序员想必都有自己的工具箱,里面有些自己专属的工具。时间的推移伴随能力和视野的成长,会发现当年做的一些小工具原来有更好的开源解决方案,哦自己又不小心干了重新发明轮子的事情。
那像我早年干的那些重新发明轮子的事情是不好的么?我认为不是。著名程序员 Nicholas C. Zakas 提到的几个最重要的职业建议,有下面两条
(来自 《七个对我最好的职业建议》 阮一峰翻译):
不要别人点什么,就做什么。
自己找到道路。
我认为做 side project 对此有非常大的帮助。一个 side project 就是个产品,你不再仅仅去实现需求,因为没人告诉你需求,除了你自己。你在主导一个产品,找到它的发展方向,做出决定,然后再去实现它。而找到道路做出决定,再去执行实现,前者比后者要困难的多。
扯远了,回到我们文章开头提到那场活动,我正巧看见了这个活动,而我正好也有一个 side project。这个项目开始于五年前,一开始托管在 Google Code,后来 Google 在中国没了,GitHub 兴起就转移到上面了。这是一个名叫 Craft 系列的项目,为什么叫 Craft 呢?
关于 Craft 的起源是来自我还在读书时玩了 10 年的两款游戏 StarCraft(星际争霸) 和 WarCraft(魔兽争霸)。工作后我成为了一名职业程序员,花越来越多的时间在编程上而非游戏。我深深的怀念过去玩星际与魔兽的日子,所以使用了 Craft 来命名这个项目以纪念过去的日子。更重要的是,我希望这个项目能继承来自这两款游戏的精髓——追求完美,精益求精。更多关于这个项目的内容,可以参见 Craft 官网 以及托管的 GitHub 地址。
关于 Craft 这个业余项目,在 GitHub 还留下了几万行代码。我记得这五年来针对它做过 7 次比较大的重构,从工具箱里扔掉的代码比留下的多的多。每一次重构,都是对以前自己的否定,每一次否定都是一次成长。程序员们早点开始自己的业余项目吧。
后记:
Craft 也参加了 100offer 的活动,目前正在投票阶段,如有缘看到这篇文章请帮忙投个票。
投票地址点这里,截止日期 2015-09-27。
下面是我自己开的一个微信公众号 [瞬息之间],除了写技术的文章、还有产品的、行业和人生的思考,希望能和更多走在这条路上同行者交流,有兴趣可关注一下,谢谢。
<script type="text/javascript">
$(function () {
$('pre.prettyprint code').each(function () {
var lines = $(this).text().split('\n').length;
var $numbering = $('<ul/>').addClass('pre-numbering').hide();
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i <= lines; i++) {
$numbering.append($('<li/>').text(i));
};
$numbering.fadeIn(1700);
});
});
</script>
分享到:
相关推荐
程序员,用业余时间投资未来,0HICN 一个促进程序员职业发展的平台,不论是你是:技术小白、业务新手、项目大神,我们早已为您规划...程序员职业发展平台0HICN介绍卡通ppt模板。
在大卫的这篇博客中,他说员工在下班后做业余项目对老板不利,对公司有害。这种思想太落后了。 首先,一个人在业余时间应该做什么、不应该做什么,别人不该说三道四,这是一种极大的侮辱,这是对他人无礼的...
大数据简历项目。 简历,程序员简历。程序员面试简历!
它是使用Python进行的著名Hangman游戏的业余实现。 这对于希望检查游戏的简单易懂(希望如此)实施的新手程序员可能会有所帮助。 作为我的第一个项目,它肯定有一些不足之处,但是它可以很好地编译并且可以完全正常...
您可以根据自己的需求对页面进行布局调整、颜色更改以及内容替换,轻松打造出符合您项目风格的网站。同时,我们的代码结构清晰、注释详细,方便您学习和理解HTML、CSS和JavaScript等前端技术。您可能面临着课程设计...
在 Python/Django 的世界里有这样一个谚语:为语言而来,为社区而留。... 而且,专注于一个领域的程序员往往并不知道那些看起来是为其他工作类型创建的库能给他们带来什么好处。 这里的8个你可能还未使用,但绝
此项目属于业余时间练手的项目,接口数据来源均来自网络,自己付费购买了阿里云和极速网络接口数据,同时使用了部分免费接口,如果存在侵权情况,请第一时间告知。 本项目仅做学习交流使用,API数据内容所有权
但由于自由软件经常是作者用业余时间编的,现有编程环境是否让程序员喜爱 就成为一个问题.KDevelop希望能够更进一步:让程序员编程更容易且更有效率:在同样的开发阶 段,用KDevelop编制的程序能更可靠,功能更多. ...
程序员面试刷题的书哪个好 #修改内容大纲整体规划(2018年12月17日 15:00:55) 项目使用Arouter路由进行页面管理 修正页面中的bug 查找项目中的框架,并添加混淆文件日志信息 调整项目架构,采用组件化方式开发,设置...
当候选人讨论他们以前的项目以及他们在业余时间从事的任何项目时,你正在寻找激情和热情。 如果他们谈论这些事情很兴奋,他们就会表现出对软件开发的热情,这是他们是否有能力满足您的要求的一个很好的指标。 一旦您...
:waving_hand:我是一名大学生程序员,试图提高多种语言的技能。 :graduation_cap: :laptop: 我目前正在大学上计算机课程。 :video_game: 我喜欢在业余时间玩游戏。我使用的语言和工具:我使用的平台:关于这个...
jQuery是继Prototype之后又一个优秀的JavaScript...不管你是网页设计师、后台开发者、业余爱好者还是项目管理者,也不管你是JavaScript初学者还是JavaScript高手,你都有很多理由去学习jQuery,因为它是面向任何人的。
程序员面试刷题的书哪个好网络技能 Web Skills 是对作为 Web 开发人员学习的有用技能的直观概述。 转到查看可视化概览或滚动浏览此自述文件以获取概览。 如果你喜欢这个项目,非常欢迎你 :open_book: 目录 ➤ 目录 ...
本书从基本的Windows程序与汇编指令出发,深入...从2008年开始参与一个主要涉及不同架构之间二进制指令的实时翻译技术的项目的开发。业余时间在驱动开发音(www.driverdevelop.com)以楚狂人为笔名发表了许多技术文章。
watchWorld根据自己对 Mvp 的理解写的一个小 Demo。...app 界面丑还请多见谅,后期项目足够完善之后再找 UI 的同学帮忙调一下色调,大家都是程序员,提升技能就行了,^_^有任何疑问或者建议欢迎加我 QQ 讨论:939845619
我会用我的业余时间持续完善这份名单,谢谢 :folded_hands:。 欢迎大家推荐自己觉得不错的 Java 项目,下面项目的排序很大程度是根据当前项目的 Star 数量。 如果有码云上比较好的项目的话,我也会推荐到这里来!...
我会用我的业余时间持续完善这份名单,谢谢。 欢迎大家推荐自己觉得不错的 Java 项目,下面项目的排序很大程度是根据当前项目的 Star 数量。 教程 Java 1.JavaGuide :【Java学习 面试指南】 一份涵盖大部分Java...
我会用我的业余时间持续完善这份名单,谢谢 :folded_hands:。 欢迎大家推荐自己觉得不错的 Java 项目,下面项目的排序很大程度是根据当前项目的 Star 数量。 如果有码云上比较好的项目的话,我也会推荐到这里来!...