Allen Holub
Allen is one of the country's foremost experts in software design,
process, and construction. He's written nine books, and his regular columns
for Dr. Dobb's Journal, JavaWorld, SD Times, and others have been
highly influential in the industry.
He regularly speaks at major technical conferences.
(He's serves on the Software Development Conference advisory board.)
Not only is Allen an expert architect and
programmer, he excels at passing his knowledge on to others as
both a consultant and educator.
Having worked as a CTO, Allen is also in a unique position to assess and improve both your software and your software-development process. If you're a nontechnical CEO, he can help you bootstrap your startup or analyze (and help you improve) your existing software organization. He regularly does one-on-one CEO and CTO-coaching sessions, and can train individual teams and entire departments on Object-Oriented design/UML, Agile process, and languages.
Here's Allen's detailed C.V. in .pdf format.
Technical Background
,llen 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. He moved into software by developing compilers and operating systems, and is now an acknowledged expert in OO Design and Process, as well as systems and application development. His software projects have included:
- Various Web 2.0/AJAX projects (See http://www.justatodolist.com for a recent project).
- Internet security infrastructure.
- Various Java libraries, including a threading that predated java.util.concurrent.
- Various client-side application programs.
- Open-source markup-language processors.
- Several operating systems (one real-time system and one disk OS).
- Various compilers for proprietary languages. (His C compiler is documented in his book Compiler Design in C).
- An UNIX-style C shell for Microsoft operating systems.
- Compilers and compiler-construction utilities.
- Various custom device drivers.
Allen was an early adopter of Java—programming in it since 1995 (the language was released by SUN in March of that year). He also works regularly in PHP, SQL, (X)HTML/CSS, and JavaScript. Before that, Allen worked primarily in C++ (since 1991), C (since 1980), and various other obscure and now-irrelevant languages (Smalltalk; FORTRAN; PL/M; PL/1; Pascal; Modula; 8080, 8085, 68000, and TI 9900 assembler; and the like.)
Allen is one of the country's foremost experts in Object-oriented Design techniques. He has been a strong public advocate of Agile design processes, in both his public writings and in his teaching work. Over the years, he's helped thousands of programmers work more effectively by showing them "how it's done." An important part of his practice involves training, mentoring, and guidance to companies who wish to apply Object-Oriented design techniques and processes to computer-software development. These sort of technology-support services range from on-site instruction to regular design and code review.
Allen has provided consulting and educational services to many companies, both in the San Francisco Bay Area, across the country, and internationally.
Teaching
Allen is a highly regarded educator. He regularly teaches in-house classes for individual companies, and has taught for the University of California, Berkeley, Extension since 1982. He's taught various topics, including Object-Oriented Analysis and Design, Java, C++, C, Compiler Design, Win32 Systems Programming, and Microsoft Foundation Class Programming. He regularly receives accolades from his students, who represent most of the major software companies in the Bay Area.
Allen is a regular presenter at the Software Development (SD) conferences, and presented at Sun's JavaOne conference in 1999 (covering the Java threading model). He's the Security-track chair for SD. His Software-Development presentations include security talks (including a nontechnical introduction to software security), various design talks (including Design Patterns and Architecture), and discussions of specific libraries (including the Google Web Toolkit (GWT) --- an AJAX development platform).
Writing
Allen is a Contributing Editor for the on-line magazines JavaWorld (Java Toolbox) and SD Times (Java Watch). He wrote the OO Design Process column for IBM DeveloperWorks and has moderated several public forums (including the ITworld Programming Theory & Practice Forum). His articles have championed the OO-design process, and have opened many readers eyes to what the term "object oriented" really means. Allen was a contributing editor for Dr. Dobb's Journal, Dr. Dobb's Sourcebook, and Programmer's Journal. His popular "C Chest" column, which appeared monthly in Dr. Dobb's Journal from 1983 to 1987, provided many people with their first introduction to C. Allen has also written for Microsoft Systems Journal, Programmers Journal, BYTE. Windows Tech Journal, Mac Tech Journal, C Gazette and others.
- Go to index of the Allen's JavaWorld and IBM columns.
- Go to a complete list of Allen's published work.
Allen's many published books include:
- Holub on Patterns: Learning Design Patterns by Looking at Code (Apress, 2004). This book is unique in the industry in that it presents the complete source code for two nontrivial programs (a SQL interpreter and a Game-of-Life implementation) and analyzes them in depth in terms of the design patterns used in the implementation. It is the only that shows you how the design patterns actually appear in real code.
- Taming Java Threads. (Apress, 2000). This book anthologizes his popular nine-part Java-threading series, originally published in JavaWorld, adding considerable material to the original articles. It covers all the threading traps and pitfalls found in Java, including the platform-dependence issues, and presents a production-quality threading package that you can use to solve those problem. Object-oriented threading architectures are also discussed.
- Enough Rope to Shoot Yourself in the Foot (McGraw-Hill, 1995): A collection of rules of thumb for C++ programming. Following these rules helps the reader both write better code and head off programming errors before they happen. The rules are based on practical programming experience in C++.
- C+C++: Programming With Objects in C and C++ (McGraw-Hill, 1992): An introduction to C++ for professional C programmers, this book takes the unique approach of presenting object-oriented concepts in the context of C before introducing C++. Covers pitfalls of the language and presents more practical-programming advice than most books of this sort.
- Compiler Design in C (Prentice Hall, 1990): Considered by many to be the definitive practical introduction to compiler design, this book covers all the relevant theory, but in the context of real programs: fully functional versions of the UNIX lex and yacc utilities are presented, as is the complete source code for a C compiler. This book is still a strong seller, six years after it’s first printing.
- The C Companion (Prentice Hall, 1987): Each chapter covers a different subject, both interesting and useful to the C programmer, but not covered in most books on C programming.
- The C Chest and other C Treasures (M&T Books, 1987): reprints 21 of the C-Chest columns that Allen wrote for Dr. Dobb's Journal.
- On Command: Writing a UNIX-like Shell for MS-DOS (M&T Books, 1986): The complete source code for a UNIX C-Shell implementation (which is much more powerful than Microsoft’s COMMAND.COM) that ran under MS-DOS. One of the first books to show how to implement useful UNIX utilities in the MS-DOS environment.
- Dr. Dobb's Toolbook of C (M&T Books, 1986): contains reprints of two of Allen's early articles for Dr. Dobb's Journal: "Getargs: A Command-Line Argument Processor" and "Grep.c: A Generalized Regular-Expression Parser in C."
Many of his books appear in Japanese, German, and Russian translation.
Education, Etc.
Allen holds an Bachelor of Arts degrees in Computer Science and Medieval-European History (or "mid-evil" history, as his D&B rating used to say) from the University of California, Berkeley. He is an accomplished composer and musician (keyboards and percussion, styles ranging from "minimalist" to jazz). He's also an artist, and an avid pilot (instrument-rated commercial).

