TL;DR
Side Project分为两类:
- 以学习为主要目的的项目
- 以设计为主要目的的项目
Side Project所使用的编程语言也分为两类:
- 以性能/细节为核心的编程语言
- 以开发效率为核心的编程语言
Side Project
Side Project,可以理解为工作之余或闲暇生活中编写的项目。这类项目通常不受公司/学校/团体的制约,通常是个人项目。举例来说,一个程序员在公司,在公司要求之下,编写了一套人员信息管理软件;而这个程序员在摸鱼的时候,编写出来了一个Markdown编辑器,又利用下班时间写出来了一个图片管理软件。那么,这个Markdown编辑器和图片管理软件就称作Side Project。
Side Project在开发初期通常有几个特点:
- 个人开发。至少最开始,项目的诞生源自某个人的灵感。
- 代码具有单一来源性。这类项目的代码贡献,通常来自于某个人或某几个人。
这些描述,希望给您带来一个有关Side Project的初步印象,不过,本文并不聚焦于定义,而是聚焦于分类。
Side Project分为两类:
- 以学习为主要目的的项目
- 以设计为主要目的的项目
第一类项目通常也被称为“造轮子”,通常是实现一些已有成熟方案的软件,比如文本编辑器、操作系统、编译器等。编写这类项目的目的是:通过编码过程,学习某一类软件的运行方法/底层逻辑,并积累编程经验。比如,很多学生会在闲暇之余,照着教材知识编写自己的操作系统,这就是为了学习操作系统的运行逻辑,巩固课上学到的知识。这类项目通常不是为了给用户使用的,生命周期比较短——在搭建起一个可以运行的demo之后,这类项目的开发也宣告结束了,不会有太多的后续维护。
第二类项目则是为了给用户使用的。这类项目通常诞生于某个具体的需求,是为了解决问题而生的。比较有代表性的例子是Linux系统,它是Linus在业余时间开发的一个系统,旨在解决Minix系统的一些问题。这类项目生命周期比较长——需要不断地迭代、更新以匹配用户的需求。这类项目通常有商业性的潜力。
简而言之,第一类项目是课内大作业,第二类项目则是产品。不过,课内大作业未尝不能成为产品,关键之处在于其能否契合住用户的需求。
编程语言
Side Project所使用的编程语言也可以氛围两类:
- 以性能/细节为核心的编程语言
- 以开发效率为核心的编程语言
这两类编程语言的代表语言为C和Python。
以学习为主要目的的项目通常使用以性能/细节为核心的编程语言,旨在剖析最深层次的细节;而另一类Side Project则主要应用以开发效率为核心的编程语言,旨在达成易维护、速编写的目标。