I've been self-studying Java for a few weeks and thought I had a solid grasp on the basics, especially object-oriented programming (OOP). I understood classes, objects, the four main pillars, and how to use them. However, after watching a video titled 'Why OOP is Bad', I realized I might have just skimmed the surface. I got confused when they mentioned concepts like SOLID principles and the idea that 'messages can only send copies of state, not references, and objects are a state'. I'm looking for guidance on how to dive deeper into these topics. Is it necessary to understand all these nuances, or can I just learn as I go while working on projects? Any advice would be appreciated!
2 Answers
To really deepen your understanding, I'd suggest starting with some basic research. SOLID principles are essential design concepts in OOP that help you write better code. They include principles like single responsibility and open-closed, and while they are useful, don't feel like you have to stick to them religiously. OOP's notion of message passing is a bit outdated in many modern languages like Java. Understanding that objects are just bundles of data (mutable state) is key, but be aware of the bugs that can arise from too much mutable state. You might also want to explore functional programming as it can provide clearer insights into OOP.
Honestly, the concept of OOP can feel really vague since many people define it differently. It’s worth exploring some essential terms like inheritance, polymorphism, and design patterns. You'll probably discover a lot as you work on projects, but having a foundational knowledge will help you navigate the learning curve better. Don't stress too much; this is a journey, and even experienced developers often realize they've only scratched the surface!

Totally agree! It's a continuous process, and there's always more to learn. Just remember to take it one step at a time.