Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

How useful is UML if you are a developer working alone in a project?

share|improve this question

closed as primarily opinion-based by gnat, MichaelT, GlenH7, Bart van Ingen Schenau, Dan Pichelman Apr 22 at 14:05

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.If this question can be reworded to fit the rules in the help center, please edit the question.

10 Answers 10

up vote 15 down vote accepted

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...

share|improve this answer

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?

  1. 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.
  2. 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.
  3. 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.
  4. 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.

share|improve this answer
2  
I would say the Future You!! Just ask yourself, how many times have you seen your own undocumented code that you cannot take a grasp of easily? If your answer is never, you don't need UML or any other form of design or documentation. –  decyclone Apr 4 '11 at 16:18

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).

share|improve this answer
1  
You should always want to communicate with future-you. –  jv42 Apr 4 '11 at 19:50

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.

share|improve this answer

I do a lot of work alone (I freelance) and I tend not to use UML. Usually an ERD and some notes in an organization tool (I used onenote). I've never felt the lack. But I see how it comes in handy in larger environments with lots of people working on the same project.

share|improve this answer

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.

share|improve this answer

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.

share|improve this answer

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.

share|improve this answer

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.

share|improve this answer

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.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.