Background
Start at November 2016, I was assigned to lead a team to build a brand new social media. The first thing to do was picking tech stacks. Honestly I am come as a PHP engineer. But I think I need another stack for this team.
I have two doubt to use PHP for the new system:
- there were a lot of PHP engineer on Indonesia and
- I don’t want wasting my time to test one by one PHP engineer applicant to get great PHP engineer.
And another criteria to see was automated test (unit test, integration test).
So I need to pick another stack for API and I will write my thoughts on this blog post.
Problem definition
What tech stack I should pick for viuGraph Core API that have mature automated test facility?
Stack Options
I have four tech stack popped in my mind and I will write my thought about them:
- Go
- NodeJS
- Python
- Ruby
Go
Go is impressive. It is a static typed programming languange, so we are confident there are no type mismatch at the runtime. I was also try to compile the some sample of Go code and it is awesome! The compile time was so fast… I have ever compiling Apache and MySQL source code that written on C/C++ at FreeBSD operating system. The compile task take so much time and I was bored. Compile time is not a boring task anymore at Go. Instant just like an Python and Ruby interpreter.
NodeJS
NodeJS is another awesome tools to write API. It is cool to write Javascript for front-end and back-end. There are Express and SailsJS framework on my mind. For automatic test, NodeJS have cool pair of Mocha and Chai.
Python
Python is a cool tool too. Django is a framework that come to my mind. It has cool admin page. I have try create some module, followins some tutorial. And it is a CMS in my mind.
Ruby
Ruby is awesome too. I think code written in Ruby is clean, awesome. Ruby on Rails is the first framework I want to try. I look at the documentation and the testing of Ruby on Rails app is deeply baked to the core. We can test the controller, model and the integration of them. For automatic test, Ruby have RSpec and MiniTest that shipped with Ruby on Rails 5.
Choosing a stack
- I really do not want to use PHP for the API stack, because it will be hard to select best engineer from a lots of applicant.
- There are many frameworks for Go, NodeJS, Python and Ruby. The most important criteria for me is maturity of testing framework.
- Go is a hot stack, but there is no mature framework massively used. NodeJS have cool pair of Mocha and Chai. And Ruby on Rails have automatic test that baked deeply to the core.
- Finally I am picking Ruby on Rails 5 that have automatic test deeply baked to the core.
Conclusion
I am picking Ruby on Rails 5 as platform for viuGraph Core API. The testing facility is awesome!