Choosing a technology stack
I’m an old school software engineer that realizes that getting something as big as a social network off the ground is a monumental task. Using my typical approach to software development is not going to fly here. I don’t have the time to carefully plan out all aspects of the system and I have got to let my attention to detail loosen a bit. I have to come to grips with the fact that at this stage I just need to get a product out there, warts and all.
My background is as a Java developer but I have become disillusioned with using Java in the stack. It has become the opposite of what it was supposed to be. Java was initially great. A small JVM, didn’t need to manage memory, could run on multiple platforms. Then came all the frameworks, servlet containers, ORMs, Spring etc. etc. All promising to make it easier to develop products, but then those frameworks became huge and tangled messes ending up doing the opposite of their initial premise. Everything in Java just seems to get in the way of accomplishing the most simple of tasks.
So what to do?
At this stage I was sold. Not because it was so easy to do the stuff mentioned above but because I didn't need to learn anything else. I could use the same language for the back-end and for the UI. I could also eventually hire just the one type of developer, the same way Ryan Air hires only one type of technician because they only buy planes of the same type.
So Node.js it is. It makes a lot of sense. It’s not quite the “write once, run anywhere” mantra that Java initially promised but it is the “learn once, write anywhere” language.
Now that the server technology is decided, what to do for a data store? Let’s address that in the next article while I learn some more about this Node.js thing.