I have complex thoughts on the whole issue.
First of all: choice of technology is a decision and decisions must be respected. Developer playing subterfuge and just trying to torpedo or ignore decisions should be handled like people refusing to take instructions: let go. This counts doubly so for people that just joined.
The other side of the coin is that decisions should never be arbitrary. Make an effort of documenting how you came to this decision and what was considered. But also make clear that the decision is fundamental and the time for fundamental debate is over.
Finally, form expectations of project progress and don’t accept “but in C++, I would have” as an argument. Often, people hide their insecurities about the task at hand by blaming the tech. Most day-to-day programming is not held back by the choice of programming language. If there’s issues in implementation, either ask them about a direct analysis of issues with the current path and call them out if they diverge towards comparative analysis. So, try to steer the discussion from:
- “In C++, I would have just used Thingammabob and boost::MagicProblemSolver and be done with it”.
- “I’m rather new to Rust, I’m not quite sure how to solve that problem yet, because I don’t know how to implement Graphs properly in the language”
The latter gives you the ability to work with people along with it. You can encourage them to post the question here, get assistance from more experienced people and create more forward-thinking momentum.
Finally, many programmers have an odd sense pride. Make it clear that what you feel that they are hiding their unwillingness to learn a new programming language that you are giving them the opportunity to. Challenge them to it.
: I don’t say fired, as you could still try to find other jobs for them.