Software developers often are faced with a bewildering array of choices while developing software. Oftentimes frameworks, tools and technologies are mandated by client organizations to development teams. It is very possible that the team members are not exposed to at least one of the important technologies, tools or frameworks.
In the rush to shorten the learning curve and to get the development completed, very often basic development guidelines for successful development are ignored. Basic principles of object orientation and modularity of code are ignored and several transversal functions are unstated and are not met. This is discovered half way through the development and in order to accommodate various stated and unstated need, the development goals of code quality are almost never met.
While problems occurring due to limited time for development and developer skills deficits can never be completely done away with, the issues with lack of knowledge on specific tools and technologies can be met. This can be overcome by creating a template for significant parts of the code, say the primary types of components, thus ensuring the common concerns such as modularity, error handling, logging are met. This will also ensure that developers have a short learning cycle, so that they learn the exact few basics to get them started and provide for them to learn advanced learning techniques as they gain experience on the tool.
The key periods of intervention will be utilization of an architect level resources for 2-3 weeks to build the scaffolding, and then reviews and course correction before the first iteration.