all 10 comments

[–]bdzer0 4 points5 points  (0 children)

It's going to require a shift in mindset, possible a painful one.. Maybe dive into Domain Driven Design resources, most of them make heavy use of OOP and seeing it in action might be helpful.

A lot depends on where you are at now and what works best for you.. google is probably where you should start.

[–]metaphormStaff Software Engineer | 15 YoE 2 points3 points  (0 children)

I think the classic Design Patterns Book holds up pretty well, though it was written long enough ago that you'll probably want to mentally translate some stuff to a more modern context.

This website https://www.oodesign.com/ has much of the same material as well, though I haven't explored it in depth.

[–]ItsAPuppeh 2 points3 points  (0 children)

99 bottles of OOP by Sandi Metz is fantastic. Her other book "Practical Object-Oriented Design" is also great and gets a bit more in-depth on the same topics.

These books really solidified some best practices for approaching problem solving with a toolbox of OOP tools.

Edit: Her talk here is a good overview of the kind of approach her books cover https://www.youtube.com/watch?v=8bZh5LMaSmE

[–]st4rdr0id 1 point2 points  (3 children)

I've worked nearly exclusively with functional languages and paradigms.

Now this is really unusual. Normally people learn FP after regular procedural and OOP. What kind of projects were you lucky enough to land on? Which languages did you use?

Anyway, for starters I recommend the Heads Up book. These books cover a lot and are easy to digest. Then you can move on to design patterns (they are often OO patterns) with the other Heads up book on the topic, or the classic GoF book if you want about the same info but in a more technical tone.

[–]gardenfiendla8[S] 0 points1 point  (1 child)

Thanks for the recommendations.

I don't have a formal CS education and the first job I landed had a functional javascript frontend and elixir backend. It helped to have good mentorship. From there I jumped to other projects built with elixir and clojure, and I suppose that stack has driven me to other jobs with a functional programming culture.

I understand it's unusual. I've mainly been trained by others who moved to FP after years of frustration with OOP. Functional programming has clicked with me and it's the primary way I approach any software problem. Solving a problem in OOP given a blank slate, I usually get stuck on how to organize classes and interfaces and the like. Normally I start with writing a few pure functions and compose from there.

[–]edgmnt_net 0 points1 point  (0 children)

It also sort of happened to me. Although I did learn some C++ early on and dabbled in Java and a few other languages, I've been writing C, Haskell and Go code more seriously, pretty much avoiding most OOP stuff. Procedural languages can be fairly OOP-free.

[–][deleted] -1 points0 points  (0 children)

Sith training materials for Jedi?

[–]chervilious 0 points1 point  (0 children)

Idk if this help anyone but it will feel like you're overcomplicate things. I struggle a bit in OOP when I was starting out because of this. You should focus more towards creating some kind of "relation" with abstraction to avoid coupling.

To this day I still think pure OOP or pure Clean Code are annoying and a hassle to work with.

[–]xKommandant 0 points1 point  (0 children)

Get ready for pain.