编写爱好项目的规范是他们完成的唯一途径吗?

这是我想知道的。 我们3个月大的婴儿每天晚上都让我们睡觉,然后跳到我的电脑,开始编写我的爱好项目。 我有大约20个不同types的项目,从C ++游戏到Web应用程序,还有一些对开源项目的贡献。 这是一个真正的激情,已经很多年了。

然而,当我回头看时,我发现我没能完全完成我的一个爱好项目。 我一直在做原型和设置最重要的function,但随着时间的推移,而不是完成我的项目,我最终转向另一个似乎“如此之冷”的项目。 因此,我通常最终得到的是没有结局和故事的错误游戏和不完整的游戏,具有最快的PolygonDraw例程的3D引擎,但是没有实现其他任何东西等等。列表很长。 我觉得我必须写出未完成的乒乓球超过一百倍!

我被告知,补救措施是为我的爱好项目编写规范。

一方面,我写了很多规范在工作。 我知道他们是如何定义产品的路线图,并保持在计划中。 另一方面,规格和爱好项目似乎不太合适! 在我看来,构build游戏的学习曲线实际上是让游戏变得有趣的。 不是游戏本身。 因此,失去重构整个引擎的乐趣,创造最无用function的乐趣,等等…

所以问题来了:你有没有为你的爱好项目编写规范? 那么他们和那些下class的人有什么不同呢? 你如何设法完成你的爱好项目?

我会很高兴知道,当我在我的新项目上工作:钢琴奏鸣曲发电机:)

我不认为写规格是解决您的问题。 显然,你的“爱好项目”是你觉得有趣的东西。 你写的有趣的部分,但是,然后避免不必要的东西完成不好玩的部分。

如果你只是“编程乐趣”,那么好,你就成功了。 我不认为写规格是有趣的。

如果你真的想“完成”一些东西,最好的办法不是写规格,而是在有趣的因素下降的时候跳到另一个项目。

这完全是关于“自我项目pipe理”……即使是为了好玩。

我感觉你…我曾经有很多回购,往往都卡在修正约200左右。

这是以前发生的事情,因为我没有做足够的计划,经过大约200次提交,事情变得混乱,需要重写…然后,兴趣消失,因为它似乎太麻烦了。

我学会了写我自己的规格供个人使用

  1. 让我专注于完成工作,而不是进入function蠕变车道
  2. 提醒我我正在努力的方向
  3. 在编码之前有很棒的想法
  4. 让事情更长时间更有趣

对我来说,写我自己的规格是完成任何事情的关键!

如果没有计划,你不会创业吗?

对于个人项目,我有大量的moleskine书籍充满粗糙的规格和想法。 当他们成熟后,他们从笔记本移植到真实的文件,并开始编码。

大编辑 :在个人效率的驱动器,并完成项目。 我读过“让事情做完” ……尽pipe所有关于“心理”和各种心理层面的嬉皮士(这肯定不是基于任何科学),但提示非常好。

我不会太复杂,但列出你想包括在你的应用程序中的所有function和要求确实有帮助。 就像大多数业余爱好项目一样,你经常不会坐下来直接编码2个月并完成它们。 这里有一个小时,两个小时,等等。基本上,忘记你最近在做什么,以及这个超级好主意对于应用程序的最初目的是什么。

如果你花了几个小时写下规格和要求,那么当你获得一些空闲时间,或者你的ADD切换到这个项目,并且你试图记住这是什么意思时,6个月后你将会非常有价值。

我刚刚发现,编写规范真的是我需要完成项目的东西。

我有点像你,很多项目,从一个跳到另一个,永远不会完成任务。 直到6个月前,我开始真正写规格,并为我的项目制定了一个路线图。

我所能说的只是,它实际上是有效的,因为你把你的项目分成更小的步骤,就像一个有检查点的种族,当你开始把检查点标记为已完成时,感觉好,上瘾,你的重点将放在终点线。

这样,你只能同时保留1或2个项目,但实际上完成了它们。 当然,即使你在一个月或更长的时间内没有触及它,你也可以获得额外的,非常宝贵的奖励。 规范将永远在那里提醒你的目标和你的项目的目的。

这只是我个人的经验,我相信你应该尝试一下。 希望它也能为你锻炼。

我已经能够做一些业余爱好项目,并完成其中的一些。 我试图完成他们,但有些我只是无法召集。

我认为的原因是,完成一个项目所需的细节数量太多,从一个激情项目到一个项目的繁琐。

什么帮助我完成了我的大部分工作,就是他们留下了一份激情,直到最后的一幕留下。 所以我刚刚通过他们。

在某种程度上,规范是否会有所帮助? 他们让你进一步参与项目,但几乎总是有一个激情消失的点,你寻找下一个shiny的对象。

它不适合我! 事实上,每当我写规格,我通常使项目更大,不太可能完成。

有时候做最好的方法就是做。

泽·弗兰克(Ze Frank)解释得比我好得多: http : //www.zefrank.com/theshow/archives/2006/07/071106.html (与骂人的video链接)

编辑:只需添加。 如果你发现你想离开你的一半完成的项目一个新的,伟大的想法…做到这一点! 别回头!

完成不是你自己的宠物项目的要求。 没有人会责怪你没有完成任何其他人甚至会打扰开始的东西。

你开始的原因是因为激情。 这非常重要。 你不应该在自由的时间里强迫自己“闯过”。 你将消耗你的激情,这是你最重要的资源。

当我开始时,我通常会写第一套规格。

我也是纸张思考的忠实粉丝,所以我会画屏幕,UML,图表,stream程图,devise元素……这只是一个定义你的项目范围的问题,并且能够观察你在心神。 这真的帮助我思考。

这些文件将是我整个项目的规格。 我会随着时间的推移添加其他的,但是我并没有尽可能多地保留原有的工作项目:我知道我要去哪里,我可以跟踪看到我的变化码。

当然,我的一些爱好项目是通过协作完成的。 在这些情况下,为了更好地与我的团队进行沟通,我写下了更多的规格,并且尽力保持数据库图表等文档的更新。

我还有几个爱好项目,我还没有完成。 我大概有10个,并且为其中的一个写了一个规范,规模最大(也是一个游戏)。

我还没有完成没有规格的,也没有完成。 我想这是因为我从来没有发表过这个作品,也没有把它展示给任何人,所以它仍然充满了错误,从来没有完成。

我想这意味着无论你是否有规范,都不会像其他因素那样影响项目的成功,比如有时间,有动力,有帮助,有信心。

我发现帮助完成的唯一最好的事情是让别人和你一起工作。 找一个对同一件事感兴趣的朋友(或两个),并devise/编码。 你不仅有一些想法,但你也有人来激励你,更不用说进步是一倍,所以你会希望完成之前,你放弃了:)

当然,它需要源代码控制,但是你已经在为你的项目使用它了,对吧? 🙂

完成他们吗?

我认为从不完成一个爱好项目是合理的。 只要你活着,你就可以继续工作。 Aciddose多年来一直致力于他的虚拟仪器xhip ,固执地从未达到1.0,从一个版本到另一个发行版本,使得这个工具对人们的程序没有任何价值。 然而他和他softsynth的用户似乎正在盛大的时间。

也许如果你只是瞄准“释放”而不是“完成”,你会更满意。 贝塔斯让你继续做梦。

是和不是。 我正在考虑在笔记本上写笔记,并在实施时添加到笔记本中。 与其他人可能不得不看到规范的工作项目有所不同。

我完成了大约一半的工作。

我已经帮助开发了一系列从安全关键航空电子设备到抛弃式个人项目(如Sudoku求解器)的系统。 显然,在航电系统中,规范对系统的安全运行至关重要,并防止杀死某人,但我从来没有为自己的个人项目而烦恼过。

我认为这是因为规范阅读和写作通常是无聊的。 乔尔写了一篇关于这个的有趣文章,以及如何让它们写得更好:

无痛的function规格

不幸的是,我还没有胆量尝试使我的规格更有趣,阅读工作呢。

也许是写规格的时候,你应该尝试为某些项目或与其他人一起工作? 这可以提供一些外部的动力。 我为表哥在戏剧中的驾驶做了一些networking开发,如果他们需要一个function,他们不会停止询问我,直到我完成它。

我可以给你的一个最大的build议是获得一些东西 – 使你的第一个版本的规格足够小,以至于你真的觉得你可以完成它,即使它不会有你想要的所有function。

一旦你得到了一些东西,软件用户的压力就足以让你继续下去。 这也确保了你开发的方向与用户希望你走的方向一致。

如果你实际上没有任何用户,那么放弃这个项目并不是那么糟糕 – 如果没有人有兴趣,这可能是不值得追求的。

如果来自用户的压力不足以让你专注,那么就开源吧。 如果对它有足够的兴趣,其他人会在你离开的地方把它拿起来,你可以自由地继续做更大更好的事情。

不幸的是,在编写DIFL引擎的核心规范后(不用费心去查看,因为在我的家庭系统之外没有任何踪迹),我仍然没有完成它。

简短的回答:制定一个业余爱好项目的规格是既不必要也不足以保证完成。

话虽如此…

我为我的所有个人项目保留一个工程笔记本。 我用笔记本来捕捉关于我工作的项目的各种事情。 这包括项目动机,在项目中利用的有价值的资源,在项目过程中开发的事项,以后可能会被重复使用,获得的重要见解等等。还包括更多的问题,大多数项目的规范。 我采用灵活/精益的方法来创build这些规范,对我而言,从成本/收益的angular度来看是非常有吸引力的。

顺便说一句…我有很多很多个人项目,并没有达到一个完整的工作系统。 其中一些我可能会绕过去完成“有一天也许”。 我有意识地select停止对其他一些人的工作,因为他们已经达到了他们的目的(例如向我介绍了一项新技术,帮助我更好地理解语言特征等)。继续摆脱这样的项目会导致减less所以我select把我的时间重新分配给我觉得更高杠杆的项目。

真正的问题是:你的爱好是什么? 是完成一个项目还是修补? 如果得到最后十码是一件苦差事,你必须决定是否值得。 写详细的规格将起作用; 如果你进入了这种自律,那么自我鞭策也是如此。 没有什么可以让你轻松化妆,所以你必须决定最终目标对你来说是否值得。

而且,为了certificate这一点没有什么具体的编程,你可能真的很喜欢这个人 。 他的作品中的一个要点是,毕加索和达芬奇这样的概念艺术家从来没有真正关心过最后的执行 – 这个想法就是一切,而且声称它,他们对完成实际工作的其他人感到奇怪或将草图留下未完成和未发表。

我不确定写规格是解决你的问题的方法(或者我的方法看起来很相似),但是如果我想做一些比一次性实验更多的东西,有些东西可以帮助我,的。

规范真的很紧张,应该是技术性的,但是对于一种爱好方式,你可以写一些类似的更宽松的东西,概述一些你想要的function,并显示它们如何在一个devise草案。 虽然没有如适当的规格那样详细或限制,但可能有助于保持正确方向的修补。

其次,你可以分解它,根据你的时间限制,可能会增加一些目标。如果你把重点放在build立一个项目的一部分,把它分解成可以在最后连接在一起的子项目,它给人一种你从一个部分走向另一个部分,而不是像你一直在做同样的事情,而且不再受到打扰。 如果你在列表中打勾,它就会起作用,因为通常情况下它必须至less在精神上发生。

如果你的目标是玩某些概念而不是真正创造最终产品,那么你可能就不会这样做,因为你没有努力。 一种方式可能是采取上面提到的分解的想法,然后find一种方法来添加一些个人感兴趣的东西到每一个让你感到厌烦的东西,也许试图给它添加一些挑战。

我还不是特别有经验的学习,但是这就是我一直在做的修补(有时候除非我经验不足,总是造成障碍),以及我过去几年如何在业余爱好的基础上接触到许多多媒体和networking项目。 虽然那个开源的人当你觉得无聊,让其他人拿起它的时候,如果你想看到你的代码被使用,但是已经满足你的个人目标,这是一个好主意。

我有很多相同的问题。 有一件事我注意到,虽然有帮助,但是却降低了我的野心。 像WAY WAY低。 如果你对规范有某种限制规则,比如“规范只能是一页”,或者“规范不能长于300字”,那么写一个规范就是实现雄心壮志的一种方式。 “规范只有一天,我可以完成编码”。 平衡权衡可以采取一些练习。 如果你去了最后的限制,如果你不能在一天内完成项目,你可以施加强制解雇项目的规则。

关于这一点的好处是,它限制你达到可实现的目标。 这听起来可能真的很愚蠢或错误。 或者这听起来很合理,但是你不能帮助它,你想要做出惊人的事情,而不是普通的事情! 不是小事情,你只能在几个小时内完成!

但要记住这一点:

“一个复杂的系统工作总是发现从一个简单的系统发挥了作用。 逆命题似乎也是如此:一个从头开始devise的复杂系统从来没有工作,不能使其工作。 你必须重新开始,从一个简单的系统开始。“

– 约翰·加尔

如果你已经有一个完成和工作的项目来build立这个雄心勃勃的项目,那就更容易了。 那么“更复杂的事情”可以成为一天适合的项目。 这是我正在努力的理想和理念,因为我认为它有最好的成功机会。 看过去的成功项目,绝大多数是以这种方式演变的,无论是有意还是无意。

对我来说很有帮助的是把一个新的function分解成一些小的任务,每个任务都可以在黑夜中进行。 所以,如果我有时间,我只需从列表中select一个任务,并完成它。 这往往足以让“stream动”,并“做一个更多”。

我一次只做一个function,所以我不会被所有其他很酷的事情分散,我可以添加到我的应用程序。

我在空闲时间不断地为我的项目编写规范,在工作中,在大学里和外面。 程序员最大的弱点就是他/她的记忆力,所以我觉得在我的思考时间保持自己的忙碌是件好事,把我的每一个念头写下来,写成某种结构化的文档。 在你知道它之前,你已经写了一个完整的数据库模式或有一个需求规范。

目前我正在努力提高自己的SQL技能,而且在写下我的经验写作的查询之间,我已经花了很多空闲时间。 经过一番调整,我有一个体面的文件,概述了需要做的事情。

我认为核心问题不是缺乏规范,而是完成某件事(任何事情)都很困难

这是艰苦的工作 。 看起来好像你的程序已经完成了90%。 但是,最后的10%(去除所有的错误,让应用程序释放质量,编写文档等)需要尽可能多的工作,前90%。 如果你想认真地推销你的程序,回答支持电子邮件,修复其他人的错误,那还有更多的工作要做。 也许不是你最感兴趣的工作。

这也是精神上的困难。 一个未完成的项目具有无限的潜力。 这是一个空白的canvas,你可以把你肆无忌惮的野心,崇高的理想和革命的想法展现出来。 一旦它完成并成为真实的,你必须看到它是什么。 有限。 有缺陷的。 从来没有像产生它的想法那样美丽。

这就是说,完成一些事情也是非常有益的。 你学到很多东西,对你的想法进行现实检查,完成某件事的满意度,以及你看到别人怎么看待你的工作。

一些忠告:

  • 确保你真的想完成这个项目。 也就是说,奖励是值得所有的辛勤工作。 (如果没有,那么接受这个事实,并保持一个开心的修饰者。)

  • find通过“无聊”的部分来激励自己的方法。 规格,也许,如果它让你专注。 但是find适合自己的东西,不pipe是待办事项,用cookies奖励自己,还是梦想成名。

  • 提前发布,经常发布。 您为“大发布”储存得越多,发布的机会就越小。

  • 首先发布,然后重写。 当你感觉到要进行重大改写的冲动的时候,先做一个发行版,然后重写(如果你还在努力的话)。 软件从来不是完美的。 如果你努力完美,没有任何压力释放你的一半(但现有的)代码,那么你永远不会做。

我的大多数爱好项目也没有真正完成。 只要我在做什么和学习,虽然我不认为这是一个问题。 目前我不写规格,但是我正在练习/培训TDD。 当我写规格的testing时,我会提起它。 有一段时间我会坐下来,只是创build一个testing,概述软件应该做什么。 有些日子我会通过这些testing。 它令人愉快,因为我不需要把代码全部留在脑海里,而且我可以随时坐下来,通过修复破碎的testing来取得进一步的进展。 事情就是这样,超现实。

乔尔关于“ 基于证据的调度”的文章适合我。 虽然我以不同的方式实施。

这个想法是把项目分解成小任务并给出估计,然后根据完成任务完成的时间来完成项目完成时的预测。

你可能会认为你的项目需要几年时间才能完成,但实际上估计只有两个月或更短的时间。 如果你工作更多,并迅速完成任务,你会看到更早的完成date。

我认为最有前途的动力是看到目标越来越接近你的目标。

另外:创build一些你稍后会用到的东西。 使用东西给你激励以后改进。