A pragmatic programmer is someone who deals with problems sensibly and realistically based on practical considerations rather than theory. They are typically early adopters of new technologies, inquisitive critical thinkers who don't accept things at face value. Pragmatic programmers understand the underlying nature of problems, are familiar with a broad range of technologies, and care about crafting high quality software. Some tips for becoming pragmatic include fixing issues as soon as they arise rather than living with "broken windows," being an agent of positive change, and remembering the big picture rather than getting lost in details.