当您开始个人编程项目时,您的第一步是什么?我正在尝试启动一个只是一个想法的项目。我得到了很多这些,我直接进入代码,过了一段时间后,我们完全失去兴趣,或者只是忘记了项目。
当你开始时,你的第一步是什么?你计划好这个项目吗?制作图表?在纸上写一些代码?你如何以一种你知道自己会成功的方式开始一个项目?
答案 0 :(得分:16)
唯一对我有用的东西:创建一个可用的最小可能的实现,然后使用它。
答案 1 :(得分:11)
来自7 Habits of Highly Effective People,习惯2:从头脑开始。
任何项目都需要一个明确的目标,你可以说“我已经完成了”。明确的结果会给你指路。一旦你有了,你就可以开始计划如何到达那里。项目的规模和复杂程度将决定您的计划需要多少细节,但总的来说,您会希望定期感受到您的计划取得进展。
我的下一步是草拟出所需模块的设计以及每个模块之间的API。如果API是干净的,那么模块可能是正确的。然后我开始实现这些模块,然后进行测试。
答案 2 :(得分:10)
在我触摸键盘之前,我花了很多时间考虑项目的各个方面。
我通过我从以前的项目中学到的东西,并将其写成各种类别('技术','促销'等)
个人项目与否,我总是设置源代码控制。 Git,Bacurar的Mercurial是源代码控制工具的示例,它们不是侵入性的,因为您不需要设置主服务器。只需键入一个简单的命令来创建项目,检查您的文件,提交。将来,当您弄乱其中一个文件时,您将能够“撤消”
我还建立了一个轻量级票务系统来跟踪1.issues和2.ideas “轻量级”是指如果用这些列表维护两个文本文档对你有用,那就足够了。
希望这有帮助。
答案 3 :(得分:3)
我同意已经给出的建议:
我还建议您从整体架构的轻量级设计开始,这样您就可以获得有关如何构建产品的路线图。
当我不清楚它应该至少在第一级分解时应该如何看待时,我发现很难开始构建一些东西。想想除了功能之外你还需要什么:高性能?,可扩展性场景?哪些?,可用性目标?,高可扩展性?,易于部署和可安装性等等。问问自己:我将需要构建哪些组件实现那些建筑品质?
不要误会我的意思,我是敏捷软件开发的坚定支持者。您不需要花费大量时间来设计您的架构(因为它肯定会在您构建并获得有关哪些有效和哪些无效的反馈时发展),但有一个如何构建您的架构的蓝图基于其架构的产品应该有助于规划您的进度和设定切合实际的目标。
答案 4 :(得分:3)
定义项目的目标。听起来你几乎只关注解决方案而不是问题。
程序对您或其他任何人都没用,除非它解决了一些问题。编写代码以获得移动是很好的,但是在开始之后你似乎会失去兴趣和专注 - 因为你正在查看代码,而不是问题。
花一些时间考虑是什么导致你编写这段代码。思考其他人如何发现同样的需求,可能会让他们走上同样的挫折之路。
然后,找到其中一些人并提供你的(部分)解决方案,你会产生兴趣和建议。
这会让你继续你的项目。同胞的利益,分享,甚至是分歧 - 这是需要软件的人!不要创建寻找问题的解决方案(软件)(人)。你从你的需要或愿望开始,但专注于代码,并失去了项目的动力。
当您解决问题时,编程会更有趣。但是你需要把问题摆在你面前。共享问题构建社区。这才是真正的全部,不是吗?
答案 5 :(得分:2)
对于我自己的个人项目,我只是潜入其中。当然,这些项目中还没有一项足够大,需要进行任何预先规划。如果这将是一个严肃的项目或相对较大的规模,最好至少清除程序的每个部分需要做的事情,并高级别地了解他们将如何做到这一点。
答案 6 :(得分:2)
与其他人一样,我的个人项目总是:
作为额外的动力,我尝试使用我以前从未使用过的技术。学习新东西通常会成为我最大的动力。
答案 7 :(得分:2)
简单 - 不要在你可能会失去兴趣的所有项目上开始。花更多的时间来确保你在开始任何工作之前想要自己的想法。
答案 8 :(得分:1)
这取决于项目 - 它有多大?
如果我正在编写下一个记事本克隆,我可能会深入研究,如果我想推出自己的操作系统,则需要进行更多的非编码工作。
我喜欢做很多图表,我用于大多数开发的工具是干净的A4纸和铅笔。绘制UI,工作流,基本类以及如何存储任何数据 - 然后编码只是一种计算机可读的方式来编写您已经绘制的内容。
来源控制le.g. SVN是几次击键/点击,所以开销很低而且收益很高,它可以很方便地尝试一些东西,只要它们不起作用就恢复到早期的状态。
然后只需制作最基本的原型 - 一旦实际发生了事情,就会更容易热情并添加更多。如果它是压倒性的我会发现我认为这个问题在我脑海中得到了解决,这就足够了。
答案 9 :(得分:0)
首先计划最终申请的基本概要。最重要的功能,基本的GUI,程序流程等。然后进行优化,以便您最初不会占用太多,删除不必要的功能,并在第一个版本中添加您想要的其他内容。然后使用该大纲启动任务列表,以创建应用程序的最小可能工作版本。然后,添加额外功能并使其完全正常运行会更容易。
答案 10 :(得分:0)
我喜欢马克西米利安的答案......为了扩展一点,我的人员项目的开发是为了解决我正在研究的问题。因此,当我厌倦了重复工作时,我将为解决方案制作原型。然后使用它。如果它与我之前的一个项目相似,我将尽可能多地借用代码并尝试提高我的工作水平,使其更专业。
Fusion使用Source Control也很重要。需要2分钟才能安装SVN。答案 11 :(得分:0)
如果您想将其转变为公共开源项目,Producing Open Source Software应该是一个很好的阅读(在线和印刷都可用)。
答案 12 :(得分:0)
如果您的个人项目与现有的开源项目类似,则应考虑为该项目做出贡献。一些小的贡献(错误修复等)是 比半成品项目更有价值。
答案 13 :(得分:0)
以上所有,但开始巩固计划......
寻找一些工具 SmartSheet - 即使您自己工作,也应该列出一些阶段和日期 yEd - 和来自www.yworks.com的图形