SANTA CLARA

Here’s what stood out to me during the first day of minicamp.

THE GOOD

1. WR Marquise Goodwin. Goodwin was the best wide receiver on the field even though he made just two catches. First, he ran by Keith Reaser and Jimmie Ward along the sideline and caught a deep, underthrown touchdown pass from Brian Hoyer. Goodwin burned those DBs so bad, he had to slow down and wait for the ball and they still couldn’t catch him. Toward the end of practice, Goodwin beat Reaser again – this time with a sharp comeback route – and picked up a first down on third-and-three. No one on this defense can cover Goodwin.

2. TE George Kittle. The rookie fifth-round pick played exclusively with the starters and took more snaps with the first-string offense than any other tight end. For long stretches, Kittle was Hoyer’s go-to guy. Hoyer targeted him twice on third down, twice in the red zone and once down the middle of the field for a 60-yard TD pass. Kittle’s best play came on first-and-10 during a two-minute drill. He matched up man to man with NaVorro Bowman, beat Bowman a sharp curl route, caught the ball, turned upfield and outran Bowman toward the sideline for an 18-yard gain. Bowman reached out and lunged for Kittle but never touched him – Kittle was too fast. Seems like the coaching staff is preparing Kittle for a big role next season.

3. LB NaVorro Bowman. Bowman struggled in man-to-man coverage as he always does. He gave up the catch to Kittle I described above, and two plays later he gave up a catch to Carlos Hyde. Hyde ran a simple out route. Bowman lunged and tried to grab a piece of Hyde’s jersey but came up emptyhanded. It seemed like the offense was picking on Bowman. Later though, when the offense moved to the red zone and the defense used zone coverage, Bowman played much better. On second-and-goal from the five-yard line, Hoyer telegraphed a pass to Kittle who was open in the end zone. Bowman read Hoyer’s eyes, slid in front of Kittle and made the interception. Savvy play.

4. LB Malcolm Smith. One play after Bowman’s interception, Hoyer telegraphed another pass to Kittle. This time, though, Malcolm Smith stepped in front of Kittle and knocked away the pass in the end zone.

5. DE Tank Carradine. Carradine made three great plays. First, he exploded past Joe Staley on a stretch zone run to the left and stopped Tim Hightower for a two-yard loss. Second, Carradine batted down a pass from Matt Barkley. Third, Carradine correctly identified a play-action bootleg pass and sacked the quarterback as soon as he turned around to run. Impressive. A lot of defensive linemen would have chased the running back on that play.

6. DE Aaron Lynch. The overweight defensive end beat backup right tackle Garry Gilliam for a sack on third-and-10. Then, the overweight defensive end recorded another sack when he reached out and grazed the quarterback with his left hand just before starting right tackle Trent Brown pushed him out of the play. This would not have been a sack in a real game.

7. QB Matt Barkley. The 49ers backup quarterback completed 70 percent of his passes and made the best throw of the day. It was first-and-10. Barkley threw a laser over the middle between two safeties and hit tight end Garrett Celek for a 30-yard completion.

THE NOT SO GOOD

1. QB Brian Hoyer. The 49ers starting quarterback completed his first two passes for long touchdowns. Both were play-action passes – Hoyer’s specialty. But after those plays, Hoyer threw behind Jeremy Kerley who was open over the middle. Hoyer threw late to Pierre Garcon two times and allowed defensive backs to break up both passes. Hoyer threw a deep pass to Aldrick Robinson who was double covered and had no chance to catch the ball. And Hoyer threw two telegraphed passes in the red zone. Overall, Hoyer’s completion percentage was 58.

2. RB Carlos Hyde. Hyde carried the ball four times and gained just 15 yards. Ten yards came on one carry between the tackles, and five yards came on three carries outside the tackles. Hyde still seems hesitant on outside runs, which are the foundation of the 49ers offense. He also doesn’t practice as hard as the other running backs.

3. FS Jimmie Ward. The 49ers free safety and last line of defense bit on a run fake and couldn’t recover in time to stop Goodwin from making a long touchdown catch. Ward still hasn’t broken up a single pass in front of the media this offseason. The former cornerback seems uncomfortable at his new position.

4. SS Eric Reid. The 49ers strong safety bit on a run fake and let Kittle make an uncontested 60-yard touchdown catch down the middle of the field. Reid still hasn’t broken up a single pass in the front of the media this offseason. The former free safety seems uncomfortable at his new position.

5. CB Ahkello Witherspoon. The 49ers’ third-round pick bit on a run fake and let backup wide receiver Aldrick Robinson make an easy 20-yard catch near the sideline. Witherspoon still hasn’t broken up a pass in front of the media this offseason. The rookie cornerback seems overwhelmed by NFL competition.