I have moved to a new job and code base (been doing C#, .NET, Windows Forms, etc. for last four years) and I have been on this for three months until today. During these three months I caught up with parts of the language and syntax that I didn't know before (MVVM, Silverlight, some advanced stuff in .NET like Action, Func, Callbacks, etc.), so now I know those but still when I go in the code to fix a bug and see their code, I get disappointed, because I see some coding techniques that although I know the syntax and understand it but I think to myself "could I write this myself"?
The answer is no. For example they create classes that have a member as "Action" and at run-time they assign actions to separate instances, or register - unregister events at some parts of the code, etc.
Is it normal? and gets better by time? or I am just a stupid mediocre developer? and how can I make it better?