Hi everyone,<p>Currently I'm a University student in North America. I got into a conversation with a friend of mine, where he said that UML diagrams don't serve much purpose when you start working at a company. However I believe that there is a rational behind learning it otherwise we wouldn't.<p>So my question to HN......Do you use UML diagrams at work? And if so, which ones (Sequential, Use Case,Domain model....)?
I have seen class and sequence diagrams used on a few occasions. The others, never. My teams at Microsoft years ago were getting into statecharts (state machines made clearer with a few extra features, e.g., events which happen on any transition between groups of states) but not the UML notation for them that has apparently popped up. I have the impression these are more common in consulting shops which charge by the hour for reams of waterfall design docs which only roughly describe the actual software written as an afterthought. Even though the way we typically improvise software design is blatantly stupid, this stuff doesn't seem to be the solution.
I'm a unversity student in Europe, and most things we learn make exactly zero sense. I stopped assuming rationality when it comes to CS education a long time ago. Yesterday we had to implement adding two numbers over SOAP.<p>With that said, UML is not really used in small companies much, but when you feel a diagram would make it easier to understand a concept, chances are you're going to either draw UML or reinvent it poorly.
I work in industry and teach SE part-time at one of the world's top universities.<p>Yes, we teach UML because it is the most widely used modeling language. It features many profiles for specific domains and there is a range of tools to choose from.<p>Embedded systems, avionics, motor vehicle, telecommunications systems are heavily modeled using UML and related techniques. Industrial control systems less so, but there are areas where they are being used more and more. In the commercial applications space, there is much advances to be made.<p>The use of modeling is a core feature of most engineering disciplines but only recently becoming a part of software engineering methodologies. A crashed program is easier to recover from than a bridge that crashes into the water or a microwave tower that comes crashing down in the first big winds. So the demand for modeling is going to take a while to become a "must have" in SE.<p>So if you want to work at the next Facebook then UML is probably not going to be important. But if you want to work at Boeing then you'll be needing it.
I do not want to say that UML is totally useless, but honestly, I did not even meet one single programmer who were using it.
UML may be useful for things other than CS.
In normal practice uml diagrams are not created. To put it bluntly, in many environments it would be a waste. Many people in the business world equate software development to sending an email or using excel. How do you explain a complex system or process diagram to them? All they understand is that there was a meeting so the software should be done in a day or so.