How useful is UML if you are a developer working alone in a project?
It can be very useful if the project is large enough that you have trouble keeping everything straight in your head. Getting something out onto paper/diagrams can also help the design and problem-solving process, at least for me.
...I also admit that for personal projects my diagrams aren't as formal as they would be for at-work projects, they're just good for me to work with them...
It is very useful and valuable.
As others have said it is best for communication and at a cursory glance you could say "only 1 developer so... no communication needed" but I don't think that's true.
So who is the UML and the communication for?
- You! - Yes you. When you go away from the project for a while and then come back it will be there to help you remember the workings of the project.
- New developers - While you may be the sole developer now, that's not to say in the future someone else won't be working your project or even that it may expand to have more than 1 developer.
- Business Associates - If you are to present anything to a boss or a manager or a prospective partner for your project then a UML of the project can help you in a presentation or even just casual conversation.
- Documentation - Whether you or someone else is doing the end user documentation having a UML of a project can be a great launching platform. Much better than trying to remember everything on the fly as you write it or dictate what you can recall to someone else.
In addition they are also useful for practice when you get into a situation where they are mandatory.
In short, probably not very much.
UML's biggest value is in communication, so it has little to offer for a one-person team. Although I would still use it for rough design sketches etc. Visualization may greatly help in grasping complicated problems.
One possible important use though is to document the design for your successor(s) - you will hardly be the only one ever to work on that project (any project).
The answer, of course, depends on the size and complexity of the project, how far you intend to take the modeling, and whether you're required to deliver a formal design document.
I've tried using it for small personal projects, and it wound up not being terribly useful. The odd class or sequence diagram can help organize your thoughts, but after a point it gets to be more work than it's worth.
It can be useful because when you are trying to document your design and architecture decisions in UML it makes you think deeper about the application and sometimes discover new things and make better ideas. But I agree with others that if it's small project you may not benefit much from it when you are working alone.
Marginal I'd think... UML is intended to communicate ideas of the design. If you actually think in UML and can produce it as fast as other ways of mapping out that design, sure go ahead and use it. Otherwise you're probably better roughing out something that looks like rough sketches and perhaps a bit of UML "Lite" as your project needs it.
Sure rough out a few use cases if feel a particular area needs them. etc.
Whichever way you go, you are going to need something to refer back to in 12 months when it's time to think about v2.
I've used a very minimal implementation (stick figures, connected boxes, and some labeling) on some projects. I thought it was easier to represent a particular process than trying to describe in written form. Some purist is probably going to say that it's really not UML, but the clients don't care, so I don't either.
Having a graphical representation of an architecture can help, if the architecture is too big to simply keep in mind (which is something you have to determine for yourself).
You don't need something as formal as UML, if you're doing this only for yourself.
The objective is to visualize an architecture so that you can handle it. Use whatever works, while being as unobstructive as possible.
Is a good practice to keep a good documentation of a project but for one person this could be not very easy to do and very time consuming, my position here is that you certainly need to do some UML and if your program is very complicated or you are going to release your code you need to do so. if your project is complex and large you might think in do a documentation good enough so if you pass a period of time away form it you can retake it easily.