我偶尔(每天读一遍)想出一个新主意,在我最喜欢的编辑器/ IDE中开始一个新项目,开始编码,第二天我删除它并开始新的东西。我已经编程了大约六年了,在那六年中,我仅真正完成了一个非常小的项目(Pastebin.com的Dashboard小部件)。尽管这对于学习编码可能很棒,但我确实想完成一些工作。
在实际编码之前,期间和之后,我应该做些什么?有什么好的资源可以教我如何组织这样的单人项目?
如果有关系,我想进行Web或Mac开发。
我偶尔(每天读一遍)想出一个新主意,在我最喜欢的编辑器/ IDE中开始一个新项目,开始编码,第二天我删除它并开始新的东西。我已经编程了大约六年了,在那六年中,我仅真正完成了一个非常小的项目(Pastebin.com的Dashboard小部件)。尽管这对于学习编码可能很棒,但我确实想完成一些工作。
在实际编码之前,期间和之后,我应该做些什么?有什么好的资源可以教我如何组织这样的单人项目?
如果有关系,我想进行Web或Mac开发。
Answers:
我认为,长期而言,真正的问题是动力,而不是组织。
查找用户并与他们交谈。将您的项目视为对这些人的礼物(或可出售的产品)。(即使实际上并没有与您一起开发代码,也可以将想法反弹)。
从长远来看,拥有这种社会动机将比仅仅出于个人好奇心更有力地使该项目保持有趣。
您的目标应该是一小块有用的功能。将其放在SourceForge或GitHub上,并将该项目视为需要生存的机会,即使您突然被流星击中。
这导致更多的发布(意味着更多的来自用户的反馈和热情),也增加了另一个人决定为该项目做出贡献的可能性。
为自己选择一个特定的学习目标。该项目可以帮助您学习什么技术?如果事实证明该技术不适合问题区域,那么您是否有足够兴趣至少在完成1.0版之前将其搁置一旁?
这些目标的示例包括编写解析器,网络协议,游戏AI的各个方面,学习框架或工具包,新语言等。
最坏的情况意味着错过所有这三个条件,在此情况下,您反复地对从未发布过的工具进行“大量重写”,其中涉及到对于不确定的人来说并不有趣的代码。
当您在处理项目时提出新项目的想法时,只需在项目想法列表中记下它即可。然后回到当前项目。如果该项目值得,请不要让自己被一个新项目分散注意力。仅当一个绝妙的主意时,才使用以下步骤。
在开始我们的项目之前,请进行计划。会做什么?这将有多难?什么是已知和未知?可能出什么问题了?这需要多长时间?[现在您可以决定继续还是现在停止。]保留您的计划。[如果您正在处理一个项目,请搁置新项目并继续执行其他原始项目。]
启动项目时,将其设置为IDE中的单独项目。(因此,您无需删除它即可启动下一个项目。)将其作为新项目签入某些版本控制软件。(现在,如果发现它妨碍了另一个项目,则可以将其删除。)每当您正确执行某项操作时,就将其签入。(现在,如果您偏离轨道,可以回去。)
跟踪项目中出现的问题。这可以通过项目中的几个文本文件来完成。诸如TODO,Changelog,README(可能包含已知的错误和问题)之类的文件可能是适当的。
当您获得代码工作标记时,它就会出现在版本控件中。如果值得分享,那就这样做。
回到您的计划,看看您做得如何。为自己做一个经验教训文档。您学到了什么,您估计得如何?您错过了哪些问题?您高估了哪些问题?您认为重要的任何事情。
当您放弃项目时,请执行吸取的教训。添加有关您为何放弃该项目的注释。
大约每个月检查一次您的经验教训。随着时间的流逝,您可以增加两次检查之间的间隔。
根据您的评论,停止删除您的项目!
我通常不会在计算机上保留我没有积极开发(或预见不久将积极开发)的项目,但是源文件确实存在于SVN存储库中,并且所有内容(包括IDE配置文件)都备份在外部硬盘驱动器。它没有回答您的要求停止删除您的工作,而是专注于激励自己。
如果您正在寻找托管存储库,请查看Google Code,SourceForge,GitHub和BitBucket。上载您的文件,将其保存在某处,然后当您有新兴趣时,将其拉下。尽管您可以将它们设为私有,但是如果您不对它们感到羞耻,则可以将其公开。也许有人会对重新开始您的工作感兴趣,或者从您的示例中学习(特别是如果您使用的是有趣的库或框架)。
随着时间的流逝,继续努力。尝试一次专注于一件事。您可能无法使代码达到生产质量,但也许可以使代码达到示例质量,或者可以由他人查看以了解您的技能,知识或了解特定的工作方式。
首先,有项目和项目。如果您尝试某些技术或库,或者其他,您可能会在IDE中创建一个项目,找出对您而言是否有趣,然后删除您的项目。没关系,每个人都这样做。
另一种类型的项目是真实的软件/站点/等,即业务,其中那些“项目”,文件,程序仅仅是工具,开发如此复杂的东西需要动力和目标:
您开发的内容应该是新的。如果您由于认为缺少所需的某些功能而只想制作另一个文本编辑器,则可能不需要这样做。有数百种开源工具,其中之一就是其中之一。
即使您制作了一个像脚本一样的小型一次性工具,也应说明其中列出的内容,这将更容易解决问题本身。
如果您坚持编写代码(例如,大量重写代码),那么您可能没有足够的经验来做到这一点。拿一本关于软件工程的好书,您的平台(mac / web / etc),阅读由经验丰富的开发人员编写的执行类似操作的代码。现在有很多地方可以做到这一点(github,google代码,编程博客,stackoverflow)。
不要尝试从头解决一个非常复杂的问题(例如,编写编译器或操作系统),首先将其分解为较小的任务,通常是有人已经创建了可以帮助您解决问题的库。
您是否考虑过问一个亲人他们真正需要一个Webtool,然后实际为他或她制作 Webtool ?
这应该提供实际完成和交付的动力,这是其中的难点。如果对您所爱的人有用,您还将获得支持和维护该应用程序的好处。如果没有用,您可以从经验中学到什么地方可能出问题。