How can I motivate the teaching assistants to grade more strictly?
You have a bigger problem than encouraging stricter grading. You need to provide consistent grading. Otherwise your scheme is fundamentally unfair.
For starters you don't have an option to fail to provide a proper rubric. If you aren't doing that, then you are failing the students. If it is a lot of work to do it, then you have a large task, but a required one.
You can make the rubric as strict as you like (though I don't really like the concept of narrow interpretations), but it has to be clear to your TAs and it has to be reasonable to your students.
One way to assure some consistency is to have more than one TA involved with each student's work. They need to agree with each other or appeal to you for a judgement. If they enter student grades into a spreadsheet you can easily see the differences and can also use it for further TA training as needed, such as, for example when one TA is consistently "too" lenient.
For an exercise with lots of parts, it might be possible to have each TA responsible for only one part. This tends to work for final exams where students answer questions, but less well for programming assignments.
Another way to achieve a good rubric is to have yourself or a small team of advanced TAs scan the student work without grading it and use what they learn to refine the rubric to assure consistency. It is probably a mistake to use this trick to create the rubric in the first place, but it gives you an idea of where the students are going wrong and need correction. An overall view. Once that is in place, the actual grading can occur.
Another trick, though not very easily done in pandemic times or with a large pool of graders, is to bring everyone together in real time to grade all the papers. This could possibly be done online (zoom) and you could be present to answer questions and make decisions.
But, again, consistency is a requirement. The rubric needs to be complete to assure that. The "strictness" is a secondary concern, but could be improved (your idea, not mine) with a proper rubric that everyone finds clear.
Moreover, if you try to grade things on a fixed scale that are fundamentally "fuzzy" then you have an impossible task. If you can define "efficiency" in your example, then fine. But if it is a fuzzy concept then almost every rubric is likely to leave the grading to intuition. Give precise grades on the things that are precise. But for other things, judgement and a bit of compassion are probably needed.
In CS, some things are clear, of course. If a student uses bubble sort on a large array it is clearly inefficient. But selection sort is more efficient than quick sort at a certain scale, which is why library versions of quick sort normally drop back to selection sort for small sections of the initial set.
But judgments about "proper factoring" of code are judgmental. If your feeling is "I can't define it, but I know it when I see it." then it is nearly impossible to provide a rubric that will be used consistently by a group of TAs.
A few things to add:
Be sure the TA's know you'll back them and will be the bad guy. The students know the TA's are using your guidelines. If a TA uses their judgement but was too harsh, you'll let both them and the student know it was your fault for not being more clear.
Emphasize the benefits of consistency to the TA's. Remind them students compare scores. Let them know it's OK to ask another TA how they grade something (or you). Let them know if they give too many points, it's causing problems for the other TA's.
Remind them they had to work hard to pass this class (assuming they did). Students tend to be protective of their majors, especially TA's, and want to maintain standards.
Get TA buy-in for the grading criteria. This is similar to the last bullet. Suppose it's -50% for not using functions, even if it works. Remind them this is the "learn to use functions" assignment and it said they were required, and you went over functions in class all last week. 50% off is generous.
I managed to go 5 years never having heard the word Rubric, then it was 6 months more before I realized it's the exact same thing as a grading key. I try to be somewhat detailed over a range:
Style:
-5: didn't try. nonsense var names, random indents, looks like garbage
-3: barely tried, and only in some places
-0: actually tried but still looks bad.
"Efficiency" seems way too vague. I try to list specific things they need to do:
Efficiency:
-5: no array loops, just lots of IF's.
-3: No nested if's
-0: at least 2 useful nested if's (even if others could be)
But (and I know this isn't what you asked) in a regular coding class they're often just trying to learn the new stuff and make it work. "Good style" is often too much to ask "Efficiency" can be even scarier and more confusing.
I've never done any training exercises with TA's. Just gone over grading at the first meeting. Then discuss the upcoming assignment, and how to grade the one coming due at every other meeting.
From my experience, the best way to ensure consistency is by setting simple, clear-cut rubrics.
This can be done via a moderation exercise: have all the teaching staff mark 10 scripts together and see where the disagreements lie.
Alternatively, if you have access to moderation tools like Gradescope, then this obviates the need to meet in person.
Bottom line - just be clear about your expectations. Explain to the TAs the purpose of grading - either harsh or lenient, and the need for consistency.