During a decade of doing QA, I got decent at SQL and got my feet wet with C# by writing automated tests in the Selenium Webdriver framework. I then went to a Data Specialist role for a couple of years doing custom reporting in SQL Server and Hive. While in that role, I really learned C# by writing a winform reporting tool, but with no real concept of good design. I was able to then rebuild that app in MVC using the repository pattern. I've recently transitioned to a .NET dev role. I'm largely self-taught, but with a lot of opportunities to try and fail and try again until I figure it out, with lots of support from my friends and colleagues along the way. I'm very green. Although I manage to get things done, maybe I could learn a better way.