Josh Allen's 2019 campaign can be viewed as a season of two halves for the Buffalo Bills.

During the first half of the year, the Bills' quarterback demonstrated the same types of struggles throwing the football as he did during his rookie campaign.

Over the first four weeks, Allen threw three touchdowns and six interceptions, and through Week 8, he had tallied nine touchdowns and seven picks.

Not exactly great numbers.

However, since then, Allen has done a tremendous job of taking care of the football, as he has posted eight touchdowns and just one interception from Weeks 9 through 14, and going back even further, he has thrown 12 touchdowns and just one pick dating back to Week 7.

On the season overall, Allen has thrown for 2,737 yards, 17 touchdowns and eight interceptions while completing 59.8 percent of his passes and posting a passer rating of 85.8, with the biggest chunk of his production coming during the second half.

In addition, he has rushed for 439 yards and eight touchdowns while averaging 4.6 yards per carry. No, it isn't Lamar Jackson, but it's still really, really good.

What we have seen in 2019 is Allen's steady growth as a quarterback, and while he is certainly not “there” yet, he is improving, and that is the most important factor.

Look: the kid is still going to have growing pains, as evidenced by his 17-for-39 performance against the Baltimore Ravens last Sunday. That marked the third time this season that Allen completed less than 50 percent of his throws.

But the good news is that Allen is getting better, as he posted a completion percentage of just 52.8 percent last year.

Do I necessarily think the 23-year-old has it in him to become an elite signal-caller one day? I don't know. I do worry about his lack of accuracy, even if it has improved.

Still, all you can ask from a young quarterback is that he learns from his mistakes and incrementally gets better, which is what the University of Wyoming product has been doing in 2019.

Allen has also really made the most of what looked to be a very questionable receiving corps going into the year, as he has helped John Brown and Cole Beasley enjoy terrific seasons even though neither is a real No. 1 receiver.

That has to count for something, especially when the wide out many people expected to be the top guy for the Bills this season (Zay Jones) ended up getting traded in October because he was so disappointing.

Allen has also been dealing with a less-than-stellar offensive line, as he has been sacked 33 times through 13 games.

Perhaps the most important factor, however, is that Allen has Buffalo in a position to make what would only be its second playoff appearance since the 1999-00 campaign, as the Bills are 9-4 heading into Week 14 and are in the driver's seat in the race for an AFC Wild Card spot.

I won't say I am incredibly bullish on Allen's future, because the jury is still very much out on the second-year pro, but he has certainly had a nice season, particularly over the second half where he has erased many of his first-half missteps.

Oh, and the fact that he can run doesn't hurt, either.

I'll give him a B-minus for his performance in 2019 thus far.