EDUCATION
TEACHING / MENTORING
May 2005 - September 2006
Instructor, Mentor
Kinetium
New York, New York
- Contractor working at a (different than 2002) large global financial firm.
- Instructor for five-day MAp architecture course.
- Mentored architects on MAp architecture techniques.
May 2002 - September 2002
Instructor, Mentor
Kinetium
New York, New York
- Contractor working at a large global financial firm.
- Mentored experienced team through their first use of the Component Architecture Method (CAM), a development method focused on precise UML, patterns, and architecture.
- Instructor for five-day CAM architecture course.
- Revised instructional materials and authored new case study.
- Authored CAM reference chapters on usability design.
- Authored published paper: Why Can't They Create Architecture Models Like Developer X? An Experience Report.
May 2004
Instructor
CMU Tepper School of Business Executive Education
Pittsburgh, PA
- As part of a week-long course on software development, I delivered lectures on testing GUIs of websites, design for testability, frameworks and quality, and a large case study on HTTPUnit and Cactus.
- Translated live into Japanese.
December 2003
Instructor
CMU Tepper School of Business Executive Education
Pittsburgh, PA
- As part of a week-long course on software development, I delivered lectures on Modifiability, Testability, and Availability.
- Translated live into Japanese.
September 2003 - December 2003
Teaching Assistant
CMU Institute for Software Research
Pittsburgh, PA
- Assistant for Dr. Priya Narasimhan's graduate Analysis of Software Artifacts course.
- Developed and taught lecture on J2EE and EJB.
September 2002 - December 2002
Teaching Assistant
CMU Institute for Software Research
Pittsburgh, PA
- Assistant for Dr. David Garlan's graduate Software Architecture course.
- Developed and taught lecture on the architecture of the Apache web server and on Java programming.
January 2001 - September 2001
Instructor
Valtech
Dallas, TX
- Taught five-day Enterprise Java Beans (EJB) and J2EE course.
- Taught five-day Object Oriented Analysis and Design course.
- Developed chapters of next EJB course.
September 1998 - February 2000
Instructor
Icon Computing / Platinum Technology / CA
Austin, TX
- Advised software project teams on analysis and design strategies.
- Led client groups to develop precise business process models using Catalysis.
- Taught five-day advanced classes on Component Based Design and OO using UML and Catalysis.
- Taught Java course to top software developers at Platinum technology Developer's Conference. Topics included Java language, API's including Swing and JavaBeans, and J2EE.
- Presented lectures on Catalysis at software conferences in the US and Brazil (translated live into Portuguese).
September 1997 - May 1998
Project Mentor
University of Colorado
Boulder, CO
- Mentored eight groups of four students to develop their senior projects.
- Evaluated as best mentor since program inception (fifteen years).
SOFTWARE ARCHITECTURE / DEVELOPMENT
February 2008 -
Software Architect
Kinetium
Boulder, CO
- For a $1B sales company, elicited needs, redesigned their core business processes, chose ERP components, designed enterprise software architecture, and implemented solution.
June 2006 - September 2006
Software Developer
Kinetium
Boulder, CO
- Developed a custom plugin for Rational Software Architect CASE tool to support MAp.
May 2005-September 2006
Chief IDEM Architect, ER Architect
Kinetium
New York, New York
- Contractor working at a large global financial firm.
- Created blackbox and whitebox architecture models for an enterprise-scale identity and entitlement management system.
- Responsible for the architecture for the next generation entitlement review system.
- Authored published paper: Software Architecture at a Large Financial Firm.
September 2003 - December 2006
Software Developer
CMU Institute for Software Research
Pittsburgh, PA
- Designed and implemented a static analysis tool as an extension to the Eclipse Java Integrated Development Environment to support Design Fragments, a new technique to specify and check the patterns of client-framework interaction.
September 2001 - May 2002
Software Developer
CMU Institute for Software Research
Pittsburgh, PA
- Developed data interchange classes for event bus subsystem for the AcmeStudio architecture modeling tool.
January 2000 - April 2001
Founder, President
Groupedia
Boulder, CO
- Founded company to build groupware tools for mailing lists.
- Responsible for design and implementation of a fully dynamic database-backed website, business plan creation, negotiations with venture capitalists, and recruitment of established mailing lists.
- Created a high-availability, reliable, efficient, web-accessible environment for mailing list groups to organize knowledge, share links, and create documents while maintaining content accuracy.
- Production code: Oracle 8.1.6, ArsDigita Community System 3.x & 4.0, AOLServer 3.x, TCL, SQL, PL/SQL, Perl, QMail, Unix shell scripting, Linux
- Prototype code: Java, J2EE, JDBC, EJB, Apache, Linux, PostgreSQL 7.x.
September 1998 - February 2000
Consultant
Icon Computing / Platinum Technology / CA
Austin, TX
- Developer on internal Java-based (Swing) CASE tool that supports Catalysis features.
- Advised software project teams on analysis and design strategies.
- Led client groups to develop precise business process models using Catalysis.
May 1998 - September 1998
Java Developer
Novazen
Boulder, CO
- Developed requirements, architecture, object model, and prototype implementation for J2EE-based web application.
- Developed Java code to communicate with Gemstone/J object database including Java classes running inside the database and RMI interfaces to database.
- Applied principles of XP (Extreme Programming) method including continuous testing.
February 1998 - June 1998
C++ Developer
Heuristec
Boulder, CO
- Developed C++ classes to prep input files for statistical queuing analysis.
May 1997 - September 1997
Technical Lead, C++ Developer
Booz·Allen & Hamilton
McLean, VA
- Subcontractor to a government agency.
- Designed and implemented a propriety interface with a leading PCS wireless telephone switch.
- Developed initial system and successfully deployed it on a live wireless network.
- Technical lead for project and primary technical contact for client.
- Responsible for the training and mentoring of a new employee.
- C++ code initially developed under Linux and later ported to Windows NT 4.0.
June 1995 - December 1996
Senior Systems Designer
Time Warner Communications
Denver, CO
- Lead designer for telephony customer service management applications.
- Successfully moved software from 6-8 month waterfall development schedule to two-week iterative cycle.
- Successfully delivered two versions of the application to customers.
- Heavy use of frameworks, design patterns, and idioms.
- Designed and helped implement domain, business rules, and user interface classes.
- Acting as system engineer, interacted with domain experts and end users to document requirements and create accurate models of business systems.
- Implemented large portions of the system including business rule objects for the ordering system.
- Collaborated with Sybase developers to design stored procedure interfaces.
- Development environment was VisualWorks Smalltalk and Envy configuration manager on Sun workstations running Sun Solaris Unix.
June 1993 - January 1995
Member of Scientific Staff
BNR (Bell Northern Research) / Nortel
Research Triangle Park, NC
- Object oriented software developer on the largest OO project at that date (1500 developers), a rewrite of the call processing software for their flagship DMS-100 central office telephone switch.
- Designed and implemented a component of Call Forwarding allowing forwarding despite differing protocols (e.g. POTS and ISDN).
- Performed object oriented analysis and design for a Screening List Editing feature.
- Developed user interaction framework for call processing features.
- Software was written in Protel-2 (a proprietary OO language); prototyping done in Smalltalk.
September 1991 - May 1992
C++ Developer
University of Virginia Hospital
Charlottesville, VA
- Developed a statistical data analysis and reporting system that interfaced with a driving simulator and produced results for a medical study.
PUBLICATIONS
Design Fragments. George Fairbanks. Ph.D. Thesis. CMU Technical Report CMU-ISRI-07-108. April 2007.
Design Fragments Make Using Frameworks Easier. George Fairbanks, William Scherlis and David Garlan. In Proceedings of ACM SIGPLAN Conference on Object Oriented Programs, Systems, Languages, and Applications (OOPSLA) 2006, Portland, OR, USA, 22-27 October 2006.
Software Architecture at a Large Financial Firm. George Fairbanks, Kevin Bierhoff and Desmond D'Souza. In Proceedings of ACM SIGPLAN Conference on Object Oriented Programs, Systems, Languages, and Applications (OOPSLA) 2006, Portland, OR, USA, 22-27 October 2006.
Design Fragments Make Framework Use Easier. George Fairbanks. Presented at ACM SIGPLAN Conference on Object Oriented Programs, Systems, Languages, and Applications (OOPSLA) 2006, Portland, OR, USA, 22-27 October 2006. Winner of student research competition, which included this poster and a presentation.