Node.js doesn't have the same problems as the platforms that you're used to—it has entirely new problems!
The landscape is so different, and there are so many libraries, packages, and approaches that it is tough to navigate. There are just too many opinions on the "best approach." Even the io.js fork of Node (which we're excited about and hope gets upstreamed to Node soon) is a good example of this unique ecosystem.
Ask 12 Node.js developers which is the best ORM to use, or how structure your HTTP handlers, and you'll get 15 answers. On these and hundreds of other topics, there is no consensus, and there are numerous approaches and philosophies to choose from. Many a developer has followed their instincts and gut feelings, only to make a mess.
This might be the complete opposite problem that you're used to. Maybe you came from Django, like &yet did, and were looking for something less focused on content-driven applications and sites. Maybe you came from Rails, like many of us, and were frustrated by the amount of convention, being railroaded down a single path. Maybe you're making a transition from Java or PHP.
Whatever background you and your team are coming from, it's almost certain the "best practices" landscape is much simpler than Node's.
Rather than subscribing to an opinionated set of "best practices," find some good practices, and understand where and how to apply them. There is no one-size-fits-all solution in Node.js because the problems we aim to solve are subtle and varied. We want flexibility. In order to find the best practices for your problem space, you need understanding.
The great part is: you probably already have a pretty good understanding of your problem. One way of thinking about programming is: understanding a problem so completely that you can express it in software. The gap in your understanding then, is in where and how to apply the varied good practices.
Here at the &yet, we've gone through the expatriate pain that a lot of people are currently in.
We've been shipping large-scale Node.js applications since 2010, but originally, &yet wrote Django applications. We enjoyed Django, but for the types of applications we were writing, we found it too focused on needs that were merely tangentially related to the problems we were trying to solve. We experimented with early builds of Node.js and soon found ourselves preferring the freedom to find our own best practices.
We'd like to help you find that freedom (and power) too, by giving you confidence through knowledge and understanding.
But the nature of Node makes doing this very difficult and time consuming.
We hear it often: "Can't someone just tell me the way to do this?" We find the lack of One True Way™ to be one of Node's greatest strengths, but this is undoubtedly frustrating.
People turn information into knowledge and understanding. In a complex landscape, there is simply no substitution for experience.
When it comes to Node, there are very few teams who have &yet's depth of experience.
We’ve been heavy users of Node.js since its earliest days and it has remained our go-to tool for building a broad range of applications since then. During that time we’ve helped enterprises such as AT&T, Netflix, CAA (the world’s largest talent agency), Walmart, Major League Soccer, Pacific Northwest National Labs, and many others.
A few more fun facts:
- Our security team, ^Lift, created the Node Security Project to audit security of npm modules, provide advisories of known vulnerabilities, and provide easy access to the data back to the community.
- Our team has several core contributors to Hapi.js, the most battle-tested node.js HTTP framework, easily handling web traffic for Walmart during their busiest shopping times of the year for two years in a row.
- Our developers have contributed hundreds of open source packages to npm repository.
We are enterprise-grade node.js veterans:
- Our security team is trusted by GitHub, npm inc., AT&T, Digital Ocean and many more.
- We use proven node.js powered architectures
- We have an experienced node.js operations and deployment team
- We were using CommonJS modules and npm for client-side code before this approach was made popular by Browserify (which we love!)
We can help you build a road map for succeeding with Node—from wherever you're at to wherever you're going.
Let's get together and explore your pain points, the problem space of your software, and what Node approaches make for a good fit there.
- We'll help you with your architecture by creating data-workflows, API documents, database structures, code skeletons and examples, demo applications, and document a clear path to where you're going.
- We can do code reviews for what you have now, which not only tells you where to improve, but how to get there.
- We offer training for your developers, and can lend you our time to help you get your work done.
- We can even help you to plan for your scaling needs and provide advice and tools for deployment and operations.
- And as you build, we can provide on-call support for your developers.
Our team of veteran Node developers can help you fill in your gaps with the knowledge of good practices and the understanding (the why's and whens) to choose your own best practices. Ultimately, we'll enable you to succeed, and give you the confidence to keep succeeding. We can help you get to your destination by the route that serves you best. If you need it, we can even provide some extra hands.
Ready to talk? We'd love to chat about how we can help you use Node to get where you're going with confidence. Let's talk!