Software engineering Lessons after watching Asian jiu jitsu championship
Tags: career
Published: 2023-08-04 14:33:57



I had a friend who was preparing for the jiu jitsu championship for Asia, he had hobbies with martial arts but never went to a championship nor he competed in the pro level before.
he decided to compete, put in work everyday focused purely on training, I remember once we gathered some friends and went to eat wings that gosh it is a bulk of unhealthy fats & stuff, he stayed with us watched us eat, he did not bother, he had taken the process as a lifestyle.

He knew that the tournaments present pros and he needs to find ways to win, and he was putting extra effort in mastering submission techniques.

Then after months of super dedication, came the fight day, all of his opponents looked more experienced and more tougher.
But each game in the middle of it he finds an opportunity to submit the hand, make an Kimura lock and the game is over.

Here is a shot of me and him after winning it all.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gve2az2j42wdyuzwwcfz.jpeg)

It is crazy inspiring!

I related a lot of things in the software engineering world.

Specially when it comes to preparation, when you start working planning your daily tasks effectively, knowing what to do and needs to be delegated and what needed to be learned, with the ability to take care of your body, sleeping and exercising, this will make you happier, healthier and more productive that the 14 hours working like a junky, or spending social media hours everyday.

Another smart thing I got inspired by from the fights, is that the great fighters have all 1 - 2 techniques that they are identified with. They adopt study them and perfect them.

A lot Engineers try to add a lot of tech into their resume that will not make them better engineers, like if you are a front end engineer why learning Graph Database?? are we went from learning for usefulness into learn to tweet and be cool?
or if you're Java engineer why learning printing in console using GoLang?!
Just stick to your tech master it, make it look better everyday, by focusing on the depth of what is in hand.

Try to be a better engineer using what you got, after two years in react world, try to learn lower level stuff of the same thing you will understand things better than your peers, if you are in the node.js world learning event loop would benefit you more than learning rails for example.

And when you start thinking in depth of the tech in hand and try to master it and take deep understanding, you would see that there is no ceiling to that, and learning becomes more practical. 
I once experienced that when learning [AST](https://en.wikipedia.org/wiki/Abstract_syntax_tree), this particular concept made me better engineer in the tech I used, simply by opening doors to me in learning EsLint, code standards and many things I can't remember. Learning the first http library will take you far, learning another one of the same won't help much, but learning relatable concepts would open the possibilities for you.

One topic that is related, I can recall other than technologies is software design patterns, you may go to [refactoring guru](https://refactoring.guru/design-patterns) and see that there are tens of template solutions of various problems, but if you had never had a problem that needs, you won't really understand the pattern that did not find the use case for.
Here are some examples came into my mind
If you work with web development you need to know [proxy pattern](https://refactoring.guru/design-patterns/proxy). Meanwhile in gaming you need [flyweight](https://refactoring.guru/design-patterns/flyweight), backend engineers may need to learn about [mediator](https://refactoring.guru/design-patterns/mediator), and last by not least compiler engineers must know [visitor](https://refactoring.guru/design-patterns/visitor).


I hope my article was not too boring!