November 9, 2020

My Technological Struggle

I started developing Startyk using Go, and found myself having to implement a lot of different elements, such as writing to a database, or choosing how to do templating. While there is power in creating your own version of those features, that is not something you want to reinvent if your goal is to develop a project fast

For this reason, I tried to quickly implement the same functionalities using Rails. Obviously, I implemented a completely different part out of the box so that I could not compare the two… This framework is supposed to solve this issue, and give you just the tools you need to go fast.

The first struggle I have is that Rails is large. Very large. There are a lot of moving parts, of elements you have to understand before you can really be proficient with it. On top of that, since Rails is “Convention over configuration”, there is a lot of magic that I don’t understand yet, which creates overwhelm when trying to learn it. I have not encountered this feeling as much with Go, and this pushes me back towards my first implementation. However, it may just come to a difference of experience level. I will keep pushing with Rails until I can be confident I can compare the technologies without a bias due to my lack of knowledge.

Since I am an SRE by day, I will be using more and more Go at work, gaining experience much faster. With that come the benefits of Go, like speed, static typing, explicitely defined interfaces and ease of deployment.

The Go ecosystem for web development is less established, compared to the Rails one, where a lot of issues have already been solved. As I mentioned in my introduction, a lot of elements are left to the developer to create, and while there are frameworks that introduce some of those tools (see Buffalo), there is no clear “winner” in terms of web framework in Go. Good thing for experience developers, less good for beginners or people who want to build fast.

Finally, since I have started learning a bit of Rust, I am aware that there are a lot of missing pieces in Go, and I don’t like it. I feel like this is jumping through a lot of hoops to get to the same place compared to Rails, to only get a little bit more performance and some side-features.

With all those reasons, I am choosing to keep pushing with Rails, and get this project deployed before even thinking about making any extra technological change.

Copyright Marin Gilles 2019-2021