Curriculum Vitae for Brett L. Schuchert


Skill Summary

Brett has 25+ years of teaching experience and over 20 years of experience with object technology. He has worked extensively in developing software, training, mentoring, and consulting using Java, C++ and Smalltalk as well as software process and requirements analysis both locally and internationally.


ThoughtWorks Incorporated

November 2011 - Present
Title: Principal Consultant

Technical Lead, Major Airline Carrier
Working as a tech. lead for a team of several developers in the development of FAR 117 rules for tracking crew flight time. This is a required to fly system with a hard deadline of January 4, 2014 for complete implementation and data deadline starting 28 days earlier. Developed functionality and coached other developers in both coding and agile practices. Supported several production-live versions leading up to the final release on December 6, 2013.

Also worked on dev-ops related items including: automated build for continuous integration, scripting of developer virtual machines.

Schedule into early 2014 to assist in the removal of unnecessary technical stack, which will include the removal of Enterprise Java Means and migrating from WebSphere to Tomcat.

Consultant, Smart Grid Company
Originally introduced to help with refactoring of a system but instead switched to agile enablement as the current solution was a symptom of a systemic problem. Assisted the team in the introduction of many of the Scrum practices, identification of and elimination of bottlenecks in their overall software development process and the creation of a preliminary backlog for new work. Continued with assisting in identification of the work that needed to be done, estimation on delivery possibility versus promises and helped introduce some of the XP practices into another team.

This organization also needed to grow and I assisted in the definition and application of an interview process for several roles: Business Analyst, Quality Assurance (with emphasis on automation), Senior Developer.

Consultant, Large Travel Corporation
Project: Service Retirement and Replacement

Member of team developing replacement of existing services implemented in CORBA and C++. Project stack included JMS (ActiveMQ and Tibco), Rest-based API (Jersey), IoC (Spring 3), ORM (Hibernate 3.x), Automated Test (JBehave, JUnit), Build (Maven), Continuous Integration (Jenkins), Revision Control (git, git svn bridge). Team organization included a combination of Scrum and XP with 2-week sprints. Responsibilities included both development as well as mentoring and general technical leadership within the team.

Project deployed into production 7/2012 and currently in use as of 2012.

Consultant, Online Education Provider
Project: Architecture & Technology Assessment/Product Development

Member of team evaluating as-is system including: Amazon EC2, NetSuite, SalesForce, custom-build Java Applications all integrated to provide an overall learning experience. Assisting in redesign of a simplified and overall improved intermediate solution. Also involved in inception of project related to online payment processing as well as COTS product evaluation.

Object Mentor

May 2007 - December 2011
Title: Senior Trainer, Mentor and Consultant

Training
  • Taught C++ and Object Design
  • Taught several Test Driven Development & Refactoring classes in multiple languages (C++, Java, C#, VB.Net).
  • Taught several Working Effectively with Legacy classes in C++, C# and Java.
  • Taught Patterns, Practices and Principles of OOD in multiple languages (Java, C++, C#)
  • Taught Agile Immersions with several people, including Robert Martin

Course Development
  • Developed and taught C++ and TDD Training at NASA
  • Developed and taught course on Agile Requirements and Project Coordination
  • Co-developed and co-taught course with Robert Martin on Concurrent software development using Java 5 and TDD.
  • Co-developed blended learning curriculum involving on-line learning for TDD in a Java environment
  • Co-developing TDD Coaching Master Class
  • Co-developing blending learning curriculum called Reclaiming C++ involving working with large legacy C++ projects.
  • Coaching, consulting and teaching several of the Object Mentor offerings
  • Several course customizations involving TDD/Refactoring/Legacy Code Refactoring

Consulting & Coaching
  • Several Agile/XP Immersions
  • Involved with several Agile in the Large Transitions (> 100 people)
  • Archicturial Assessment, coaching and training for a large C#-based Point of Sale Terminal provider
  • Agile transition, immersion, ongoing coaching with a large online travel offering
  • Agile coaching and mentoring with two large insurance companies. On primarily focused on automated testing and archicturail assessment, the other primarily focusing on improving several technical skills such as Test Driven Development.



Project Experience - Valtech

January 2001 - May 2007
Title: Principal Consultant



Transformational Services Instructor
Boot Camp: Agile Development with Java, Hertz Corp.

Developed and offered an 8-week boot camp on agile software development from Java to Requirements as well as using TDD learning understand and develop withing an existing reference architecture. This 8-week offering is a blend of formal training on Java Programming, Design and Requirements intermixed with project work on a reference architecture. The students will practice most of the Scrum practices (maintaining a product backlog, sprint planning, daily scrum meetings) and many of the XP practices (TDD, Pair Programming, Refactoring, Simple Design, Small Releases, Continuous Integration, Collective Ownership, Coding Standard). The intention is for the attendees to continue training with on-site mentoring after the 8-week immersion program.



Transformational Services Instructor
Custom Course Development: Agile Requirements Management

Developed in tandem with Craig Larman a custom 2-day requirements workshop merging agile and lean principles and offered this course back to back in Israel.



Transformational Services Instructor
Course Development: Agile Requirements Exploration

Developed and taught new course on Agile Requirements Exploration using User Stories. This course is roughly 70% exercise based. Attendees work through many experientially based exercises to develop user stories and understand the differences between more traditional "Requirements Management" and requirements exploration.



Transformational Services Instructor
Course Development: Designing Systems using EJB 3 and JPA

Developed and taught on EJB 3 and JPA technologies using tutorials and experiential-based exercises. This week long course start with basic JPA and works through EJB 3 using stateless and stateful session beans, extended contexts, message driven beans and EJB security. This course is roughly 80% exercise and practice based with 20% being lecture and general discussions.




Technical Lead - The Hertz Corporation
Project: TAS Fleet Control

Coordinated the activities of six developers, three consultants, four business analysts and one manager. The project had 3 primary goals:
  • Mentor COBOL programmers to become Java/J2EE developers
  • Mentor Business Analysis in Requirements, Analysis and Iteration Planning
  • Convert an existing COBOL application to Java/J2EE on top of an in-house Reference Architecture (co-developed by Hertz and Valtech).



Consultant/Senior Developer - The Hertz Corporation
Project: Several

Coordinate both developers and consultants. Design and develop significant parts of the reference architecture. Train developers in the use of those parts of the reference architecture. Implement functionally to specifications. Interact with Business Analysis to refine and change requirements.



Consultant/Developer Mentor - The Hertz Corporation
Project: ASAP Fleet Control

Mentored a team within Hertz in the adoption of Object-Oriented Programming, component technologies using J2EE and the unified process interspersed with several elements of agile methodologies. The project is re-engineering a project using Java, J2EE and the Unified process as a pilot. The goal is to move more projects over to newer technologies and software development processes. The pilot project what Hertz uses for fleet management



Consultant/Business Analysis Mentor - The Hertz Corporation
Project: TAS Fleet Control

Mentored a team of four Business analysts in the development of requirements and analysis artifacts, preliminary test artifacts, iteration planning, and distributed collaboration (Dublin, Ireland to Oklahoma City, OK, USA).



Consultant/Mentor - The Hertz Corporation
Project: (Several)Project Kick-Starts - The Hertz Corporation

Facilitated the Inception phase of 7 projects by guiding the development of a project vision and preliminary requirements. This was both in tandem with projects I worked on as well as projects for other groups. Developed, documented and followed a process for project kickoffs within the Hertz umbrella.



Consultant/Technical Lead - English Modernization Program, The UK Government
Project: Government Benefit Rewrite

Worked on 340+ person project. Evaluating requirements and developing technical approach for release 1.1 of a project currently under development. Develop technical options, working with technical stakeholders to determine interfacing between projects, high level design and project estimation.



Process Mentor - Large Utility Company
Project: Top-Down UP Introduction

Worked in Program Management Organization to introduce the unified process across the organization, I worked with management to:
  • Select UP disciplines to introduce first,
  • Evaluate and select tools in support of those disciplines,
  • Develop local policies relevant to the organization,
  • Develop and deliver appropriate training and mentoring in the adoption of the unified process.



Mentor - ABC Virtual Communications
Project: Mentor 26 Consultants

Developed and delivered a boot camp to 26 ABC Virtual Communications employees. The Boot Camp Covered:
  • Basic Java Programming
  • UP - Light
  • OO Analysis, Design and Programming
  • J2EE



Instructor - Valtech Technologies

Developed, refined and taught several courses including:
  • Advanced Java and Object Design
  • Java and Object Design
  • Object Oriented Analysis and Design
  • Introduction to Object Technology
  • Designing Internet Applications Using J2EE
  • Technical Introduction to Java
  • Introduction to Java and Technical Architecture
  • The Unified Process Distilled
 

Project Experience - ObjectSpace, Inc.

May 1993 - January 2001



Technical Architect - Galileo International
Project: Creation of architecture hosting e services supporting the travel & leisure industry, publishing e services to wireless devices

Technical architect for system. Captured functional and non-functional requirements for the development of a system of e-services. Developing appropriate components and interfaces for a highly distributed environment. Developed a solution consuming those components and publishing content to wireless devices and browsers.



Internal Mentor/Technical Lead - ObjectSpace, Inc.

Developed and taught internal mentoring programs for OOA&D and C++ development. These courses cover the following general areas:
  • Formal software process (UML & something close to Rational's process)
  • Requirements gathering
  • Analysis
  • Distributed system architecture
  • Detailed Design
  • Development & Construction
  • Unit test some test planning
  • J2EE (EJB, Servlets/JSP, etc)
  • General soft skills



Technical Lead - A Fortune 5 Company
Project: Integration of back-end support systems for hardware and software systems deployed to the web.

Working with another architect performed architectural review. Recommended and implemented improvements to existing system. Came onto project very near its demise. The project was developed with no technical leadership. There was little coordination of parallel efforts in different parts of the country. The project had little chance of any success by the time we joined. Developed and began implementing changes to introduce support for primary modalities. Left the project after not being able to implement planned changes. Project failed a few months later after spending approximately $16 million dollars.



Senior Consultant/Mentor - One of the big 3 Oil and Gas Companies
Project: Field management & control.

Mentored a group of 4 developers on the creation of a Java system to wrap existing system functionality in a way that makes the system more accessible and usable to the users of the system. Involved in full life-cycle development from preliminary architecture work, through conceptual modeling and use case development with users through to design, development and some level of testing. Tools used include Java, RMI, JNI, Unify Database, JavaBeans, RPM, Java Plug-In and Swing 1.1.



Technical Lead/Architect - A Nation-Wide Digital Cellular Provider
Project: Develop application architecture/Repeat Business

Develop a conceptual and technical architecture to support a suite of applications falling under the area of network management. Developed a system allowing for dynamic addition and distribution of functionality. Installation time configuration via Java Beans, primary name server and dynamic server backup and recovery to satisfy the modality of high-availability.



Senior Consultant -An Industry Leading Component Vendor
Project: Private banking business process analysis

Developed a conceptual model for a private banking domain by analyzing multiple private banks. The project focused on general ledger management, investment portfolios, and legacy system interaction. Developed a general understanding of private banking information management and modeled this knowledge in a CASE tool for use in complexity analysis, project scoping, and requirements development.



Technical Lead - A Nation-Wide Digital Cellular Provider
Project: Network configuration and management tool

Extended a part of a mission-critical system allowing users to request hardware and software updates to a nation-wide digital cellular network. Developed a three-tier system running in various browsers supporting JDK 1.1. Communications between the presentation layer and middle tier was implemented via sockets then later with Voyager™. The middle tier connected to at first a Microsoft SQL Server database via JDBC then later to Oracle. This project also involved some skills transfer. Upon initial deployment of the system, the client was able to extend the system unaided by ObjectSpace to about 3x its original deployed functionality.



Senior Consultant - A major heavy equipment manufacturer
Project: Task allocation & management

Worked with client starting with requirements. Refined UI model, developed preliminary test plan. Refined use case model. Performed analysis and design of entire system. Analyzed and designed common components to be used at an enterprise level for a suite of applications running on a common desktop. Technical architecture included DCE/RPC, Java clients and a C++ back-end.



Consultant - A Major Telecommunications Company
Project: Embedded Java development

Served as technical lead in the development of server and client-side functionality using Java. Developed proprietary client/server protocols and participated in architecture refinement.



Consultant - A Major Telecommunications Company
Project: PBX configuration and ordering

Acted as technical lead in server development using Java. Also involved in schema redefinition and C++ and Smalltalk support for management of the underlying operating system.



Consultant/Mentor - A Major Long-Distance Service Provider
Project: Toll-free call routing configuration

Worked with Smalltalk and C++ infrastructure development and development of overall system architecture. Also involved in mentoring and in the design of connectivity to legacy systems using OODBMS.



Instructor - ObjectSpace, Inc.

Developed and taught the following ObjectSpace courses for companies spanning such industries as telecommunications, banking, resource allocation, and scheduling.
  • C++
  • Advanced C++
  • Java
  • Smalltalk
  • Object-Oriented Analysis and Design Using Booch/UML/Fusion

Developed and taught internal workshops on Java and Voyager for ObjectSpace employees.

Developed and taught internal mentoring programs for OOA&D and C++ development. These courses cover the following general areas:
  • Formal software process (UML & something close to Rational's process)
  • Requirements gathering
  • Analysis
  • Distributed system architecture
  • Detailed Design
  • Development & Construction
  • Unit test some test planning
  • J2EE (EJB, Servlets/JSP, etc)
  • General soft skills
 

Teaching

Instructor - University of Texas at Arlington (UTA)
February 92 - May 93

Developed and taught a C++ course in the continuing education department at UTA. Developed and taught several courses on C and using C on a UNIX system.



Teaching Assistant - University of Iowa
August 1990 - December 1991

Course: Embedded Systems Development
Rewrote course from 68000 Assembly to C. Ported compiler in support of this.



Research Assistant - Center for Computer Aided Design
August 1989 - August 1990

Project: Finite element analysis of structural systems
Developed domain models of abstract data types and interfaces to relational tables. Also developed tools to support other developers. Became project's technical resource for C++ development as well as development environment usage.



Instructor - Kirkwood Community College
April 1985 - December 1991

Developed and taught several computer literacy courses including using tools such as WordStar, WordPerfect, SuperCalc, Dbase III+. Authored the textbook for one course.
 

Presentations

2013: Scandinavian Developer Conference
  • Seeing the world through you-colored glasses: The Dependency Inversion Principle in Action
  • Embedded Functional Testing with FitNesse and CSlim

2010: Agile Testing Days
2011: Agile Testing Days
  • Hosting the open space

2010: Norwegian Developers Conference
  • Get your business out of my face: Improving the testability of UI code
  • Half-Day tutorial: Automated Acceptance Testing

Agile 2009
  • Pair-Programming, how not to

Agile 2008
  • Pair-Programming, how not to
  • Test Driven Development and Concurrency

2008 SD Best Practices
  • Test Driven Development and Concurrency
  • An introduction to Aspect Oriented Programming

2006 Tulsa Tech Fest
  • Java 5 Variable Arguments
  • An Introduction to Aspect Oriented Programming
  • The Spring Templates: Template Method, Strategy and Function-Objects
  • Code Coverage and its Relationship to Quality

2007 SD West
  • Code Coverage: Can we really improve the quality of code using code coverage

2006 Valtech Days
  • An Introduction to Aspect Oriented Programming
  • JUnit 4 Reviewed: First Impressions

Education

Bachelor of Science in Computer Science from the University of Iowa

Recently attended:
  • Problem Solving Leadership Workshop by Weinberg
  • Congruent Leader Change Shop by Weinberg
  • Leader's Forum by Strider & Clien, 1998, 1999
  • Weinberg's SEM group
  • Satir Yearlong Performance Development Program
  • SEM Writers Workshop
  • AYE Conference
  • X-Workshop



Book Reviewer - Addison Wesley
January 1990 - December 2000

Reviewed approximately 30 books on various subjects, including:
  • C++
  • Advanced C++
  • Java
  • Requirements Management
  • Architecture
 

Publications

Several Self-Published Technical Articles
  • Automated Acceptance Testing with FitNesse
  • Aspect Oriented Programming with Aspect J
  • JPA and EJP 3
  • Test Driven Development/Behavior Driven Development in several languages including: C++, Scala, Java, Ruby, C#
  • Several more, please refer to; http://schuchert.wikispaces.com
  • Improving the testability of UI Code
  • Testing concurrent applications

Contributed Two Chapters to Clean Code
  • Two chapters on concurrent programming and testing concurrent programs

STL<Primer> by Glass and Schuchert

Authored second half of book on algorithms in the STL<Primer> published by Prentice Hall.

Introduction to Microcomputers by Schuchert

Authored manual containing tutorials and reference materials for the use of word processors, relational databases, and spreadsheets.