This might be better as a separate topic here on the forum, because training developers is a massive topic on its own and may not be the sort of pain point Michael had in mind for this topic. That said, whatever, this is all informal anyway.
From a manager’s perspective on training new developers, there is no way to get developers up to speed quickly and efficiently… or at least not that I’ve ever found.
You can do training classes, a week of dedicated drinking from a fire hose of information. That helps for sure, but the same people who have difficulty researching and discovering things on their own also seem to get significantly less out of this sort of training effort.
As a manger the main priority is making sure that the people you manage have the resources necessary to do their job. This starts with clear objectives and a definition of what their job is, which is the manager’s responsibility to define as part of the bigger picture that splits up roles and responsibilities across individuals or groups.
If you hire a developer that doesn’t know anything about Groovy, for example, plan for some time for them to learn Groovy and then support over time for Groovy related questions and issues. The same is true for Java, SQL, and of course Moqui Framework, Mantle UDM, Mantle USL, etc… each of these are large toolsets with considerable complexity and options.
If a developer isn’t doing research before starting to build something that is the first thing to ‘fix’ as a manager… the effective difference between a developer who doesn’t know a tool or business level artifact and one who does is in how much time it takes to do research before beginning development. I’ve been building this sort of software for 20 years, and personally dropped thousands of hours into building Moqui, but I still can’t do ANYTHING well without researching it first.
FWIW, there is nothing about this that is unique to Moqui. There are more and less effective ways to go about developing software, and managing software developers. There is nothing particularly complex or unique about Moqui compared to similar large scale transactional software. If a developer has never worked with large scale transactional software before it will be a challenge to get into and they will need a lot of training, time for research, and support.
If a developer has never built a web based UI in any tool, they will have a lot to learn about HTML, JS, and CSS before they can effectively work with any higher level tool. You can have a less experienced developer just learn the Moqui XML Screen elements, but do NOT expect them to be able to modify the framework or build framework extensions (like custom macros) to generate different output.
One management approach that helps developers learn a lot, and quickly, is reviews. If code/PR/etc reviews are just about formatting they are useless. The more helpful approach is to walk through the code line by line (or block by block) and what it does and why it was implemented that way, and alternative ways that it could be implemented. There is always the question of does the implementation match designs and/or meet requirements, but from a training and developer support perspective focusing on what is implemented and how it was implemented is more helpful.
If reviews are a standard part of your process, and reviews are collaborative (ie in a meeting versus async), they can be a very effective tool to not just improve code quality but also to support and train developers. Keep in mind that it takes years for a developer to become any sort of expert on complex software, there is simply too much information and too many variations depending on real world tasks to even anticipate everything a developer needs to know, let alone try to cram that into their head (using whatever means and with whatever capacity an individual has to absorb and organize information in their head).
In general software, or any tool, is only useful to the extent that the user understands it and understands the problems that it solves. For example, if a developer knows nothing about transaction management but they have a task that involves managing transactions, then the tools only matter so much because they have a knowledge gap on the general computing principles… not to mention the nature of the lower level tools in Java JTA, databases, etc.
New developers, and sometimes even experienced developers, often have trouble getting started… knowing what needs to be done technically. This is sort of the opposite of the review recommendation but looks similar, they need someone to review requirements and designs with them and chat about a general approach. Sometimes two peer developers can handle these discussions just fine, even if neither knows exactly how to go about it, and the results will at least be adequate. In that case there will often be far easier ways to go about it, and that are easier to maintain and support over time, but at least they can build something that works and can be improved over time.
Training is not something that can be done in a week or a month, maybe some initial training can be like that but for complex topics people need time and exposure to a wide variety of tasks over time. This means that the more important aspect of training doesn’t look like training at all, it is a management responsibility to setup processes and roles/responsibilities for continuous improvement, and ongoing research and knowledge sharing.