Michael Kelley Harris - Resume

("Kelley", since there are so many Michaels.)


650-485-1203, Palo Alto, California

805-895-0634, Santa Barbara, California



Agile/Scrum Trainer, Coach, and Developer. Software Engineer with 20+ years of hands-on software development experience.  Helping organizations create more value, faster, with less risk. Using Agile, Lean, Scrum, Lean Startup, Design Thinking, and whatever helps teams move forward.  Steeped in principles & practices from Agile/Lean, Kanban, and Lean Startup.  Moving focus from the “how” to the “what.” Industries include: nanotechnology, scientific instrumentation, energy, automotive safety, Agile methodologies, finance, investment, education, etc. Design patterns, SOLID principles. Spirit of help, service, collaboration, and innovation. Enjoy sharing knowledge via Agile/Lean/Scrum consulting, training, and coaching.  Certified Scrum Trainer (CST), Deep experience with C++ (15 yrs) and Python (10 yrs). Many other technologies used including java, C#, C, ruby, javascript, CSS, HTML, CoffeeScript, SQL, etc. 

BS Physics,  BA Math/Economics, University of California, Santa Barbara.  Plus 34 units of Computer Science courses.


Lean Startup skills & training: I've read The Lean Startup book twice. Attended two Lean Startup conferences. Use the principles on my own product ideas. Attended two Lean Startup Machine weekend workshops.  Mentored & judged at Lean Startup Machine workshops. Incorporating Lean Startup topics in the courses I teach and consulting.


Design skills & training: software design, industrial design, product design, graphic design, participatory design, permaculture design, drawing, sculpture, animation, etc.


Special Interests: Sustainability, Green Energy, Internet of Things, Innovation, Science, Permaculture, Health, Nutrition, and Music













2004 - present
Agile Coach, Trainer, & Developer.   SourceCell – Agile/Lean/Scrum consulting, coaching and training. (Certified Scrum Trainer (CST))  Custom software development, delivered in weekly increments of growing functionality.  Frequently helping teams add more unit tests and refactor difficult sections of code. (Keywords: Senior Software Engineer, Architect, Agile Coach, Agile Trainer, Agile Consultant)  See Client projects & comments...   Sample projects include:


· Scrum Training & Coaching. Description: Training Courses    Calendar of courses:  Calendar


· Agile Coaching and Firmware development. New platform for the children’s education. Game-like platform with TV console, plus separate game-like controller. Technology: C/C++, Embedded Linux on ARM. C on 8051. Bluetooth.


· Agile Training & Coaching for Cisco, as part of a company-wide Agile transformation.


· Agile Training and Coaching for PayPal, via SolutionsIQ (US & India)  Part of an Agile transformation for all of PayPal. Taught various one-day courses including Basic Agile (Scrum), ScrumMaster Skills, Product Owner Skills.


· Agile Coaching re automated tests and refactoring of a special code base. Python.  Company: Calient Technologies


· Analyzed requirements and architectural options for a scientific/medical application that does camera capture, image editing, and annotations.  Recommended investigating an HTML5/Javascript/C++ approach, instead of current use of C++.  Company: Giles Scientific


·  Software development help for Ward Cunningham’s new Smallest Federated Wiki open-source project. (https://github.com/WardCunningham/Smallest-Federated-Wiki.git)  It’s been a great pleasure to interact with Ward over the years at conferences, email, etc. This project has been a chance to work more closely, see how Ward thinks, pair program, etc. I worked on a variety of features, including an image-analysis plug in for measuring pattern efficiency of a manufacturing process, to lessen material waste.  Very Agile. Tools: Javascript, Coffeescript, JQuery, Node, Ruby, Mocha, Sinatra, HTML5, JSON, etc.


·  Architecture and implementation for a client-server web-based data-collection system. Created various Python applications on client and server, to handle the data collection, white listing, and later processing. Designed the XML schema design for a data file. Designed the XML schema design for data-transfer metadata bundle.  Server configuration. Apache configuration. Linux and Windows. SSL configuration. Etc. Agile approach. (Scrum project plus XP testing & refactoring.)  Company: Bosch, Automotive Diagnostics Division. Tools: Python, XML, Apache


·  Agile/Lean/Scrum coaching and consulting in collaboration with Industrial Logic. (http://www.industriallogic.com/)   Sample engagement: Help a team utilize test-driven development (TDD) in C++ and Python, and advise on other Agile practices. Schlumberger (http://www.slb.com/)  Industry: Oil & Gas Services  Group:  Physicists in the oil-well Interpretation Engineering Group


·  Agile coaching for a Ruby-on-Rails company in transition to more Agility. (Scrum plus XP practices).  Advised the team and owner. Prepared summaries of practices.  Company: ELC Technologies.


·  Created application to automatically extract and transform automotive specification data, as part of an extract, transform, and load (ETL) process.  Created a Python application to read Excel spreadsheets (workbooks with multiple sheets), and transform the data to the needed form and load the database. (Scrum project plus XP testing & refactoring.)  Company: Bosch, Automotive Diagnostics


·  Create automated test frameworks for an important Visual Basic 6.0 product. After assessing existing frameworks, created a simple unit-test framework used on the class/function level and subsystem level.  Added over a 1000 tests, and helped refactor the code to help an important new feature set.  Added system-level test mechanisms for regression testing.  Created Python scripts to validate structure and content of an evolving SQLite database. (Scrum project plus XP testing & refactoring.)  Company: Bosch, Automotive Diagnostics Division.


·  Server optimization.  Compare current Java solution to a C++ implementation. Created the C++ version and ran performance benchmark tests.  Extreme Programming (XP) approach. Company: EZX Inc. (http://www.ezxinc.com/)  Industry: Financial trading infrastructure.


·  Architecture and implementation for the first data-driven approach to handling specification information used in Crash Data Retrieval (CDR).  Help the team integrate this new approach in a very iterative way. Created a unit-test framework and added numerous automated unit tests on both the class level and the subsystem level. Plus Agile coach re planning, estimating, unit and functional tests, project management. (Scrum project plus XP testing & refactoring.)   Company: Bosch (http://www.bosch.com/) Group: Automotive Diagnostics.


·  Ported design-pattern lessons from java on Windows to C++ on Windows and Linux, for use in Refactoring to Patterns courses offered on-line and at  major companies. (e.g. Google, HP, etc) For Joshua Kerievsky of Industrial Logic,   Follow-on projects included porting C# lessons to C++. (Extreme Programming)


·  Enabled a C++ application to interact with a SOAP web service to get special automotive-service information. Additional features have been added as requested. (Scrum project plus XP testing & refactoring.)   Client: Bosch Diagnostics (subcontracted through Cold Spring Engineering)


·  Consulted for MasterWriter software since 1995. (ownership interest)  MasterWriter software won a Best-of-Show award at MacWorld 2003.  (Scrum project.)


· Worked on the FitNesse open-source project for system testing. Wrote an early C++ addition to allow testing of C++ programs using the Framework of Integrated Test. (FIT).)  (Extreme Programming project)


·  Evaluation of development tools on iPhone versus Android-based mobile phones for use in a monitoring-and-control application. Client: Bosch Diagnostics


·  Added error-status information to user-space drivers in embedded Linux monitoring systems for a commercial solar-energy (photovoltaic) company. (SunEdison)


·  Built simple web sites. (e.g. www.worldsfare.com, www.tellmewhen.co,  www.spiritmtnart.com and the www.focusedgigs.com family of sites: www.aspengigs.com  www.afmgigs.com  www.agilegigs.com  www.cleantechgigs.com, etc.), and www.domaincells.com etc. Plus, working on a number of software product ideas.  Tools: HTML, Javascript, CSS, Python 


·  Software tools/technologies:  C++  (+ STL, Boost, templates), Java, Python, C#, Linux, Bash shell, gcc/g++, gdb, make, cmake, ctest, chroot, XML-RPC, Javascript, JQuery, Coffeescript , Ruby, HTML, HTML5, Eclipse, MS Visual Studio, Windows NT/2000/XP/VISTA/Windows 7,  Mac OS X, Android, iPhone, Subversion, SOAP, gSOAP, soapUI, COM, XML schema design, Ruby, Poco, D-Bus (dbus), Git, SQL, SQLite, etc. See also Client projects & comments...


2013 - 2014
Principal Consultant, ThoughtWorks, San Francisco, California.  Helping companies use Agile software principles and practices, through training, coaching, and consulting. I was ThoghtWorks’ only technical coach for North America. Client companies include: Nike, CareerBuilder, Discovery, Carfax, Prudential, Dillard’s, Confluence, CompareToMarket, Unibet, etc.  Trained & coached around the US and Europe. Created training examples and exercises in Java, C#, etc, using related web frameworks and tools. 

2008 – 2013

Principal Software Engineer, SourceCell (See full description above for 2004-present, I worked for SourceCell continuously from 2004-present, full-time except where other associations are shown, During those other associations, I worked for SourceCell part-time on special projects.  During 2008-2013, I worked full-time for SourceCell.)


2003 - 2008
Senior Software Engineer IV, Veeco Instruments, Santa Barbara, California.  (Acquired Digital Instruments (DI))  Veeco is the world's leading manufacturer of atomic-force microscopes (AFMs). (AFMs are the world's most powerful type of microscope. They can "see" atoms. AFMs are used in many nanotechnology areas including the development of solar cells, hybrid cars, biomedical innovations, high-brightness LEDs, MP3 players, flash memory, etc.). My roles: Created and initially managed a $6 M architectural-migration project.  This evolved into a longer term Common Assets Software Group,  We hired a manager for that group, and I moved into an architectural development role.  Responsibilities: Developed a common-data analysis package for use by multiple business units. Development on a large architectural-migration project, development of common: code, tools, and practices, for use by three different business units and product lines. (Product-line architecture group).  Service-Oriented Architecture (SOA) for precision equipment control, data acquisition, and data analysis.  Work included: architectural design, development, planning, budgeting, requirements analysis, use cases, component design, implementation, unit & system test frameworks, etc.  Agile/Scrum coaching. (Scrum project plus XP testing & refactoring.)  Moderated a design patterns study group with 7-9 participants.  (based on Joshua Kerievsky's model for patterns study groups.)  Defined and developed an "Open Architecture" product that enables customers to customize our main application via scripting and plugins.  Removed 143,000 lines of no-longer-wanted-but-still-running legacy Zinc GUI support from a flagship MFC application.  Software tools/technologies used: C++  (+ STL, Boost, templates), MFC, COM, Python, Java, CppUnit and unittest.py for unit-testing, Boost libraries, Eclipse, a custom data-driven system testing using FIT-like approach (parsing Excel files and driving GUI tests via Silktest and API tests via MS COM), PHPwiki for collaboration and knowledge base, CruiseControl continuous build system, Perforce source control, Serena Team Track for issues tracking, Enterprise Architect for modeling. Windows 2000/XP. 


2002 - 2003
Director of Software Engineering for Research Products, Veeco Instruments, Santa Barbara, California. (see above Now called NanoBio)  Responsibilities: Planned and coordinated development of software for scientific instruments (AFMs). Managed a $2 M department budget with 14 people. Agile/Scrum coaching. (Scrum project plus XP testing & refactoring.)   Created proposals, plans, and presentations.  Requirements analysis on multiple levels, including use cases. Technical work: Numerous architectural projects. Developed initial version of the world's first commercial software package for nanomanipulation and nanolithography NanoMan Integrated the CppUnit unit-test framework into our main application. Integrated a C++ version of the FIT framework for acceptance tests. (http://fit.c2.com) Added a COM interface to main application for control from client programs. Programmed demo COM clients in LabVIEW, Matlab, Python, and Ruby. Plus lots of general programming needed on the company's main million-line application. Investigated Agile development methodologies such as Extreme Programming (XP), Feature-Driven Development (FDD), Scrum, and the Rational Unified Process (RUP) as ways to provide rapid innovation, solid methodical development, and on-going feedback to management. Impressed with development using short-cycles, close customer involvement, and unit-testing.  Established a library of  books for the software department. Software tools/technologies: C++  (+ STL), C, MFC, CppUnit, MS Visual Studio, Python, LabVIEW, TLIB, Windows NT/2000. 


1999 - 2002
Manager of Software Engineering , Research Products Group, Veeco Instruments (See above) Manged six people. Accomplishments: Managed a major clean-up of the main shipping legacy product. (6 months) Prepared plans to accommodate a major reorganization of the business into two businesses, and two software departments. Agile/Scrum coaching. (Scrum values and principles) Technical work: Participated in the development of numerous new products. Software tools/technologies: OOA, OOD, design patterns, C++  (+ STL), C, MFC, MS Visual Studio, Zinc, TLIB. 


1997 - 1999
Software Engineer, Digital Instruments. DI's software controls a very complicated real-time data-acquisition and analysis system. ( (Atomic Force Microscopes)  Accomplishments: Worked in the Software R&D group helping develop the next-generation architecture and user interface. (OOA, OOD, C++, MFC, ActiveX) Completed a two-month GUI prototype to win the company a $10 Million order. (Visual Basic)   Lead developer of software to control the world's first atomic-force profilometer, combining motion control, SPM data acquisition, display, and analysis. It required lots of requirements analysis, design, rapid prototyping, and user-interface design. It also involved the integration of contributions from diverse personalities and the associated practice in cooperation, communication, imagination, patience, etc. In retrospect, the profilometer project was run in a very Agile manner, with daily interaction between the person playing a Product Owner role and me as the developer. We created a simple working version and iterated to add new features as vertical slices through the system, and demoed the progress to stakeholders weekly. Other projects include: analysis & verification of legacy algorithms, designing test procedures, and random general programming that a complicated system often requires.  Software tools: C++  (+ STL), C, MFC, Galil, Zotech, Zinc, MS Visual Studio, Windows NT 


1993 - 1997
Assistant to the President, Digital Instruments, in Santa Barbara. (see above) I feel quite fortunate to have worked directly for Dr. Virgil Elings. He's one of the most brilliant men around, and quite a colorful character. In 1993, I applied to work as a programmer. He asked me to focus on the organization & support of a patent infringement lawsuit against a competitor. That work included: analysis of the competitor's hardware and software, summarization of complex evidence, financial analysis of damages, correspondence with attorneys, etc. I developed various databases for tracking patents and legal documents. Additional projects included: analysis of contracts and license agreements, patent and trademark applications and administration, proposal writing, and financial projections for federal research grants. As the lawsuit ended, I asked to transition back into programming for DI's main products.


Technical Writer II, Engineering, PulsePoint Communication (Formerly Digital Sound Corporation (DGSD) Manufacturer of high-capacity network-based message processing systems). Job description: "participated in the product design and development cycles for DGSD's software products, to identify, design, create and maintain required documentation." My primary focus was on DGSD's extensions to UNIX and the "Systems Services" layer between the operating system and custom applications. Required knowledge of UNIX, C, C++, and object-oriented analysis & design methodologies. Wrote test programs, shell scripts, and created sample programs for user manuals and tutorials.


1992 - 1993
Technical Reviewer, Intellimation (educational software publisher), on a part-time basis. Performed technical review and software testing of new educational software. Prior to 3/9/93: Technical Evaluation Coordinator, 30 hrs/wk. Performed technical reviews of new educational software, finding bugs and suggesting improvements. Provided technical and programming assistance to developers. Required skills in HyperCard and C programming. Plus technical support. Started using Linux 0.99 at home, in order to learn more about UNIX and C programming.


1988 - 1992
Consultant, Michael Kelley Harris Special Project Services for Investors, Entrepreneurs, and Strategic Managers.  (dba Venture Analysis until 1992)  Services included: feasibility analysis, due-diligence, research, project management,  proposals, writing, programming, etc. Prepared business plans for four limited partnerships to raise a total of $3,000,000. Prepared large spreadsheets for investment analysis. Created databases for clients wanting contact info, marketing plans, etc. As necessary, hired professional associates, sub-contractors, and assistants.  Worked very hard and learned a lot.  Developed a deep appreciation for the entrepreneurial risks and creations of others.


1985 - 1988
Physics student. University of California at Santa Barbara.   Worked P/T for Brian Beebe, Colin Gray, and private collectors, fabricating, framing, and installing contemporary art. Started studying C programming.


Programmer/analyst. International Transducer Corp. Created computer models for the design of piezo-electric ceramic transducers, based on Bessel functions of harmonic resonance. (BASIC)


1983 - 1985
Economics/Mathematics Student. University of California. Some freelance investment research, analysis, due-diligence services. (Didn't make much money. Learned a lot.)


Programmer/analyst. VentureSim. Programming of Monte Carlo simulation and analysis of oil & gas well investments, in BASIC and Lotus 123.


pre 1983
Numerous other jobs and small service businesses. (Including programming in Pascal, APL, Fortran, and assembly.)









Participated in the invention of a number of methods and instruments within the field of atomic-force microscopes, including:








·      Unit test frameworks used: Google Test (Gtest & Gmock), JUnit, CppUnit, CppUnitLite, Boost Unit Test, NUnit, CppTestKit, plus a variety of custom and home-grown forms

















Conscientious, diligent, and creative. A generalist by nature, but with specific skills. Sensitive to both the opportunities and frustrations of innovation. Belief in thoroughness and full disclosure.


Recent influential reading:

Frequently referenced reading:

































·        "Kelley Harris is a senior software engineer that has the experience and personality to handle high pressure situations with calm and sensible actions. Kelley is a team player and a strong communicator who knows how to set priorities and manage expectations. His interest in learning new things keeps his software skill set current and makes him very versatile." -- Ben Tsuruda, General Manager, Cold Spring Engineering.


·        "Kelley Harris brings to the table a deep knowledge of the ins and outs of C++ as well as the practical experience required to use its power safely.  His forward-thinking attitude and his diligent dedication to whatever he's working on make him a pleasure to work with.  As a telecommuter myself, I can also attest to his highly effective communication skills." – Evan Mezeske, Lead Embedded Software Engineer, SunEdison.




·        To whom it may concern, My name is Andreas Huber and I was heading the Engineering Department for the Automotive Diagnostics Division of Robert Bosch LLC in North America between 2008 and 2011. Within this time Michael Kelley Harris was working for us on a contractual basis in several crucial projects as a Software Architect and a Senior Software Engineer. Some of these projects are for example: - Performance and Feature improvements for a Windows based Software product called Shop Foreman Pro using C++ and ActiveX - Design and Implementation of a SOAP-Based Interface for a WebService for Diagnostics Service Information using C++ and XML - Design and Implementation of a new Data Driven Software Architecture for a product called CDR (Crash Data Retrieval) and Implementation a Web-Based data collection system for a major Asian OEM.  Kelley has a fundamental understanding of different types of Software Architectures and the ability to apply them in an excellent way to the given customer requirements. He also has strong capabilities in finding adequate solutions even in high-pressure situations. He is always willing to take on leading roles within a team and always focused on the customer requirements.  He is always seeking for new challenges and is willing and able to learn new things in a quick and profound manner It is always a pleasure to work with Kelley and I would be glad if I would have to opportunity to work with him together in future projects. With kind regards” -- Andreas Huber, Director Strategic Marketing within Robert Bosch Diagnostics Business Unit


·        Love these tests“ … “I'm really impressed by the extent to which comprehensive test suites enable this sort of refactoring, it is liberating….It took me an hour to move from implementation to unit test. The second tranche of tests exposed my dumb m(x+b) implementation bug, while confirming I hadn't broken anything else. By mid afternoon I had added several dozen tests. This just would not have been possible if we had not taken the time to reasonably structure our code. So today we saw what we set out to achieve when you first joined us: the OEM makes a major revision to the specification Tuesday night, and Wednesday afternoon we demo the revised & tested application. Thank you very much. ” -- Michael Lamboley, Senior Software Engineer, Robert Bosch, LLC, Bosch Diagnostics


·        Over the past two years, I have had the pleasure of working alongside Michael (Kelley) Harris.  In my roll of Product Test Engineer, for the CDR product line, our working relationship began to evolve further as I discovered Kelley's interest in providing tools and suggestions for ways to increase efficiency in our test procedures. Most notably, on several occasions, Kelley has taken it upon himself to use his personal time to conduct research, develop applications as well as provide consulting advice.  This has been paramount in reducing time and effort as well as increasing the accuracy of our testing. Kelley posses a broad skill set which enables him to meet a wide variety of software development requirements.  Moreover, it is the breadth and depth of Kelley's testing expertise, coupled with his analytical and problem solving skills, which set him apart from others.  Tools which Kelley has developed include: Regression Testing - Test ran via the CDR app which analyses differences between reports generated in various versions of CDR. Differences are printed to a detailed report which helps users locate differences in files. This reduces time spent debugging.   Besides time savings, the tool minimizes the risk of releasing software bugs to customers. Python Tests - Kelley has developed several Python scripts, which can convert PDF files to text, batch search multiple file formats for user-defined parameters and print test status reports.  These tools have greatly reduced the effort to verify newly implemented report features and change requirements. Unit Tests - Developed extensive unit tests, which are run prior compiling beta software as to minimize risk of introducing bugs. Kelley has implemented countless other test tools in addition to his daily development tasks. The above-mentioned items provide a limited example of all, which Kelley has completed while at Bosch. In short, it continues to be a pleasure to work with Kelley now and in the future.  I have learned a great deal from his wisdom.  Above all, I cannot thank him enough for his willingness to teach and be a mentor.  The lessons he has taught me will carry on through my career and I will always be grateful for this.“ -- Eric Oglanian, Product Test Engineer, Robert Bosch, LLC, Bosch Diagnostics