If you want to add small functionality, like tab to admin panel, creating plugin is unprofitable, but there is an option. You can write it by using Roslyn.
To enable RoslynScripts, go to Grand.Web > App_Data > appsettings.json
Then find UseRoslynScripts and set it to true.
All Roslyn scripts have to be in Grand.Web > Roslyn
1. Example of adding admin tabs in Roslyn. As you can see it looks a little bit different than normal c# class. The easiest way is to write class in some plugin, because you can use intellisense.
2. ZipCode validation
3. Add token to message templates