I'm currently learning to be a developer. When it comes to problem solving, I find myself struggle a lot to understand the problem, it's requirements, how things connect with each other, etc...
Then I stumbled across Mosh Hamedani's design pattern course and found out about UML - The Unified Modelling language, and think to myself "I need this! This will help me become a better problem solver / developer."
I really hate the feeling of not knowing what the hell I'm doing. Even a simple example like making a counter app in React. Just keep watching tutorials over and over feels pointless when I lack the fundamental understanding for software development.
So with this post, I want to ask: Will UML help me:
With UML, can I:
If UML can do all of those, aside from Video Tutorials from Youtube, where can I find free resources to learn & master UML?
Thank you!
StackOverflow is not a platform to get advice on how to study software design, development, etc. afaik. With that said, I will try to answer your questions to my best ability. (and it will be opinion-based)
Will UML help me:
- Identify / Organize the requirements when building software?
UML is a language that helps you visualise the models you already have in order to better communicate those ideas with other developers. It will not help you much in creating those models themselves.
- Better Visualization / Understanding Algorithms & Data Structures?
Nope, you will have to study data structures and algorithms separately in order to understand them.
With UML, can I:
- Make diagrams to explain & understand how Algorithms work? (Recursive functions for example).
Algorithms particularly, no. As UML is Unified Modeling Language, it helps you describe models such as software design patterns (for example, class diagrams and methods in OOP). Algorithms are often described in pseudocodes instead.
- Make me knowing the entire structure of what I'm going to build, from simple to big complex systems?
If you understand UML fully, then it will help you look at existing UMLs and understand what's going on, how different components in the given system interact with each other, etc. but it won't ultimately help you to build one itself.
UML is only a small part of software design and its goal is to primarily effectively communicate ideas between people, as describing complex system via text is inefficient and difficult to understand. With consistent rules and symbols, we can talk to each other about how we design software and better identify what to improve, etc.
If you want to learn about data structures and algorithms, there should be courses about them. (I'm sure there are open university courses) If you want to learn about software design, learning about design patterns, requirements, etc. should help you much better and UML is a small part of it. No need to focus on UML itself.