SANTA CLARA

Here’s what stood out to me during practice Sunday morning.

THE GOOD

1. DT DeForest Buckner. Today was the first day the 49ers wore pads, so I focused mainly on the players who hit each other, particularly the linemen – both on offense and defense. And the best lineman on the team clearly is second-year defensive tackle DeForest Buckner. None of the interior offensive linemen could block him during the one-on-one pass-rushing drills, and they consistently had to double-team him during 11-on-11s. With Buckner drawing double teams, the rest of the defensive linemen could take advantage of one-on-one matchups.

2. DE Arik Armstead. Armstead recorded three sacks during team drills – two while playing defensive end and rushing against Trent Brown (more on him below), and one while playing defensive tackle and rushing against Brandon Fusco. Armstead always has been a powerful player, but he seems more flexible and explosive this offseason than in the past. He says he currently weighs 275 pounds – down 15 pounds from last year.

3. DE Elvis Dumervil. Every time Dumervil and Trent Brown faced each other, Dumervil dominated. He drew one holding penalty, recorded one sack and came close to recording a second. Dumervil has the advantage in this matchup because he’s nine inches shorter than Brown and Brown struggles to get his hands on him.

4. DE Aaron Lynch. Lynch couldn’t beat Brown during one-on-one pass-rushing drills, but Lynch beat him twice for sacks during team drills. Brown had a tough day.

5. LB Reuben Foster. Foster struggled during the play-action portion of practice. Twice he fell for run fakes and sprinted toward the line of scrimmage while the quarterback threw the ball over his head and completed long passes over the middle of the field. But Foster redeemed himself later, when he intercepted fourth-string quarterback Nick Mullens and returned the interception for a touchdown.

6. QB Brian Hoyer. Hoyer completed 14-of-17 pass attempts (82 percent), and at one point completed nine in a row. He has gotten better every day of training camp and he hasn’t thrown an interception yet, as opposed to Jaguars quarterback Blake Bortles who reportedly threw five interceptions during practice on Saturday. I’m guessing the Jaguars would take Hoyer over Bortles at this point.

7. RB Tim Hightower. So far during training camp, all of the Niners running backs except Hightower have struggled running the outside zone plays, which are the basis of Kyle Shanahan’s offense. Hightower is extremely confident running these plays – he runs them hard and never hesitates. After practice, I asked him what are the keys to running the outside zone plays successfully? Here’s what he said: “First of all, understanding the big picture. A lot of people think you can just put anybody in this system. I remember my first experience with it in Washington, I didn’t really know what I was doing. I was just going on instinct. But the more you understand his system and what other guys are doing, you start to understand how to set things up. You can be a lot more confident because you know what’s going on. You’re more in control of what’s going on as opposed to just reacting. So, I think it’s understanding what you’re doing and not just running. And then secondly, it sounds cliché, but being tough. It’s not a finesse system. You’ve got to be able to take a couple zero, zero, one-yard gains to set up some other things, and not be bouncing runs back, not cutting outside. You’ve got to be true to the scheme. The first half (of games) may be messy, but if I stay true to it, eventually we’ll wear them down and eventually some things will pop in the fourth quarter.”

8. RB Joe Williams. Williams had a nice run between the tackles when he ran through Rueben Foster and knocked the rookie linebacker on his back. Williams also performed well in pass protection. He spotted Ray Ray Armstrong blitzing up the middle and then slid over to block him.

9. WR Kendrick Bourne. The rookie undrafted free agent made a leaping catch over the middle after beating Keith Reaser’s man-to-man coverage. Every day, Bourne beats at least one defensive back who probably will make the final roster. He has outperformed former 49ers draft picks such as DeAndre Smelter and Aaron Burbridge.

THE NOT SO GOOD

1. OG Joshua Garnett. Garnett morally offended Charles Haley during one-on-ones. I was standing next to Haley. We both watched Garnett face Buckner. When the ball was snapped, Garnett immediately started back pedaling. He never set his feet, never braced for impact. This disturbed Haley. When Buckner and Garnett collided, Garnett offered no resistance and Buckner easily pushed him backward into the quarterback. After the play, Haley yelled to a scout and pulled him aside to discuss Garnett in private.

2. OT Trent Brown. The starting right tackle played well during one-on-ones, but gave up at least five sacks and committed one holding penalty during 11-on-11s. I’ve never seen him, or any offensive lineman, give up five sacks in one practice. Brown usually plays much better. Maybe he just had a bad day.

3. TE Logan Paulsen. Paulsen is an excellent blocker, but he’s not much of a receiver, and today he made one of the least athletic plays I’ve seen from an NFL tight end. Here’s what happened: Hoyer floated a short pass to Paulsen that was a little high, but catchable. Paulsen simply had to raise both arms and he would have made the catch. Instead, he raised one arm, jumped a couple inches in the air and watched the ball fly by his head. He seemed like he wanted to appear as if he was trying hard to catch a pass he already had given up on.

4. RB Matt Breida. The undrafted rookie running back was impressive earlier during the offseason when the team practiced without pads, running for a long gains almost every day. Not today, though. During his first padded practice in the NFL, he struggled getting past the line of scrimmage. The Niners roughed him up. Breida seems like what Elvis Dumervil calls a “T-shirt player,” which is someone who plays well in shorts and a t-shirt when other players can’t hit him.

5. CB Keith Reaser. The starting cornerback gave up a long catch to undrafted wide receiver Kendrick Bourne, who probably will be practice-squad player. After this catch, I thought, “Gee, Reaser is terrible. He probably shouldn’t be starting.” Until a few minutes later, when I saw…

6. CB Dontae Johnson. The cornerback who would replace Reaser gave up back-back-to-back catches to Marquise Goodwin. Both times, Goodwin beat Johnson easily. After the second time Johnson got beat, I thought, “Gee, Johnson might be even worse than Reaser.” Which is rough, because one of those two will have to start this season.

7. SS Eric Reid. Reid twisted his right ankle on the second play of practice. Shanahan said he doesn’t know the severity of the injury or whether it’s a regular ankle sprain or a high ankle sprain. We’ll find out more tomorrow.