I know the purpose of it and everything. I see myself as a solo developer for a couple more years.
I always see answers that it is contract. Yes I get it.
But here's something on my mind:
If a class did not provide what an Interface wants, it'll throw an error.
Well, if a class really needs that method, it'll throw an error still if there's something that calls it and it's not there right?
What's the difference?
I can just actually implement it and go along with the "norms" but that will leave me hanging with the question "why". I don't like blindly following something without understanding it.
I tried searching for answers about this question many times before and what I always find is something like "So when someone else...". Haven't tried working with someone else before and I am not sure if that really is the reason on why use an Interface.
I mean, because I do everything my own so I do know what something in my code needs right? And again, even if I forget to implement a method, I will still see an error that says a method is not defined.
The Dependency Injection is a very good answer. Implementing Interfaces on those helps in case you need to swap out dependency implementations. You are somehow confident that what you need is provided.
It is a little more clear to me now that it is a Contract between components (maybe between developers too)