How do you teach the stuff good programming is made of?

In my company, we always turn on and off shore contractors. It is difficult to maintain such a codebase, since the level of maturity when writing code varies greatly. To a certain extent, my role is to mentor development resources. I found that if I just let them code, I will get something very naive. What is the best way to teach people who are already developers how and when to use interfaces, abstractions, wraps, design patterns, reflection, etc.

+7
language-agnostic
source share
6 answers

Your question is more than programming and IT, of course - it really falls into the heart of teaching theory - how best to transfer knowledge from one person to another.

We know some basics - the attitude of young students to the teacher, etc. And you cannot do work for the student if you want them to master something.

So what can we take away from this? Make sure you have consistent standards for where you want your “students” to get there. Make sure you have quality materials from which they can learn. You must have a methodology for this, otherwise you will find that you spend a lot of money on your precious time. Mentoring is vital, but again, your student will need to be able to learn on their own after being directed in the right direction.

So, how do you teach import programming concepts that go beyond syntax?

Personally, I like mentoring and providing good examples that a junior developer can study to find out all the ins and outs for themselves.

And do not forget that they need a place to make mistakes, but these errors must be caught and corrected.

+4
source share

Steam programming is great for this, as it looks like a continuous code review. Junior learns SOOOOO from a senior about design: "interfaces, abstraction, wrapping, design patterns, reflection, etc."

+3
source share

Your answer is in your question. The only way I found this is to instruct the young developers, one at a time. This means that the ability of the developer to be complex in the design and spend time guiding them in the right direction.

Edit: Looking back at your question, I think maybe my answer is not so good. If they are not long-term (and probably not offshore), I do not think that you will have many successful mentors. You will receive what you receive. Keep this in mind when you hire.

+1
source share

Do everything from service. Just by finding out how painful the poor code service is, you can learn not only how to write good code, but also have an incentive to actually do it.

+1
source share

I would suggest making sure that code reviews are somehow included in your development process. Not a confrontational view (two or more reviewers get together with the encoder in the meeting room, as a result of tearing it to shreds), but more than one on one, walking along what was written. From what you described, it sounds like your developers are geographically distant, making it difficult to efficiently analyze the code. However, perseverance would be helpful. A real-time voice conversation, with the code in front of both of you, would be better if you cannot get together in person.

As long as you enter such reviews to help your developers improve, you will both win.

+1
source share

"Training" may not be suitable for what you need. You want them to use knowledge and do better and constantly do it, this is a slightly different way to look at things. What is the reputation of the developers? What benefits do they get if they use interfaces, abstractions, wraps, design patterns, reflection, etc. So how do you want? What benefits would they like to receive? What are the questions that come to mind, and sometimes, if you can find something that motivates someone, that is the key, and not just assume that the problem is in the “Methodology”. For more information, see this article on the Insight Sources page, which is a great blog about models and practices, IMO.

+1
source share

All Articles