One man NodeJs team
Rewq.co is built on top of NodeJs.
I am speaking from my experiences.
NodeJs is the only server side programming language I know. I picked it up, because I first learnt Javascript on the frontend and wanted to get into server programming with least effort.
The Winning arguments
Easy context switching between frontend and backend — NodeJS saves me the mental effort.
NodeJS is a great language for small teams. I have to context switch a lot between frontend and backend.
JSONs everywhere reduces the number of data conversions we have to make.
Atleast your MVP can be faster and more robust.
It will scale well — both in terms of size of code and execution performance. Here are two architectures I use to manage the project complexity.
- Plugins based architecture — less common, more useful for microservices, socket.io driven code, etc
- MVC based architecture — more useful for usual http applications.
Things that bother me
- You need to be careful to not make typo mistakes.
You will not know of a typo mistake until you hit them at runtime. So,
It helps to use Grunt . Grunt has JSHint inside . Add the JSHint clause ‘use strict’ on top of your js files.
Focus while you code.
Have a strong review process.
Things that don’t bother me
- Objects are not the prettiest. But you can get used to them.
- You cannot think object oriented.
If you really have to write some complex object oriented code, you can probably do that part in a separate micro-service (use pub-sub) and in a different language. You anyway might need a specialist to maintain that piece of code later — example video processing, image recognition, etc.
Note: In NodeJs world, when I need to know if the object is of a type of person, a manager and a woman; I create an array of tags or just use booleans. One can also explore using use a specialized database — such as a graph database.
- Asynchronous programming — actually I feel relieved that my code is not suboptimal.
Overall, NodeJS works quite well for me and for rewq.co .
Have a freelance gig ? Reach me at flipflopapps@gmail.com . I be happy to help :-)