20 years of experiences in software development, some of the projects were succeedded, some of them are failed, but in each project, I learned more and more about good code, bad practices, what is possible, what should be impossible (but was possible, because of customers want it).