frameworks
Tags: framework, python, go, java
Published: 2020-06-10 12:09:28

---
title: frameworks
published: true
description: 
tags: framework, python, go, java
cover_image: https://motivationandchange.com/wp-content/uploads/2018/01/new_perspective_help.jpeg
---

It all started with the Django Web Framework, in the first week of my first job, I was introduced to it. I was supposed to be a "full stack developer" starting from level 0. Django showed me how templates can be used to render html and it also showed me how creating and authenticating users were just a few commands away. Django did it all and I just had to find out what I had to make it do. It was simple! Until we decided to build our own SSO service. 

Flask, the micro web framework, seemed like an ideal choice. Especially because we did not want to be told what to do all the time, we wanted to do some crazy work ourselves! So we wrote our own authentication service, used it in the new flask projects. Very simple to integrate. And then we decided to use the sso service in our django project. It was no small feat to take out the Django provided AuthMiddleware to replace it with our CustomMiddleware. I remember sweating bullets while debugging to see how my django app talked to my sso service to figure out where things were going wrong and I was finally able to put out the fire. We had been using django admin to manage users, and I had to completely remove that and get our sso in place. It was a crazy week but we did it!

Next, there was a small stint with node and express, but it was a small enough project that I did not have to dig deep into either. To me, it was just another framework that did not make my life too difficult.

And then, I joined a new organisation. I was introduced to Spring. Introduced is putting it mildly, I was dipped into it with no warning. I had to find a way to keep afloat while not knowing to swim in these waters! Ah, the struggle. Spring was opinionated, and I had to get to know its opinion fast! I spent a lot of time trying to understand it (I like to think I have succeeded a bit here!). The struggle was real. Beans everywhere! I am surprised it did not haunt my dreams. I finally experienced and understood different ways of autowiring, creating configurations, repositories, singleton beans and testing them all. Had a good rhythm going on actually.

And last week, I started on a project that primarily uses go. And for the first time in my career, we are not gonna be using a framework. Something to do with the philosophy of go. I guess in the end it boils down to `Keep it simple, silly!`. I must say things seem way more clear now, especially with how middlewares are called, wrapping up handlers sequentially and calling the top most handler to the inner most. Such clarity! It's a little scary as well. But like I said, philosophy! I used to think ignorance is bliss, until I had to customise things (that also included improve certain things)! Abstraction helps to some extend, but one thing I have learned it's gonna be beneficial to see what's under the hood. There are so many patterns being followed for various problems, it's quite interesting. And it's only by taking a look can you understand why something is used, and hopefully you might even be able to say what could be done better! 

I have just started my journey in a world without a official framework, I am excited to see what more I'll get to learn and do!