In the early days of programming, pretty much everything seems like an uphill battle. It's all new, and nothing quite just comes to you. Sure, you can search Google and figure out what command you forgot, or what method name you couldn't remember, but that hurdle can subtly push new developers away from good habits.
While I've only been seriously pushing myself to do this for the past year, I think on of these pitfalls is not creating new classes when needed. A few things contribute to this hurdle:
Some of these may seem trivial, but each one makes it easier to just keep adding to existing files. Slowly this will lead to fat, oversized, incomprehensible classes. Just like this fat cat.
While adding functionality, we must be comfortable without the project adding, naming, and designing new classes for our existing objects to collaborate with. To work towards this we should: