learn UML

  • DO NOT try to learn from the OMG specification.
    That document is for toolsmiths, i.e., people who are building tools (or for those who like arguing about UML).
    It is long, complex, and you will learn little about using UML.

- find an online course.
For example, Stanford has a free online UML course and so does tutorialspoint and others. This will provide you with guidance on how to learn and will help you understand.
all vendors have courses, be aware that tool-specific capabilities may make their way inside vendor tutorials as they are also trying to sell their wares - not necessarily a bad thing, just be aware.


Should I learn UML before learning programming?
all kinds of UML and ER diagrams in documentation using Rational/IBM as well as Dia and Visio.
For internal docs I using line-drawing tools to do boxes and arrows in IDEs/editors.

20 years ago it was critical that a programmer understood UML if he/she was working in C++. But it has tapered off in recent years because fewer and fewer programmers seemed to understand UML. I continue to use statechart, ER, and class diagrams, but not as often.
I’ve seen many programmers fresh out of school, with CS degrees, that have had very little exposure to UML. I find UML to be useful, but nowadays it’s becoming more like being fluent in a dead language. So it depends on your place of employment. Some places might use UML and others not so much.

If you do want to learn UML ==there is no reason to become an expert==.
A basic knowledge of the common diagram types is all that is necessary in most cases.
And definitely do NOT try to learn UML before you learn to program.

Architects would not be able to test their design by building a house - that’s infeasible. Though building software is different. You can validate your design by coding it. Most of the time a professional programmer can use their intuitions while implementing the system and can jump straight on coding without worrying about design documents.
However as a software developer I have found UML very useful while working on considerably complex system. I usually do not spend too much time after UML designs. Only limited required details are sufficient most of the time.

UML hleps you broaden your understanding at architectural level. It also helps you visulise design flaws in the system.
As a standard, UML is often used to share ideas and communicate your design within the team. So that team memebers can understand solution and contribute easily. Even nontechnial clients can understand architectural diagrams easily. In addition, having some basic documentation about the system always helps those who do not want to go through entire code to understand it.
UML may save your time while coding as you will be clear at requirements, solutions and needs at architectural level.