我是计算机工程专业的学生。我一直在思考如何处理一个大项目。以更有效,更有效的方式实现目标的第一步应该是什么?
当我提出一个项目时,我不知道该如何开始工作。很多时候,我只是忽略了它。但是,我不想再忽略我的项目构想了。
现在,我问大家,有人可以分享他/她的经历吗?当我拥有一个主意时,我应该如何开始一个项目?
我是计算机工程专业的学生。我一直在思考如何处理一个大项目。以更有效,更有效的方式实现目标的第一步应该是什么?
当我提出一个项目时,我不知道该如何开始工作。很多时候,我只是忽略了它。但是,我不想再忽略我的项目构想了。
现在,我问大家,有人可以分享他/她的经历吗?当我拥有一个主意时,我应该如何开始一个项目?
Answers:
暂时无需编写代码并建立开发环境。如果您要着手进行一个大型项目,那么您要做的第一件事就是掌握项目的目的和范围。
我建议打开一个文字处理器,并写出一个“项目目标”文档。描述想法的全部内容,以及您要编写的软件的一般用途。然后列出项目的功能目标。我并不是说要具体说明,而是要描述最终产品应支持的不同功能。因此,如果您正在编写软件来管理学校,则可以将“教师管理”列为一项功能,然后描述该功能将包括哪些内容(跟踪联系人信息,课程表等)。
然后是最困难的部分:这不是您需要立即做的事情,而是随着您的前进。与列出要添加的功能一样重要的每一件事都是查看目标文档中描述的功能,并记下那些无需在程序的第一个版本中即可使用的功能。这是管理范围的关键。
人们在大型项目中失败的主要原因之一是他们不知道何时停止进行该项目。他们不认为这是“完成”的事情,因为想法不断涌现,而且从未发布过。最终,他们失去了兴趣,您又有了另一半完成的杰作。因此,您想确保自己对功能的掌握是正确的,这对于实现目标的基本部分至关重要。那是您的第一个目标。
这就是我现在开始所有重要项目的方式。它有助于我保持专注,并有助于在开发过程中避免范围和目的的“演变”。
以更有效,更有效的方式实现目标的第一步应该是什么?
我假设您之前已经做过项目,并且您所在的大学/大学不教授版本/源代码控制。如果您想查看一些项目,可以随时访问开源存储库,例如Github(使用Git),Bitbucket(使用Mercurial),Google Code(使用Mercurial,Git和Subversion),CodePlex(Mercurial和Subversion / TFS), SourceForge(很多),等等,看看他们的代码库。他们的共同点是他们使用的是源代码控制软件。
关于如何使用它们有很多信息,因此,我建议您学习如何使用它们,因为这是标准的行业惯例。以下是一些视觉指导,可助您一臂之力:
您知道,当我想到一个项目时,我不知道该怎么办。很多时候,我无视它。
闲暇时,您只能做很多事情。从小开始:从头开始创建一个项目,并将其放入源代码存储库。每当您想向小型项目中添加内容时,就对源代码存储库进行更改。随着时间的流逝,它会变得很大,如果您想返回,则可以随时还原或回滚对版本控制系统所做的更改。
被“白纸”综合症击中是完全正常的。
您的脑子里有个很棒的项目,看起来很棒,但是当您坐在办公桌前尝试做某事时,您突然变得阻塞而无能为力。然后打开单人纸牌并创造新记录。
实际上,您需要开始做一些与项目相关的事情,以便您感觉它像是天生的。
您可能不希望立即编写代码。您可以从编写项目实际必须执行的操作或您希望执行的操作开始。拿笔和纸开始写作。您可以从细节开始,也可以从更大的角度出发。两者都尝试,看看什么是最好的。
您可以尝试定义项目的功能,不同部分以及这些部分之间的通信方式。我对发布便利贴感到满意,它们很有趣,您可以随着进度进行更改。让他们跟随您的思想和想法。
或者,您可以启动一些函数或类的原型。您可以使用自己喜欢的任何语言,甚至是不存在而您刚刚发明的语言。
一段时间后,您将有一些工作要做,并且您的项目不仅会在您的脑海中。您实际上做了些什么。
当您真正开始开发过程感到自在时,就该进行仔细的计划,记录,原型设计,收集所有必需的技术和软件,等等。
但是,直到您真正感觉到正确的时机,才开始!
您有一个很大的想法,但不知道如何完成任务。创建要执行的操作的大纲。写下您将要执行的步骤,所需的内容,使用的语言等。确保您已将所有内容整理妥当,否则该项目将成为一个沉船。
我之前提到过,但这确实很重要。如果有时间安排,则可以估算项目的完成日期以及该项目的任何步骤将花费多长时间。同样,这是组织,它将使您保持运行状态。
如果您要开始一个大型项目,则需要一些帮助。对于代码组织和良好的版本控制系统,Git很棒,因为它可以将所有代码保存在单个存储库中。有关Git的更多信息,请参阅我给您的链接。
您还需要确保您使用的语言可以帮助您完成尝试做的事情。在开始之前,请确保您能够创建项目。我并不是说不要学习任何新知识,而是要在开始之前学习。
大型项目通常不是一个人完成。在开始之前,请与同学,社区中可以编程的人以及您认为可以帮助您的其他任何人联系。不要害怕问。
不要闲逛,等别人开始您的项目,然后说“我有这个主意!”。它将永远困扰着你...
也许充满了陈词滥调,但是...我会提交。
为了能够处理一个大型项目,您主要需要做一件事:经验。经验为您提供所需的一切:
因此,您可以做两件事:
希望对您有所帮助。
对于工程师来说,刚进入并开始编写代码的一些想法已经成熟。这些项目可能很大,也可能很小,但是它们都有一个共同点:一个明确定义的问题要解决。我已经无数次地开始了这样的项目,而这只是我要围绕着预先编写好的文档并遵循有关源代码控制,通信和协作的最佳实践来建立学科的问题。
我所拥有的只是一个想法萌芽的大型项目,需要我做一些准备。我要做的第一件事是开始与他人谈论我的想法,以查看是否有人对我要解决的问题有我的理解,并验证我计划解决问题的方法。因此,带一两个朋友出去喝啤酒,或邀请他们到您的Cheetos宿舍。但是请乐于享受此过程,因为您可以通过此过程更好地了解您要解决的问题,找到在解决问题时可以带给您的其他好主意,练习将您的主意卖给他人,甚至可能开始构筑一个一群人来帮助您解决问题。
我认为这些答案中很多都没有涉及到的事情是要切实地完成工作,并迫使自己去完成它。
有时,您陷入“思维领域”,觉得剩下的只是乏味的打字工作,但实际上是从项目的一小部分开始,实现既有趣又充满挑战。
我认识很多这样的人,包括我在内,直到我真正出发之前,我什么都做不了,我不能-只是-想和计划开始一个项目。我必须选择一个我可以轻松实现的部分,然后逐步开始。
我会拿一叠黄色的便签纸和一个魔术笔,坐在一个有大白板的房间里,这样我就可以集思广益。
我只是开始写下想到的简单短语,例如“主菜单”,“报告”,“数据库”,“身份验证”等。我将其粘贴在白板上,然后凝视并获得更多想法,例如主菜单的外观:
将文件打开,文件保存,文件另存为,打印等,然后将其粘贴在主菜单下的白板上。
当想法浮现在脑海中时,请将它们写下来……好,坏,愚蠢的东西,只要让人信服。将它们粘在板上。当您查看董事会时,将会浮现出更多的想法并出现各种模式。在某个时候,您将开始对自己的开发计划有所了解。
黄色胶粘物很棒,它们可以很快移动。
一旦事情开始融合在一起,就可以将这些思想分成几组。然后,您可以在单个小组级别上集思广益。我会在各个阶段为白板拍照,以防您想知道二十分钟前情况如何,然后才改变。
最终,您将对必须完成的主要工作有一个很好的了解。您可以为每个这些块获得一个文件夹,并在它们出现时将它们不断地扔进去。
既然您是学生,我将假设您是指大学生而不是专业大学生。后者需要其他业务和协作注意事项。我上周刚开始一个新项目,所以这个过程让我记忆犹新。
我要做的第一件事是研究现有的解决方案和库。我不喜欢在任何可能的情况下重新发明轮子。这项研究也是为项目选择语言的重要因素。有些语言为某些任务提供了更好的现有代码。
接下来,我要做的是创建一个文件夹并将其置于源代码管理之下。这就像git init .
现在一样简单。
接下来,使“ hello world”工作。这使我知道我的开发环境已正确设置。
接下来,我将获得第三方图书馆的“ hello world”。这是显示我正确链接和正确使用该库所必需的最低要求。例如,对于数据库库,它正在连接并运行一个简单的查询。对于GUI工具包,它显示一个窗口。
接下来,我建立构建脚本和测试框架。这是ant或makefiles或其他任何东西,当您的项目仍然很小时,它更容易设置。
接下来,我创建数据结构。也称为“模型”层。这是存储程序需要记住的所有内容以完成其工作的部分。我在纸上做了很多设计,然后在其中添加了存根。设计的这一部分通常是最简单的。例如,一个国际象棋程序将需要一些对象来存储游戏网格,玩家,棋子,移动顺序等。
在这一点上,我为程序奠定了良好的基础,对于该特定项目,下一步通常是很明显的。然后,我每次只迈出一小步,而在整个过程中代码在某种程度上都可以正常工作。
如果您拥有的只是一个“大创意”,那么您将需要很多东西(在其他答案中对此有很好的描述),尤其是以下两项:时间和动力。
当您一个人从事个人项目时,最大的困难是,通常您每周没有太多时间花在项目上,因此您看不到太多进展并很快失去动力。
正如已经说过的那样,请采取一些小步骤,这就是关键。
但这还不是全部,您必须采取小而有益的步骤!也就是说,这些步骤将带给您最大的价值,并展示您的大创意的关键概念。
例如,如果您正在与新的超级待办事项列表软件进行工作,并且具有出色的用户交互性。在真正需要存储和数据库之前,请不要先进行介绍。从创新的用户界面开始:这既有趣又有价值。这会让您感到骄傲,保持动力并让您很快检查一下您的想法是否真的很不错。
代码工作量通常约为项目预算的20%(+ -10%)。专注于使代码正确是没有意义的,您有80%的工作尚未解决,因此获得完美的代码管理仍然只剩下20项工作。
如果您的项目没有用户怎么办?如果它是完美的,但是在“ Acme Patent Trolls”申请该想法的专利后一个星期发布,又证明是下一个Facebook,该怎么办?
查看以下标准项目生命周期问题:需求,设计,代码,测试,集成,部署,缺陷跟踪和纠正,需求变更管理(增强请求)。发布计划,资源分配(您计划一天多少小时,以及您实际上将在项目上进行多少小时),法律(Freedon操作)等。
如果以上所有步骤都正确,那么即使非常糟糕的代码也将成功。如果以上都不存在,则最佳代码将失败。
我不是一个赌徒,但我会花钱在上面,您的第一个“大项目”将以您无法想象的多种方式失败。别担心,继续前进,失败,向它学习,然后再做。不开始就是真正的犯罪。如果您确实第一次成功,那么您将在业务管理方面拥有扎实的职业,而不是编程。
因此,要回答您的问题,请收起软件工具,然后拔出您的“业务计划”工具。弄清楚为什么要这么做,因为世卫组织然后为什么以及何时需要。(您可以成为自己的客户,但还是要进行练习)。将其写在“业务计划”中,并以此为基础。
开始新项目时要做的事情清单: