Your Code Is Terrible
A boss developer works hard to improve his skills! Improving absolutely requires both humility and desire. If you want to be great, you must be extremely passionate and incredibly humble. There is no other way.
Make Your Interfaces Small
Well-designed interfaces are a delight to read, use, and implement. The really elegant ones stick in your brain and satisfy your artistic yearnings. They possess beauty similar to a math theorem or a law of physics. To be an effective software craftsman, you must be very good at designing interfaces.
Never Ever Return Null!
Have you ever asked an object or library for a resource and got a NullReferenceException when you went to use the resource? I have. Nothing breaks my trust as much as code that unexpectedly returns nothing. That sort of code forces developers to litter their code with nasty bits of defensive logic!
Implementing Serialization Using AOP
Well-designed objects do one thing, one thing well, and one thing only. They are not burdened by external concerns. They are not cluttered with things that should be the responsibility of another object. The domain objects in your application should be strictly concerned with the business problem. Unless you working for a technology solutions company, there should not be any code related to serialization, transfer protocols, user permissions, or database persistence in your application core. Keep your objects clean and tightly-designed!