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?

Javascript is a simple language that most developers have familiarity with. Certainly I’ve done a lot of UI work with Javascript, so that seems like a good place to start. So I downloaded Node.js and did a basic web server that served up the infamous “Hello World” page. It took me all of 10 minutes including the download. I said to myself “I must be doing something wrong, can’t be that easy!” I decided to try something a bit more complicated. Let me try and interact with a SQL database. I used NPM (Node Package Manager) to install the Knex.js library. Now 10 minutes later I had the “Hello World” page with some database records all displaying.

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.

Show your support

Clapping shows how much you appreciated Brian OConnor’s story.