Ashwin Rao wrote:From what I can see modeling software using UML leads to better quality code.
I have been programming for a long time, starting a number of years before UML was even created. I even have an
IBM certification that included UML but that's about as much as I've ever had to deal with UML. In fact, we used to have a fairly active forum here for discussions about that particular certification. As far as I can see, that and the certification has pretty much petered out.
UML is a notation and a UML diagram is a picture on which conversations can be anchored. However, without those conversations, you get about as much use from a UML diagram as you would get fun out of a picture of people at a party. Unless you were actually at the party, you don't really get much from the picture. Likewise, unless you know intimate details of the conversation that went into creating the UML diagram, you really only get a vague idea of the thought process that went into creating it.
Now, you can certainly use UML to draw out your ideas and carry on a conversation with yourself; that might still be useful if you have the ability to weigh different options and argue for and against yourself. There are people who are good at doing that. Honestly, I can't even remember the last time I used UML for work. Nowadays, I just use informal block diagrams and very rarely, a small subset of
Agile Modeling notations, when I have to draw out a rough picture of a design when I'm having discussions with my team members.
I think it's better to focus on learning about
design principles like SOLID, DRY, and SLAP and the
Gang of Four Design Patterns. Knowing and applying these principles and
patterns will help you create better designs much more than simply knowing and using UML.