The article represents different topics on which training could be given to the rookie developers to orient them appropriately and help them become highly effective developers by writing code of great quality, doing good communication, helping fellow developers etc. If you are one who is involved in planning training programs or you are one of the rookie developers, you may want to check out following topics and do the needful. Please feel free to share your thoughts/suggestions for any other topics that could be useful.
Following is a list of 10 training topics that could be covered in 25-30 hours, and that could help developers imbibe some of the characteristics of a highly effective developer. The list could also consist of other topics such as design patterns, or business relevance of software development.
Software Quality/Code Quality (2-3 hours)
What is Software Quality? How is it related with Code Quality? One may gather information on ISO 25000/25010 (SQUARE) recommendations of 8 software quality characteristics and present them in relation with code quality. The session should also speak about what could be called as good code.
Object-Oriented/Functional Programming Principles (4-5 hours)
In case of object-oriented programming, one could present various different principles such as SOLID, DRY, YAGNI etc while training on OOPs. Additionally, one would want to focus on Single Responsibility Principle and show some code samples around classes, interfaces and methods. Alternatively, one may want to take sessions on what is meaning of functional programming and what does it take to write code following that paradigm. It would be good to present difference between functional programming and object-oriented programming while taking training on functional programming.
Bad Coding (2-3 hours)
One may want to take a session on most commonly found code smells such that developers get aware of what can be termed as “bad code”. These code smells should be related with code refactoring patterns in the appropriate sessions. One may want to check recommendations by Martin Fowler in this regard.
Code Refactoring (2-3 hours)
The code refactoring sessions should focus on explaining top 10 code refactoring patterns that developers would want to pay attention to, in order to avoid writing bad code or transform bad code to good code. The developers should be shown the code samples in relation with code smells and the resulting re-factored code. One may want to check recommendations by Martin Fowler in this regard.
Unit Testing (2-3 hours)
One may want to take training on two different aspects of unit testing. One session could consist of explaining unit testing fundamentals and unit testing naming techniques. Other session could show some code samples, and emphasize on concepts such as Mocking. The second session may be more focused on specific XUnit (such as JUnit, MSUnit, NUnit etc) frameworks and should cover details around that.
Code Review Tips & Techniques (1-2 hour)
Another session could be based on tips and techniques that one may adopt to do code review. The session may emphasize on code smells that one may watch out for. The session may also provide information static code analysis tools available with different technologies/IDEs and help developers to get set with these tools.
Software Quality Metrics (2-3 hour)
One may provide information on different code quality metrics such as code complexity (cyclomatic complexity), duplication, unit testing coverage and how do they relate with software code quality characteristics.
Build & Deployment (3-4 hours)
It would also be good to take sessions on build and deployment where the emphasis could be made on different build tools, deployment methods, continuous integration related tools etc.
Root Cause Analysis (2-3 hour)
The session on root-cause analysis is equally very important as developers tend to take short-cuts many a time and customers have been found to be complaining about that. In this session, the focus should be to talk about the notion of short-term/temporary solution (problem may occur again in future) and, the permanent solution (fix the root-cause forever).
Oral/Written Communication (2-3 hours)
Last, but not the least, developers should also be given some training on how to communicate in form of oral and written communication. Mostly, I have found in my experience, that developers have no idea on how to write emails that could be understood by customers or others in an easy & fast manner. One could emphasize on different reading techniques such as F-pattern and help developers write the email which is easy to read.