24

当你开始一个个人编程项目时,你的第一步是什么?我正在尝试启动一个目前只是一个想法的项目。我得到了很多这些,然后我直接进入代码,过了一段时间就完全失去了兴趣,或者只是忘记了这个项目。

当你开始时,你的第一步是什么?你计划好这个项目了吗?做个图表?在纸上写一些代码?你如何以你知道你会成功的方式开始一个项目?

4

14 回答 14

16

唯一对我有用的是:创建它的最小可能实现,它以某种方式可用,然后使用它。

于 2008-09-13T22:52:26.457 回答
11

来自高效能人士的 7 个习惯,习惯 2:以终为始。

对于任何项目,您都需要一个明确的目标,一个可以说“我完成了”的点。明确的结果会给你指明方向。一旦你有了它,你就可以开始计划如何到达那里。项目的规模和复杂性将决定您的计划需要多少细节,但一般来说,您会希望定期感受到您的计划取得的进展。

我的下一步是勾勒出所需模块的设计以及每个模块之间的 API。如果 API 是干净的,那么模块可能是正确的。然后我开始实现模块,边做边测试。

于 2008-09-13T23:01:00.150 回答
10

在我触摸键盘之前,我花了很多时间思考项目的各个方面。

我回顾了我从以前的项目中学到的东西,并将其写在不同的类别中(“技术”、“促销”等)

个人项目与否,我总是设置源代码控制。Git、Mercurial of Bazaar 是源代码控制工具的示例,它们不是侵入性的,因为您不需要设置主服务器。只需键入一个简单的命令来创建项目,签入文件,提交。将来,当您弄乱某个文件时,您将能够“撤消”

我还建立了一个轻量级的票证系统来跟踪 1.issues 和 2.ideas “轻量级”我的意思是,如果使用这些列表维护两个文本文档对您有用,那就足够了。

希望这可以帮助。

于 2008-09-13T22:42:20.990 回答
3

我同意已经给出的建议:

  • 计划一个最小的实现,作为第一个完整版本做一些有用的事情。
  • 对您想要实现的目标有具体的目标,以便与您的进度进行比较。

我还建议您从整体架构的轻量级设计开始,这样您就可以获得如何构建产品的路线图。

当我对至少在第一级分解时的外观没有清晰的概念时,我发现很难开始构建一些东西。想想除了功能之外您还需要什么:高性能?、可扩展性场景?、哪些?、可用性目标?、高可扩展性?、易于部署和可安装性?等等。问问自己:我必须按顺序构建哪些组件达到那些建筑品质?

不要误会我的意思,我是敏捷软件开发的坚定支持者。你不需要花很多时间来设计你的架构(因为它肯定会随着你的构建而发展,并获得关于哪些有效和哪些无效的反馈),但是有一个如何构建你的产品的蓝图基于它的架构应该有助于计划您的进度和设定现实的目标

于 2008-09-14T08:20:45.780 回答
3

定义项目的目标。听起来您几乎只关注解决方案而不是问题。

一个程序对你或其他任何人都没有用,除非它解决了一些问题。编写代码以开始行动固然很棒,但是在开始之后您似乎失去了兴趣和注意力——因为您正在查看代码,而不是问题。

花一些时间考虑是什么导致您编写此代码。思考其他人如何发现同样的需求,什么样的路径可能会让他们遇到你努力解决的同样的挫败感。

然后,找到其中一些人并提供您的(部分)解决方案,您将在他们之间产生兴趣和建议。

THAT will keep you going on your project. The fellow interest, the sharing, even the disagreements -- it's people who need software! Don't create solutions (software) looking for a problem (people). You started with YOU, with your need or desire, but focused on the code, and lost the impetus for the project.

Programming's a lot more fun when you're problem-solving. But you need to keep the problem in front of you. Sharing the problem builds community. That's what this is really all about, isn't it?

于 2008-09-17T10:13:08.540 回答
2

对于我自己的个人项目,我只是直接投入其中。当然,这些项目都还没有大到需要任何形式的预先计划。如果这将是一个严肃的项目或规模相对较大的项目,那么至少清除程序的每个部分需要做什么以及他们将如何做的高级视图总是一个好主意。

于 2008-09-13T22:31:49.813 回答
2

和其他人一样,我的个人项目总是有:

  • 最终目标
  • 任务列表
  • 小可用单位
  • 源代码控制

作为额外的动力,我尝试使用我以前从未使用过的技术。学习新事物通常成为我最大的动力。

于 2008-09-14T01:28:04.273 回答
2

容易——不要从你可能会失去兴趣的所有项目开始。在开始任何工作之前,花更多的时间来确保你想致力于一个想法。

于 2008-09-14T05:22:15.550 回答
1

这取决于项目 - 它有多大?

如果我正在编写下一个记事本克隆,我可能会一头扎进,如果我想推出自己的操作系统,则需要更多的非编码工作。

我喜欢做很多图表,我用于大多数开发的工具是干净的 A4 纸和一支铅笔。画出 UI、工作流程、基本类以及您将如何存储任何数据 - 然后编码只是一种计算机可读的方式来编写您已经绘制的内容。

源代码控制法 SVN 是几次击键/点击,因此开销很低,收益很高,尝试一些东西很方便,如果它们不起作用,就恢复到早期状态。

然后只需制作可以工作的最基本的原型 - 一旦实际进行某些事情,就更容易获得热情并添加更多内容。如果它是压倒性的,我会发现我认为问题已经在我的脑海中解决了,这就足够了。

于 2008-09-13T23:35:53.997 回答
0

首先规划出最终申请的基本大纲。最重要的功能,基本的 GUI,程序流程等。然后对其进行优化,以便您一开始不会承担太多,删除不必要的功能,并在第一个版本中添加您想要的其他内容。然后使用该大纲启动任务列表,以创建应用程序的最小可能工作版本。然后更容易添加额外的功能并使其充分发挥作用。

于 2008-09-13T23:00:53.613 回答
0

我喜欢马克西米利安的回答..扩展一点,我的个人项目是为了解决我已经在做的事情而开发的。所以当我厌倦了重复的工作时,我会设计一个解决方案的原型。然后使用它。如果它与我早期的项目之一足够相似,我将尽可能多地借用代码并尝试提高我的工作水平,使其更专业。

Fusion 对源代码控制的使用也很重要。安装 SVN 需要 2 分钟。

于 2008-09-14T00:36:32.370 回答
0

如果你想把它变成一个公共的开源项目,Producing Open Source Software应该是一本不错的读物(在线和印刷版都可以)。

于 2008-09-14T01:41:29.153 回答
0

如果您的个人项目类似于现有的开源项目,您应该考虑为该项目做出贡献。一些小的贡献(错误修复等)比完成一半的项目更有价值。

于 2008-09-14T11:59:41.697 回答
0

All of the above, but start to cement the plan in place.....

Go for some tools SmartSheet - even if you are working on your own you should set out some stages and dates yEd - and Graphity from www.yworks.com

于 2011-03-24T12:40:58.853 回答