Sandy Alderson and Brian Cashman have had good years, which is reflected in both New York clubs likely heading to the playoffs simultaneously for the first time since 2006.

Neither was perfect, but perfect does not exist in the general manager job — except in 20/20 hindsight on talk radio. If a baseball operations department gets 60 percent of its decisions right, it is excelling, and since the end of last season both GMs have honored the most significant mandate of their job:

Improve your club today without mortgaging tomorrow (Alderson) or by actually enhancing the future (Cashman).

Alderson wasn’t great in the offseason (Michael Cuddyer and John Mayberry Jr.), but recognized — in particular — the troubles with his lineup and fixed them in July. Cashman did his better work last winter (Didi Gregorius, Nate Eovaldi, Justin Wilson) and mostly stayed in-house during the season aside from Dustin Ackley.

I don’t think either will win Executive of the Year. Toronto GM Alex Anthopoulos brought in Josh Donaldson and Russell Martin in the offseason and impacted his roster more than any GM during the season. He was spurred by having a team that has not made the playoffs since 1993 and recognizing what a run to the playoffs could mean for attendance, TV ratings and, thus, the near future. But it also should be said no organization gave up more prospects to get deals done, so a price could be paid in the future, as well.

Kansas City GM Dayton Moore did a terrific job with small moves in the offseason (Kendrys Morales, Kris Medlen, Ryan Madson, Edinson Volquez) and trying to seize the moment with such a talented squad in season (Johnny Cueto, Ben Zobrist). Texas GM Jon Daniels brought in Yovani Gallardo last offseason, then not only made a large move (Cole Hamels) that turned his team’s season around, but a few small ones (Sam Dyson, Jake Diekman, Mike Napoli) that have been superb.

Pittsburgh GM Neal Huntington has remained terrific at the under-the-radar move with impact: re-signing Francisco Liriano, convincing A.J. Burnett not to retire, and then also adding Francisco Cervelli, Jung-ho Kang, Aramis Ramirez, J.A. Happ, Joakim Soria and Joe Blanton.

As bad as Atlanta’s record is, I like that GM John Hart embraced that the Braves were not going to be contenders in 2015, but wanted to be when moving into a new stadium in 2017, and went full wrecking ball: cleaning up the future payroll while improving Atlanta’s farm system from a bottom-third ranking to a top-third ranking.

But here is why I like what the New York GMs did:

Alderson

He rebounded like Charles Barkley, because the best part of Alderson’s offseason was finding Sean Gilmartin in the Rule 5 draft.

For the second straight year, the Mets whiffed finding a righty to play against lefties, releasing Chris Young on Aug. 15, 2014, and Mayberry on July 30, 2015.

As for Cuddyer, the motivations felt wrong there — the Mets knew they needed an outfielder, but seemed to want to get on the board early to avoid the pressure to spend a lot on a Nelson Cruz or Melky Cabrera, or trade for a Matt Kemp or Justin Upton. But a two-year contract and forfeiting a first-round draft pick last June to sign a 36-year-old with health problems whose numbers were inflated playing in Coors Field seemed a reach — even for as great a clubhouse presence as Cuddyer.

Alderson also left his bench thin and just too many at-bats went early to the Danny Munos and Darrell Cecilianis, and the organization was slow to recognize that Michael Conforto was a better option.

But once Alderson stepped on the gas pedal, he did so boldly and with clear eyes about addressing shortcomings in lineup depth (Kelly Johnson, Juan Uribe, the promotion of Conforto), bullpen depth (Tyler Clippard, Addison Reed) and a big bat (Yoenis Cespedes). That he did all of that sacrificing just one highly desirable piece (Michael Fulmer) was impressive.

Remember, the debate for a long time was if Alderson should use a win-now starter such as Steve Matz or Noah Syndergaard to address the lineup needs — and he was willing to surrender Zack Wheeler for Carlos Gomez. But now he has all of his appealing young starters intact to make a run now — and into the future.

Cashman

He was under ownership orders not to add another long-term contract, and through his own eyes he believed strongly if the Yanks kept emphasizing old over young, they would crash like the Phillies and now the Tigers.

So players such as Max Scherzer and Troy Tulowitzki never were in play. But they were still the Yankees, so within the context of not selling out the future, Cashman had to figure out a way to try to win now.

An emphasis was placed on upgrading the bullpen. They Yanks never bid on David Robertson, feeling they could get Andrew Miller cheaper (they did), that he would be at least as good (he has been better) and that they also would get a compensation draft pick when Robertson signed elsewhere.

Cervelli has turned out to be an above-average starting catcher for Pittsburgh, but in New York he only was going to be Brian McCann’s backup. The Yanks picked having Wilson and John Ryan Murphy, who has been a very good backup.

Manny Banuelos incurred more elbow problems with Atlanta, so we will see if he ever excels consistently. For much of this season, Chasen Shreve was a very good part of the bullpen (though he has been bad in September) while David Carpenter never was good for the Yanks and traded rather quickly to Washington.

The big move was finding a successor to Derek Jeter, and the three-team trade that brought Gregorius is a big win for Cashman. Gregorius’ growth this year has been as important for the short- and long-term health of the franchise as anything — especially if it allows the Yanks to use Tyler Wade and/or Jorge Mateo as second basemen or trade chips.

Martin Prado would have been a better second base option than anyone the Yanks have, but the in-season improvement of Eovaldi also bodes well for the future — assuming he does not need a second Tommy John surgery.

Young was re-signed and continued to do for the Yanks what he didn’t for the Mets — hit lefties well.

The pick up of Ackley is intriguing because he can hit and may be liberated to do so outside of the pressure of being a second overall pick bust in Seattle — not to mention playing in a more hitter-friendly stadium. We also are seeing with Greg Bird and Luis Severino why Cashman was refusing to move his top prospects.

The busts? Chris Capuano was not a useful swingman. Stephen Drew hit homers and fielded second base, but just struggled too much overall offensively. And giving Chase Headley a four-year deal is — at best — neutral this year with the chance to go very wrong into the future.