[[stepping up onto my soap box, waving a complex story problem in the air]]
I have read so much research, and seen so much great practice. I have seen kids actually problem solving instead of blindly following rules.
I want to shout it from the rooftops. "You are not helping by teaching your second grader to borrow and carry!"
I cold explain why, but nobody wants to hear it. "The way I learned was just fine." But I never hear that from actual mathematicians. When you really go into it, when you do math thinking -If you have to add, subtract, multiply or divide large numbers in your head- not many people actually use the standard US algorithm. Give it a try:
do seven hundred eighty-four plus six hundred fifty nine in your head -No fair writing it down.
Think about the steps you take:
Did you add 600 + 700 first? Now you have an estimate. You know your answer will be around 1,300
Did you add 4 + 9 first? When you got 13, did you put the 3 to the side and add 1 to 5 and 8? or did you add 13 to 80 and 50?
Kids need to develop strong number sense and be familiar with the patterns of numbers before they learn the short cuts of our standard methods.
I worked with two fourth graders who were finding the area of a rectangle. One quickly got the answer while the other set up a multiplication expression on paper:

CG: I know it is 60 because 12 times 10 is 120, and half of that is 60.
CG had all of this said before KT had even finished writing the problem. -As soon as CG said this, KT said "oh, yeah". She knew the same logical explanation as CG, but set reasoning aside in favor of writing the problem out.
Kids who learn the shortcuts too soon tend to stop thinking. I'm not saying they shouldn't learn the standard methods, I'm saying they need to learn them later when they are ready to use critical thinking to choose when certain methods are best.