George H. Fairbanks, Ph.D.
- Technical architect. Designed and implemented a Hadoop system for a big data analytics firm. Desinged and implemented a scripted continuous deployment process using Jenkins, Puppet, and Amazon Web Services. Recently written code in Java, Scala, Pig, Python, Puppet, bash, etc.
- Enterprise architect. Architect positions at 3 NYC banks, advisor to CTOs on architecture strategy.
- Manager. Managed a team of 15 developers across 7 time zones on a big data Hadoop project.
- Academic. Ph.D. in software engineering from Carnegie Mellon University. Chair positions in two architecture conferences.
- Educator. Taught classes at NASA, Yahoo, and telecom firms since 1998.
- Author. Author of the well-received book Just Enough Software Architecture.
HONORS and ACTIVITIES
- Chair positions for: SEI Architecture Technology User Network (SATURN 2012, Technical Chair), Working International Conference on Software Architecture (WICSA 2011, Organization Chair).
- Program committee member for: SEI Architecture Technology User Network (SATURN), European Conference on Software Architecture (ECSA), Working International Conference on Software Architecture (WICSA), European Conference on Software Architecture (ECSA), International Conference on Software Maintenance (ICSM).
- Referee for IEEE Transactions on Software Engineering (TSE), Springer's International Journal on Software Tools for Technology Transfer (STTT), IEEE Software.
- Nominated for CMU Distinguished Dissertation Award, 2007.
- Winner of 2006 OOPSLA ACM SRC.
SOFTWARE ARCHITECTURE, DESIGN, and DEVELOPMENT
August 2008 - Present President Rhino Research Boulder, CO
- President, primary consultant, and primary instructor for a software consulting and training firm. Clients include NASA, Yahoo, Big Data companies, IT shops, and internet companies.
- Architect & Team Lead A Leading Big Data Analytics Company New York, NY
- Working for the head of Global Financial Markets, designed and developed a successful Hadoop-based big-data analytics system for a large NYC financial institution. Managed a globally distributed team of 15 developers across 7 time zones. Introduced an agile process using test-driven development and continuous integration. Wrote and debugged Linux shell scripts, Python tools, DB stored procs, Java web services, and Pig Hadoop code.
- Second project: Recovered and documented architecture for global financial markets analytics application
- Architect Datalogix Denver, CO
- Working for the CTO of Datalogix, a big data analytics company, provided architecture guidance on transition to Hadoop. Recovered architecture of the existing system by interviewing business and engineering experts. Created as-is architecture blueprint to reduce the rapidly growing team's reliance on oral history. Identified process and engineering improvements. Worked with two big data teams to move ETL tasks to Hadoop. Advised on architecture options including column-oriented databases and in-memory databases.
- Architect Alticast Denver, CO
- Working for the CTO of Alticast, a video delivery software company, designed a hybrid public/private cloud product line architecture. Realigned their efforts to use COTS PAAS offerings. Designed and implemented a continuous build environment that automatically pushed each test build of the distributed system to the Amazon cloud (AWS) using Puppet scripts.
May 2002 - August 2008 Software Architect Kinetium Boulder, CO
- Software Architect OpenText Boulder, CO
- For a $750M sales company, redesigned their core business processes, chose ERP components, and designed an enterprise software architecture. Worked directly with company president and senior executives.
- Chief Architect (IDEM project) / Architect (ER project) Citigroup New York, NY
- Architect overseeing 4 projects, 30+ developers. Created 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. Developed a custom plugin for Rational Software Architect CASE tool to support MAp.
- Architect, Instructor, Mentor JPMorgan Chase New York, NY
- Redesigned a fat-client credit card CSR system to run on J2EE and a business rules engine. Mentored experienced team through their first use of the Component Architecture Method (CAM), a development method focused on precise UML, patterns, and architecture.
September 2001 - December 2006 Software Developer Carnegie Mellon University 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. 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, remarkably similar to Wikipedia. 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.
September 1998 - February 2000 Professional Services Consultant Icon Computing / Platinum Technology / CA Austin, TX
- Led client groups to develop precise business process models using Catalysis, an Object-Oriented Analysis and Design method. Advised software project teams on analysis and design strategies. Developer on internal Java-based (Swing) CASE tool that supports Catalysis features.
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
- As a 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.
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-9 month waterfall development schedule to two-week iterative cycle. Heavy use of frameworks, design patterns, and idioms in Smalltalk.
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.
TEACHING / MENTORING
2009 - Presenter Rhino Research Varies
- AgileDenver 2009 Conference. Presentation: Risk-Centric Architecture.
- Denver ITARC 2010 Conference. Presentation: Architecture Haiku.
- SATURN 2010 Conference. Tutorial: Risk-Centric Software Architecture.
- AgileRoots 2010 Conference. Presentation: Expressing Design Intent in Code.
- NoCo Software Architects 2010. Presentation: Architecture Haiku.
- Denver OSUG 2010. Invited Talk: Architecture Haiku.
- OOPSLA 2010 Conference. Tutorial: Expressing Design Intent in Code.
- DJUG 2011. Invited Talk: Agile, Architecture, and Big Data.
- WICSA 2011 Conference. Tutorial: Architecture Haiku.
- SATURN 2012 Conference. Tutorial: Architecturally Evident Coding Style.
- GOTO 2012 Conferences, Copenhagen and Amsterdam. Invited Talk: Conceptual Model of Software Architecture.
- IASA Atlanta 2012. Invited Talk: Architecture Hoisting.
- Suntrust, Atlanta 2012. Invited Talk: Architecture Challenges at Financial Firms.
- Manhattan Associates, Atlanta 2012. Invited Talk: The Design of Software.
- University of Colorado, Boulder. Invited Talk: Overview of Software Architecture.
August 2008 - President Rhino Research Boulder, CO
- President, primary consultant, and primary instructor for a software consulting and training firm. Clients include NASA, IT shops, and large internet companies. Authored book Just Enough Software Architecture.
Jan 2008 - May 2008 Instructor Carnegie Mellon University Pittsburgh, PA
- Co-instructor of graduate level Architectures of Software Systems course, with David Garlan and Tony Lattanze.
May 2005 - September 2006 Instructor, Mentor Kinetium / Citigroup New York, New York
- Instructor for five-day MAp architecture course. Mentored architects on MAp architecture techniques.
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.
May 2002 - September 2002 Instructor, Mentor Kinetium / JPMorgan Chase New York, New York
- Instructor for five-day CAM architecture course. Revised instructional materials and authored new case study. Authored CAM reference chapters on usability design.
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 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).
. 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.