Custom development for Drupal is not for the faint of heart. If you are a developer with little concern for maintainability, reusability, readability, or extensibility, then you may not struggle - there are many, many ways to approach any particular problem. However, if you're like me and have to carefully consider these core concepts before you proceed, then creating Drupal modules to solve a particular business problem requires a lot information at hand. Personally, I think the design patterns used in Drupal are conceptually approachable for even a fresh Computer Science graduate.