While all the previous answers are correct in that you certainly can use agile techniques while being a one-man team (within reason, as Oded pointed out there is little value in having standups or retrospectives by yourself), I would question the value of each practice that you adopt.
Is there a point in having a build, perhaps, what about continuous integration - a waste of time, you have bigger fish to fry.
Releasing often is probably a good idea.
Do you need a backlog, it all depends on who defines your requirements and how big the piece of software you're building is in the first place.
Do you need iterations - even people in the agile community have started to question their value.
Is this piece of software always going to be maintained by you, or will you hand it over? If you're gonna hand it over a good test suite is the courteous thing to do, but if it will always be you, don't bother with anything massive only test the bits you're unsure about. I certainly wouldn't bother with TDD, there is no-one around to be impressed with how test-first you are and unless you're an expert it will slow you down.
End of the day, when it comes to developing software by yourself, I think you need to keep an eye firmly on the prize, which is to deliver a working system in a reasonable amount of time. As long as you keep that in mind it doesn't matter what process you end up using, there is no-one there to be tripped up by weird practices except yourself.
Most Agile methodologies center around feedback loops. The more often you loop back in to inspect and adapt what you're doing the more Agile you're being.
Build often: Every commit if you can, write automated tests to run upon build too, the sooner you know that something is broke the better.
Use short iterations: The point isn't to have working software at the end of the iteration (you'll be trying to not to break it period). The point behind an iteration is to inspect and adapt. Commit yourself to something (bug fix, new feature, etc), implement it and then look back at what you did right, what you did wrong and change something with the intention to improve.
Keep the backlog fresh: Nothing is worse than a stale backlog, keep it up to date with new feedback and ideas if you can. Leave the individual backlog items big until you're ready to commit to them in an iteration then break them down into chunks. Those chunks should be small enough for you to see daily progress being made in the iteration.
Keep it simple. Being Agile with one person is really simple but it's easy to get caught up in solution that are designed for larger teams. Estimating might be considered overhead, just commit to what you think you can get done in a reasonable amount of time.
Agile means excellent responsiveness & adaptation to change, here I see the "change" as a change from the usual way software is developed - you alone instead of a team. Why don't you respond to it by using the G-71 Software Methodology, that way you follow the Agile Software methodology :)
发布评论
评论(5)
虽然前面所有的答案都是正确的,因为你当然可以在一个人的团队中使用敏捷技术(在合理范围内,正如 Oded 指出的那样,自己进行站立或回顾没有什么价值),但我会质疑每种方法的价值实践你所采用的。
这个软件是一直由你维护,还是交给你?如果你要交给它一个好的测试套件是有礼貌的事情,但如果它永远是你,那就不要费心做任何大规模的事情,只测试你不确定的部分。我当然不会为 TDD 烦恼,周围没有人会对你的测试第一印象深刻,除非你是专家,否则它会减慢你的速度。
总而言之,当谈到自己开发软件时,我认为您需要密切关注奖励,即在合理的时间内交付一个可运行的系统。只要您牢记这一点,无论您最终使用什么流程都没有关系,除了您自己之外,没有人会被奇怪的做法绊倒。
While all the previous answers are correct in that you certainly can use agile techniques while being a one-man team (within reason, as Oded pointed out there is little value in having standups or retrospectives by yourself), I would question the value of each practice that you adopt.
Is this piece of software always going to be maintained by you, or will you hand it over? If you're gonna hand it over a good test suite is the courteous thing to do, but if it will always be you, don't bother with anything massive only test the bits you're unsure about. I certainly wouldn't bother with TDD, there is no-one around to be impressed with how test-first you are and unless you're an expert it will slow you down.
End of the day, when it comes to developing software by yourself, I think you need to keep an eye firmly on the prize, which is to deliver a working system in a reasonable amount of time. As long as you keep that in mind it doesn't matter what process you end up using, there is no-one there to be tripped up by weird practices except yourself.
是的,你可以。
制定任务,分解它们,评估它们,确定它们的优先级,并在短时间内完成它们。
如果您愿意,您也可以与自己进行站立会议;)
Yes, you can.
Have tasks, break them down, estimate them and prioritize them and work on them in short iterations.
You can also have a stand ups with yourself if you choose to ;)
是的,你可以!
Yes you can!
大多数敏捷方法都以反馈循环为中心。你越频繁地返回来检查和调整你正在做的事情,你就越敏捷。
Most Agile methodologies center around feedback loops. The more often you loop back in to inspect and adapt what you're doing the more Agile you're being.
敏捷意味着出色的响应能力和敏捷性适应变化,在这里我将“变化”视为对通常的软件开发方式的改变——你一个人而不是一个团队。您为什么不使用 G-71 软件方法论来响应它,这样您就可以遵循敏捷软件方法论:)
Agile means excellent responsiveness & adaptation to change, here I see the "change" as a change from the usual way software is developed - you alone instead of a team. Why don't you respond to it by using the G-71 Software Methodology, that way you follow the Agile Software methodology :)