The question you ask is basically "how to get good at developing software?"
The key components are (a) exposure to a wide variety of circumstances that require new skills, and (b) appropriate feedback on performance.
Some practical ways to achieve this:
- Allow people to make mistakes and fail in a safe social environment. Even if you watch the intern as they are about to reboot the prod database, see what happens. I bet you they will learn something -- and so will you!
- Staff teams with a majority of experienced developers (at the very least 5 years, ideally 10 or 15).
- Have developers operate the software in production.
- Encourage a high bar in code review.
- Involve the same developers from start to finish (initial prototype, first production version, maintenance period, sunsetting) of a product.
- Embed useful metrics for availability, performance, resource usage, etc.
The key components are (a) exposure to a wide variety of circumstances that require new skills, and (b) appropriate feedback on performance.
Some practical ways to achieve this:
- Allow people to make mistakes and fail in a safe social environment. Even if you watch the intern as they are about to reboot the prod database, see what happens. I bet you they will learn something -- and so will you!
- Staff teams with a majority of experienced developers (at the very least 5 years, ideally 10 or 15).
- Have developers operate the software in production.
- Encourage a high bar in code review.
- Involve the same developers from start to finish (initial prototype, first production version, maintenance period, sunsetting) of a product.
- Embed useful metrics for availability, performance, resource usage, etc.