Allen's primary focus in the last few years has been on helping companies be successful in their software-development efforts. His motivation is frustration; having seen too many companies either fail outright or loose literally millions of dollars simply because none of the executive-level management understood how software both is and should be produced. The frustration comes from knowing that these failures are easily avoidable when the executives have even a little help.
Having worked as a CTO, software architect (in the sense of a designer of software), programmer, educator, and author specializing in object-oriented design and languages (including Java and C++), Allen is in a unique position to help executives get and stay on track.
Allen has worked in the computer field since 1979 —as an independent consultant since 1983. He started out as a hardware engineer, developing robotics control systems — his first software projects were device drivers for his own boards — but the software eventually preempted the hardware. His hardware roots very much inform the way that he produces software: He is a firm believer in solid design work and follows a best practices" approach to programming. His software projects have included:
Allen was an early adopter of Java.