top of page
Famine in the Bullpen audiobook

Famine in the Bullpen audiobook

  • "Innovation is a drug and the more people we can burden with this addiction the better off the world will be."


    Why does software engineering seem so routine?

    Isn't engineering supposed to be difficult and challenging?

    Why are other engineers developing ingenius structures and earning patents while the software engineer is simply shuttling bits back and forth?


    Famine in the Bullpen explores these questions. It proposes a root cause and an engineering solution. It invites the reader to undertake a practice that demands challenge and applies disciplined whimsy to the renewal of innovation as a standard expectation for engineering.

  • accessor    (n) a method returning the value of an attribute of its associated object (e.g., getCount() may return the value of an internal counter)
    agile    1. (adj) emphasizing efficiency and minimization of waste 2. (n) a popular software development process conforming to the Agile Manifesto (chapter 5) emphasizing rapid turnaround and early software delivery
    ARC    see Architecture Review Committee
    Architecture Review Committee  (n) a committee of curmudgeons at Sun Microsystems responsible for reviewing all changes to public interfaces
    assembly language  (n) a tool which provides a simpler way than machine code to directly program a particular CPU such that each instruction corresponds directly to the binary instructions understood by the CPU
    backward compatible  (adj) the property of a particular change indicating that it has not rendered its associated interface unusable by existing clients
    bare metal    (n) a euphemism meant to refer to the underlying electronic computing platform prior to the installation of an operating system
    bean    1. (n) according to the JavaBean specification, any Java object that is serializable, has a default zero-argument constructor, and exposes internal state using accessors and mutators 2. (n) in common parlance, and most commonly applicable in this book, a Java object having state but no behaviors so as to distinguish it from a machine
    behavior    (n) the rules identifying how a provider may respond to a request (e.g., Given a valid make and model, the corresponding Automobile shall be returned. If the make or model are invalid, an InvalidArgumentException shall be raised. If the make and model are valid but do not correspond to an existing Automobile a NoSuchAutomobileException shall be raised.)
    binary    (adj) the property of a number, code or instruction indicating that it is represented in base 2, made up of only ones and zeros (e.g., binary 9 = 1001)
    C    (n) an imperative procedural programming language providing an intentionally intimate connection to the underlying computer hardware making it a reasonable next step beyond assembly language
    C++    (n) an imperative Object-Oriented programming language extended from and sharing some key semantics with C
    central processing unit  (n) an electronic circuit, typically an integrated circuit, within a computer which carries out machine code instructions
    Change Review Team  (n) a loosely associated group of senior engineers at Sun Microsystems responsible for a final review of each software change prior to integration into Solaris
    channel    (n) a formal mechanism used to transfer data between a data source and a data consumer
    class    (n) an object defining a type from which objects of the given type may be instantiated
    client    (n) a program that initiates requests for data from a provider using an agreed upon interface
    close reading    (n) the careful, sustained interpretation of a brief passage of a text emphasizing the single and the particular over the general
    company    (n) an organization registered formally with a state entity to do business within that state (e.g., a corporation or LLC)
    competence    (n) the ability to recognize deficiencies in ones own abilities and address them constructively
    context-free grammar  (n) a grammar which may be fully specified as a set of substitution rules from the set of all possible valid terms to a progressively more refined result set comprising, typically, an actionable procedure
    CPU    see central processing unit
    creeping elegance  (n) that process wherein an engineering team may incrementally add new capabilities to an ongoing project expanding its scope and losing track of the original goals
    CRT    see Change Review Team
    curmudgeon    (n) an individual who would write a book like this
    DAO    see Data Access Object
    Data Access Object  (n) an object responsible for transferring data between a conventional object and a remote data source such as a database or a device
    Data Definition Language  (n) that portion of the SQL repertoire which controls the structure of tables such as CREATE, ALTAR and DROP
    Data Manipulation Language  (n) that portion of the SQL repertoire which adds, modifies and removes data in relation to tables such as INSERT, UPDATE and DELETE
    Data Transfer Object  (n) an object designed to serve as a minimized payload describing (typically) only the changed components of a larger object for the purpose of efficient transport over a bandwidth-limited channel
    DDL    1. see Data Definition Language 2. (n) used to designate a file containing SQL conforming to the Data Definition Language (e.g., “That DDL describes our schema.”)
    declarative methodology  (n) one of two generally accepted categories of software development methodologies (see imperative methodology) which emphasizes the definition of the logic of a program as opposed to step by step procedures following from a common starting point
    diamond problem  (n) a problem encountered in OOM when a child object having two parents each with an identical method signature introduces an ambiguity into the child when invoking that method in that it has no way of knowing which of the parents is supplying the method being invoked
    distant reading  (n) a technique for analyzing text that avoids interpreting particular phrases in favor of the rigorous aggregation of information from the larger corpus
    DML    1. see Data Manipulation Language 2. (n) used to designate a file containing SQL conforming to the Data Manipulation Language (e.g., “Populate the tables using this DML.”)
    DTO    see Data Transfer Object
    Eiffel    (n) an object-oriented computer programming language which supports and promotes a number of widely accepted software engineering principles
    emotional intelligence    (n) the capacity to recognize and respond constructively to the emotional state of ones self and others
    engineering solution  (n) any mechanism which resolves a problem by effectively addressing its root cause
    form  (n) a conceptual model of a precisely delineated state of affairs representing the current state as well as past and likely future states
    formal argument  (n) a parameter provided to a method in order to control its behavior
    formal method  (n) a set of procedures and policies intended to support the prosecution of a technical project including design, development and progress monitoring
    fragile base class problem  (n) a problem encountered in OOM wherein a poorly devised parent class imparts its own inadequacies to its children
    functional methodology  (n) a declarative software development methodology which seeks to resolve problems by modeling the solution as data sets which may be mapped through functions to other data sets while minimizing side-effects
    generative grammar  (n) a grammar the rules of which support the generation of valid sentences which carry meaning despite being difficult to anticipate from the basic grammatical rules and which might be fully specified only within the context of the interaction between a mytho-poetic culture and a universal grammar defined by human brain structures
    grammar    (n) a set of rules governing the composition of lexical tokens into structures that convey information or instructions
    halfpager    (n) a detailed explanation of a perceived problem
    hermeneutics    (n) a theory of text interpretation, later broadened to questions of general interpretation, emphasizing an innocent approach to the body of work which minimizes bias and improves fidelity to the original intent
    imperative methodology  (n) one of two generally accepted categories of software development methodologies (see declarative methodology) which emphasizes step by step procedures beginning from an initial state
    interface    (n) a mechanism for gaining access to the capabilities of a software program through a well-defined signature and behaviors
    IoC    See Inversion of Control
    Inversion of Control  (n) a software technique wherein the dependencies of an object are provided through automation in response to a specification identifying those dependencies
    Java    (n) a general purpose computer programming language made popular by Sun Microsystems and used primarily to build web-based services
    life cycle    (n) a term used in software to describe the arc of a project having a beginning middle and end, each with distinct characteristics (e.g., early in the life cycle is the proposal, late is maintenance-only then discontinuance)
    machine    (n) in common parlance, any Java object having behaviors but no state so as to distinguish it from a bean (def 2)
    machine code  (n) the most primitive sort of computer program wherein each binary number or group of numbers translates directly into an operation within the CPU
    maintenance mode  (n) that portion of a project life cycle wherein it has been delivered, is providing the intended capabilities and requires no more innovative modifications
    management  (n) those individuals involved in supervision of productive workers without themselves directly producing value
    method  1. (n) a body of disciplined techniques intended to accomplish a specific purpose 2. (n) in OOM that component of an object providing control over or access to its internal operations (e.g., start() may be a method which causes an object to begin some operation)
    mixin    (n) an object with specific behaviors intended for use by another object without requiring that the other object inherit it
    mock    (n) a software component designed to provide an emulation of a declared interface usually for the purpose of testing.
    mutator    (n) a method which modifies the value of an internal attribute of its associated object (e.g., setCount(6) may initialize a counter in an object to 6)
    object    (n) the realization of a type
    Object-Oriented Methodology  (n) an imperative software development methodology wherein the problem is resolved by considering what thing will take on what task in cooperation with other things as opposed to what actions must be performed
    onepager    (n) a halfpager to which a solution has been appended
    OOM    see Object-Oriented Methodology
    Operating System  (n) software that mediates between user application software and the underlying bare metal usually providing general purpose software resources
    organization    (n) an identifiable assembly of people working together in pursuit of a common goal (e.g., building housing for low-income occupants or making money)
    OS    see operating system
    panopticon    (n) a type of building so constructed as to assure good behavior on the part of all occupants by making it impossible for any to know when they are or are not being observed thereby defaulting to the assumption that they are under constant observation
    persistent store  (n) a repository having a well-defined interface allowing insertion and extraction of data guaranteed to be retained in relative perpetuity (e.g., a relational database)
    problem space    (n) that state of affairs in which the problem is manifested
    problem statement  (n) an attempt to define a problem unambiguously with minimum reference to any potential solutions
    procedural methodology  (n) an imperative software development methodology wherein the problem is resolved by constructing procedures which manipulate data structures
    procedure    1. (n) a step-by-step process which, if observed faithfully, will yield a well-defined result  2. (n) an access point within a program which invokes an action or change of state
    provider    (n) a program which responds to requests using a well-defined interface
    Python    (n) a computer programming language supporting multiple styles, primarily object-oriented but also lending itself to more nearly functional methodology
    red flag review  (n) a process for resolving problems before they happen by anticipating likely problems and establishing resolutions before-hand
    root cause    (n) the practical first mover for an observed problem, not the origin of existence itself, which would not be practical; but the problem’s origin such that to find its origin would provide no value in correcting the class of problems as defined
    realization  1. (v) the process of constructing an instance of a type 2. (n) an instance of a form
    requirements  (n) a document representing an expression of what the world would be like if the problem were resolved, often including elements of the problem and a proposed solution
    REST  (n) a network architectural style proposed by Roy Fielding which strives to fully exploit the stateless underpinnings of the HTTP protocol
    revision  (n) an indicator (usually an integer) representing how many times an entity has been modified (e.g., revision 7 was created and then revised six times, each revision being assigned the next integer in sequence)
    SDF  See Software Development Framework
    server  1. (n) a network-facing provider responding to client requests with one or more services 2. (n) a physical computer designed to support the processes identified in definition #1
    service  (n) any well-defined interface into a server providing data, registries or other value in response to a well-defined request, often using an HTTP protocol
    side-effect  (n) any behavior visible outside of an invoked method, function or procedure which is not that operation’s return value such as a change in program state, the initiation of a print job or the delivery of an XML message to a remote client
    signature  (n) a simple communication pattern identifying the data to be provided to and returned from a program (e.g., Automobile getAutomobile(String make, String model))
    skill  (n) the ability to provide value through some well-practiced application of knowledge within a given field of endeavor
    SOAP  (n) a messaging protocol built upon the HTTP protocol which seeks to essentially defeat the capabilities provided by HTTP in favor of a stilted back and forth of data using only a subset of HTTP message types
    Software Development Framework  (n) the collection of published guidelines used at Sun Microsystems in the 1990s and early 2000s for development of their software
    software stack  (n) the complete assembly of software comprising a product from the software accessing the raw data in the persistent store to the user or service interface.
    solution space  (n) the state of affairs in which the problem is not manifested because it has been resolved
    specification  (n) a solution-space document defining the surface features of the mechanism which resolves the problem
    Standard Query Language  (n) a declarative language used to design, configure, store data in and retrieve data from a relational database
    state  (n) potentially transient information describing a thing (e.g., the length of a list or the current floor of an elevator)
    state of affairs  (n) the way things actually are, regardless how they may appear to the observer
    SQL  see Standard Query Language
    technical solution  (n) any mechanism which resolves a problem directly without consideration of the problem’s origins or root cause
    type  (n) a form defining the generic embodiment of an object
    version  (n) a string of dot-separated numeric revisions of the form major.minor[.micro[.nano]] (e.g., which are associated with an entity and which are used to indicate the compatibility of that entity with identically named entities having potentially different versions
    Web Services Description Language  (n) an XML notational convention used to describe the interfaces offered by a server on the World Wide Web
    workstation  (n) a computer configured to support technical work by a single specialist such as a circuit board designer or a software developer
    WSDL  see Web Services Description Language

bottom of page