February 2018


I was originally looking for as much information on Robert Neyland’s methods of playing football as I could find. The best reference is probably Andy Kozar’s “Football as a War Game” but finding cheap copies these days is next to impossible. Dr Kozar’s book is made of annotated notes of General Neylands, and originally could be had for $75.00. On Amazon these days, one copy is being offered for a bit more than $2800.00. So, that said, I read Dan Gilbert’s book, which is a decent history of the man but a mediocre football book.

IMG_0335

All that said, it became evident that there was an early standout on Robert Neyland’s teams, and that man was Bobby Dodd. Bobby Dodd was a quarterback on 3 of Neyland’s best teams, and later became a coach with the Georgia Tech Yellowjackets. In 1952, Bobby Dodd won a college national championship and in 1954, he wrote a book on football.

IMG_0320

The timing of the book is useful, as it’s between the 1950 publication date of Don Faurot’s book and the 1957 publication of Wilkinson’s tome on defense. Anything that can give me a snapshot in time of what people think is useful, and this gives an opinion of a respected, Neyland educated coach. Interestingly, when Bobby Dodd retired from coaching Georgia Tech, his replacement was Bud Carson, the same Bud Carson who became the well known defensive coordinator for the 1970s Pittsburgh Steelers (and where the first versions of the Tampa 2 appeared).

If I had to hazard a guess, from the amount of space devoted to it, then I would say that Bobby understood the 6-2 better than any other defense. It was the first defense he introduces, and in the shifted 6-2, the defense he recommends against the single wing. The next base defenses he introduces are the 5-3-2-1, as he calls it (the 5-3) and the image that follows shows a 5-3 from an offensive context.

IMG_0321

Later he introduces the defense he calls the 5-4-2, and later says the best of them is the 5-4 Oklahoma. For Dodd, it was a defense against the split T.

IMG_0332a

His final base defense was his goal line defense. Against spreads, he gives advice that would feel at home with anyone who has read Dana Bible’s book.

IMG_0334a

There is a lot in Bobby Dodd’s book, that I haven’t covered, as he gives an enormous amount of drill, and then also his philosophy of football, which was that it had to be fun, or else the students wouldn’t enjoy it. In many of the psychological aspects of football, his approach is very modern, and the book would not hurt any coach to have on his bookshelf.

I’m doing a brief review of Python again, as it relates to things that draft fans might like, and note that the random and statistics modules all seem pretty useful.

So, the design goal here is: can we make a good enough simulation to tell us something about draft strategy. Can we learn something about BPA versus need by using Python code? Right now I don’t have an answer, but I can show you some of the approach so far.

One thing I’ve found if you’re moving from another language into Python, that you can eliminate a lot of scope issues if you’ll do certain substantial bits of work in a Python class. The scope of self variables is easy to measure and then you’re not wondering whether the common variable in Python has exactly the same scope, as say, a lexical in Perl.

So for now, we present the Playa class, a “draftable” object.


import random
from statistics import mean
from pprint import pprint

random.seed()

class Playa:
    def __init__(self, oldid=0):
        self.value = random.randrange(1,101)
        self.pos = self.getposition()
        self.id = oldid + 1
        self.drafted = False
        self.meanshift = -1000.0

    def __repr__(self):
        return "Playa id:{0:3d} pos:{1:s} val:{2:3d}".format( self.id, self.pos, self.value )

    def out(self):
        return "id:{0:3d} pos:{1:s} val:{2:3d}".format( self.id, self.pos, self.value )

    def getposition(self):
        poslist = ["QB","RB","WR","FL","SR","TE","LT","LG","RT","RG","OC"]
        return poslist[random.randrange(0,11)]

    def draft(self):
        self.drafted = True

This object will allow us to generate players and then associate them with teams. Players can be identified by their id, a draft value can be derived from their real value (1-100), and a logical variable shows whether they are drafted or not.

I’m only using offensive positions in this simulation. And since more and more teams use a slot receiver as opposed to a fullback, we have “SR” in our position charts.

If with 32 teams, you generate 320 players per draft, then the values of 1 to 100 break nicely, as real value of 91 to 100 are first round talent, 81 to 90 are second round talent, and so on.