https://medium.com/blu-flame-technologies/the-difference-between-jr-mid-level-and-senior-software-developers-e8bf69ea5e3a