tags:

views:

139

answers:

5

I have seen UML mentioned several places in the last few years, but never had a compelling reason to use it at work so far. Is there any value in putting the time and effort to learn it? (I am a Ruby on Rails developer.)

Edit: I'm also looking for stories about how UML has made a difference in your projects to give me an idea of how I might use it.

+5  A: 

Yes. It is the international standard methodology for systems analysis and design. When moving from the initial analysis phase through the project life-cycle, the UML gives a good road-map on where to go and how you got there. A few benefits:

  • It shows requirements in a way that clients / customers / management can understand.
  • You can iterate the model and not lose track of where the model was before
  • Shows exactly how you got from point A to point B
  • It's a standard, so anyone who knows UML will be able to interpret your diagrams
  • The "quickest" way to share ideas without needing to go through the entire code-base
Kyle Rozendo
Do you think one can be a good developer without knowing UML? I've been coding for a few years, and trying to grow as a programmer, and trying to figure out how master programmers think. I never read any programmer say they use UML, but I do read a lot about it in project management context.
picardo
UML will broaden your understanding at an architectural level. If you identify the key components and their relationships before you start coding you will be able to design an efficient code.
Sagar V
@picardo - Yes, you can be a good developer. Knowing UML and being able to map code to it (and vice versa) enables you to learn toward architecture. I'm not saying that UML makes you an architect, but it makes you start to think like one.
Kyle Rozendo
+3  A: 

No, save your time and don't learn it. If you are a coder and work alone and are a very careful person, you can completely ignore UML.

But, if you work with other people and want to share the result of your work, UML is a Unified language, a lingua franca that even non technical customers understand (at a certain level).

vulkanino
Even an isolated coder should learn UML unless by alone you mean sitting in a room with no connection to the outer world :-)
Sagar V
+2  A: 

I think it's a question of scale in two dimensions: size of problem and size of team.

When a design gets to a certain size diagrams become useful in two ways: first, they help you reason about design issues. second they help you communciate the design to other poeople.

So if the team is say 20 or 30 it really does help to have some clear documentation of pieces of the overall design.

Personally I use UML maybe four or five times a year, but when I need it, I really need it. It really is better to ase a standard diagramming technique that devise your own. And with good tools it's pretty painless.

I would say that I use only a small subset of UML, class diagrams and occasional collaboration diagrams.

djna
+2  A: 

If you don't want to learn UML then just use the class diagram. It will displayed your code in an UML diagram and allows you to visualize your code. This higher level of abstraction will allow you to create new classes, add associations etc...and get immediately the code.

This is what I do with Omondo EclipseUML and it works really well. I have refused to go on advanced UML trainings but only use UML daily for documentation and code generation. I only spend 5 minutes per day modeling when I have time. This is possible because I code, then reverse the code, and code again and reverse it again, then model and get the code, then implement business methods, then reverse etc...I think that I have reversed my current project over 500 times and still modeling. Hope my comment will help to defend UML but I will certainly not defend Model driven development which is sometimes a waste of time.

I mean that I need to model and the to code at the same time. Saying that your code comes only from your model is stupid today. The most stupid is that once I have started to code it was impossible to go back to modeling. Thankfully to one of my working colleague which introcude me to UML I found EclipseUML and my life is easier today because I can code, model, go back to code, merge it etc..without ever losing my model or my code. Just magic :-)

+1  A: 

Yes and no.

Yes, learn the basics. Have a quick look at at the different diagram types etc. and have a general idea. That will help you eliminate your hesitance when someone boasts about UML.

No, if your work doesn't require to work with UML, you don't necessarily need to know UML to write good applications. If you need to discuss something on a white board just draw a few circles. That'll do.

It only helped me to produce documentation to management to impress them a little. Other than that I only find the deployment diagrams somewhat useful, that's all.

Maxwell Troy Milton King