Write less code, ship more apps: How Vulcan.js makes me an efficient developer
Structuring applications in packages, when done correctly, has the tremendous benefit of allowing reusability across applications. See how Npm.js has allowed thousands of JavaScript developers to share libraries and saved zillions of hours of programming throughout the world. The famous Node.js framework, Meteor, provides a fully functional package system out-of-the-box, and yet I believe it is one of the most underused feature of the framework. Too few apps I encountered in the wild fully exploited the possibility of a package-based architecture. Most of the time, packages are limited to low level features, while in theory they also allow to split business logic (e.g separating your forum from your back office from your core application…). This makes sense, because thinking in packages is not easy at all. Beginners already have a lot of concepts to grasp, concerning Meteor but also web development in general. You can hardly split your app in reusable parts when writing it is already a lot of pressure. One possible workflow is to write your app as it comes, and progressively split the monolith. Still, that isn’t half as easy as it sounds. Parts of the app may depend on each other to work, potentially with circular dependencies, or from common features, etc. Another possibility is to write your app in packages from the beginning. This requires both a solid knowledge of the application domain and a solid experience in programming. Even very skilled developers can’t always get it correctly in the first row.