Developer (Scala, Java, C#, SQL), architect, manager, project manager, business analyst, director of software engineering and team lead with over 25 years of successful delivery experience in product development, consulting and in-house systems. Over 7 years in financial product and trading systems in equities, options, mortgages, fixed income and commodities with a technical emphasis on messaging-based architectures. Include front-office, middle office and back office system development and deployment with strength in near real time risk evaluation and control.
Create greenfield software and teams or renovate existing systems to new platforms or meet upgraded technology or functions. Converted several large systems across languages, including extensive discovery of hidden existing system function.
Comfortable working within or creating/modifying team methodologies from structured Agile, through Scrum to opportunity-reactive as is found in trading organizations. Strong user of TDD (code is typically 90+% statement covered by unit tests with many packages 100% covered), refactoring and continuous delivery for early incremental release, and maintaining a clean, flexible code base that allows quick response to changing needs and opportunities. Regularly increase performance of systems by 5x in the short term, sometimes by 100x with additional effort.
Continuous learner with current interest in new language paradigms such as functional programming for better code and natural parallelism.
I am most useful and happiest as a strong lead developer / mentor on a mid-sized team that has a strong mandate to create a new system over 1-2 years or radically convert a system in increments in the same time frame.
Senior software engineer @ As part of the 3 person technical team that developed and deployed an end-to-end trading infrastructure (from historical data gathering, through quant modeling, direct market access (CME), fills reporting and PnL attribution) in Scala (Ubuntu development, Centos deployment), Actors, 0MQ, PostGres:
• Reorganized the entire core library to take advantage of improved Scala compilation times and adapt to new versions of 3rd party packages
• Worked with quants to manipulate historical data and to implement trading strategies on the trading infrastructure.
• Rewrote the security definition collector to improve performance and decrease errors
• Rewrote the drop collector to decrease errors and support operation when database components failed. From August 2012 to March 2013 (8 months) Greater Chicago AreaChieftain (Small team lead) @ • Led a team to build out a durable multi-cast firm-wide (global) bus architecture for near real time data in the trading system. Hosting fill, risk, control, status and configuration streams on the bus. Writing near real time risk control machinery on top of the bus, integrated into the trading engines for risk-based trade control. Integrates with Java, C++, C# and Python clients and publishers.
• Rewrote (from C# into Java) the daily trading data collection. Billions of daily messages are gathered from the log files of several hundred hosts and translated into a highly efficient format for transfer into a large historical database application. The application is multi-thread and runs in parallel on 14 production servers. All records for a day are transferred in about two hours. This application was the anchor application for a new data capture group.
• Took over development and maintenance of internal risk applications. Improved scalability, manageability and reliability while selectively rewriting components into Java from a mixture of SQL Server stored procedures and Erlang. Incident reports virtually eliminated while the size of the trading architecture increased by a factor of 3 without additional hardware required.
• Developed a self-clearing application in C# and SQL Server. Asset classes cleared include equities, options and futures. Cleared millions of trades daily. Personally developed core architecture components that led to scale and flexibility over the (currently) five year life of the software. Self-clearing saved tens of millions of dollars compared to the best commercially available clearing rates. During high volume market conditions when clearing firms restricted trades cleared per day, GETCO was able to stay trading when others had reached their clearing caps. From June 2007 to September 2012 (5 years 4 months) Greater Chicago Areasoftware craftsman @ Quantitative Risk Management (QRM) (see www.qrm.com) provides software and consulting to help banks and mortgage bankers manage portfolio and balance sheet risk.
• As part of the Mortgage Banking software development team, converted existing FoxPro-based functionality to new .NET implementation. Created and supported a set of classes to ease test-driven development from the “UI in.” Redesigned and reimplemented the mortgage pooling function, including integrating with a Linear Program solver to optimize assignment of loans to pools.
• Served as team Agile practices advocate and expert to the Mortgage Banking team.
• As part of the leadership team for a cross-company training and discussion group, identified and presented technical topics to the technical staff; topics ranged from design patterns to pros and cons of testing techniques and tools to design-by-contract as a design technique. From 2005 to 2007 (2 years) Greater Chicago AreaSystems Architect @ • Provided initial architecture and leadership for the port of a large Health Care Management software product. The project is converting the original C++ / JavaScript / VB system to a J2EE compliant architecture to be deployed on WebSphere and either SQLServer or Oracle, with different target deployment profiles for different customers. The original system contained over three million lines of code. The project involves over seventy direct participants.
Designed and executed a set of values exercises to converge the pre-existing waterfall world view with Agile practices. Designed and executed a Java / XML proof-of-concept for a critical core component. Guided development teams in the use of the corporate architecture. Inventoried skills needed to work on the project and created a plan for making sure that the work teams acquired and maintained the correct skills. Defined how FIT-based acceptance tests would be written and developed initial fixtures for testing.
• Architected the Service-Oriented Architecture (SOA) for a large start-up (see www.destinyusa.com), including the target Enterprise Service Bus (ESB) and package selection and integration strategies. The scope included all systems, from retail Point of Service through Supply Chain Management to integration with a foundational Enterprise Application Suite.
• Led the implementation of an all-systems technology replacement for a mid-sized ($100 million) provider of malpractice insurance in the Midwest. This project replaces quoting, policy, underwriting and claims systems with new custom .NET equivalents. The development team of over twenty people included an off-shore team in Bangalore. The implementation is a full Windows Forms rich client using Web Services. Distributed Agile software development methods were introduced to the client and used throughout the project. From 2004 to 2005 (1 year) Greater Chicago AreaDeveloper @ Converted an options trading back end from direct socket communications to Web Services for communication, and implemented ADO.NET to talk to the trading records system on a SQL Server cluster From 2004 to 2004 (less than a year) Greater Chicago AreaDirector of Software Engineering @ Formed and led small ad hoc teams across component and company boundaries to create new product features, create integrated products and to solve cross-component problems.
• Proved the viability of the OEM business model and secured substantial revenue (1/3 of product revenue in that time period) from the first OEM customer by leading a cross-company team that defined how the products would fit together, worked out the design and coding details to the API level and delivered custom subcomponents into the customer’s architecture on a tight, fixed schedule. Set up and led requirements and design workshops with customer marketing, development, design and QA, and wrote proof-of-concept code with customer development engineers. The combined product was a major success when rolled out at the customer’s user conference in November of 2003. This was part of a project that appeared as a case study in the second Scrum book.
• Met a key contractual deliverable on an extremely short timeframe and removed a market obstacle by integrating a third-party workflow engine into the server and Web application. Designed and executed a JAD requirements process that included senior management, technical management, product marketing, QA, documentation and the development team to drive to agreed-upon requirements in less than two weeks. Wrote the user requirements and design documents and set up the increment schedule. Implemented the integration software framework and mentored team members on its use. Improved progress visibility and quality and hit the delivery date to QC by introducing continuous builds, quality checks at check-in, test driven development and other eXtreme Programming techniques, despite high turnover within the feature team. From 2002 to 2003 (1 year) Greater Chicago AreaSenior Architect @ Solved cross-component problems, especially performance problems across the combined half million source statements of the collaboration server and Web application.
• Reduced response time on Web pages by a factor of 10 and client-server call counts by a factor of 100 when the response time and throughput of the first release of the product was unacceptably slow. Further reduced complex page response times below a customer-mandated two seconds by prototyping a JSP-based design for those pages with the Web application team lead. From 2000 to 2002 (2 years) Greater Chicago AreaSenior Software Engineer @ Starting with the C++ version, added features to the content management server, including the ability for the customer to change the schema of managed objects without changing server code and a customizable privileges subsystem. Converted server code from C++ to Java.
• Reduced coding time and errors in the client-server messaging subsystem by writing a code generator for the message marshalling code. The code generator takes XML descriptions of APIs to be remoted and generates interoperable Java and C++ code for both the client and server, which only needs to be copied into the correct packages / directories (no hand modifications required.) From 1999 to 2000 (1 year) Greater Chicago AreaDirector II (Principal Architect) @ Defined and reviewed architectures and designs for projects and programs across the $60 million / year Midwest region and coordinated national technical initiatives with the corporate technical leadership.
• Helped reduce the number of “red” projects (those facing serious cost or time overruns or potential legal action) in the Midwest region from seven to zero in about a year while maintaining revenue growth in line with the company’s. As part of the Midwest region’s practice leadership, reviewed or created estimates, approaches and risk assessments for strategic or large projects (estimated lifecycle revenues in excess of $5 million), especially distributed object-oriented projects with complex architectures.
• Removed final barriers to a $3 million+ phase sale by helping a client CIO’s architecture team understand how a project’s architecture fit with their evolving corporate architecture.
As chief architect of a major program for an international bank:
• Worked with the client’s management and senior development staff to articulate architecture drivers, divide their architecture into domains, identify technological alternatives within those domains, and select technological directions to pursue.
As project lead:
• Designed the architecture, managed the development team and did hands-on coding for a proprietary mergers and acquisitions financial workstation (C++, Windows NT, socket-level communication for price feeds, proprietary valuation algorithms and multiple threads of execution.) The product was delivered two months early, with more than the required feature set, resulting in payment of a performance incentive. It was the first application in the division to successfully pass Y2K testing. The client built a new line of business on the product, which is now used globally to manage approximately $100 million. The technical architecture was reused, reducing the delivery time for the first version of the next product from months to weeks. From 1997 to 1999 (2 years) Greater Chicago AreaDirector I @ Defined architectures for large, complex, object-oriented projects. Provided design and architectural guidance for projects within the Chicago office.
• Senior technical member of a sales team that initiated a line of business with the highly technically competent and aggressive equities risk management division of a large international bank. Starting from the initial project to convert an Objective-C / NEXT-based system to Java as part of Y2K conversion, the program grew to over fifty consultants and billed more than $10 million / year. The program included many complex and diverse projects which were successfully delivered on time and on budget to fixed price and schedule contracts. The largest projects involved the risk evaluation engine, which included a massively parallel risk engine farm (using a scatter-and-gather design to spread the CPU load, especially for executing the custom theoretical valuation models) that ran nightly, but also allowed for real-time evaluation of baskets of instruments against different yield and risk curve assumptions. From 1997 to 1998 (1 year) Greater Chicago AreaSystem Architect @ This joint venture among four Blue Cross / Blue Shield plans maintained and extended the MVS-based adjudication engine that the member companies shared. The Plans also were looking for a way to move some new and existing functions to an object-oriented client-server architecture.
System Architect, Chicago, IL (1997)
Responsible for upgrading the architecture of the client-server product, which was Windows C++ with an object database back end, and working with the member Plans to re-evaluate how the client-server product would integrate with their businesses. From 1997 to 1997 (less than a year) Greater Chicago AreaResearcher @ The Center for Strategic Technology Research unit within Accenture was responsible for identifying technology trends and opportunities that could influence Accenture’s business direction. This included internal and externally-funded programs of technology research and development.
• Designed the architecture for a four-year, $2 million client research project and implemented key parts using C++, an object-oriented database and an early Object Request Broker. Responsible for hire/fire decisions for development staff. Per the funding agencies goals, it also resulted in multiple publications; see for instance, “Managing Object-Oriented Framework Reuse,” Sparks, Benner, Faris – IEEE Computer, September 1996; and Pattern Languages of Program Design 2, Vlissides, 1996, especially Chapter 5 “Implementation Patterns for the Observer Pattern” by Jung J. Kim and Kevin M. Benner. This project was awarded four consecutive 100% Award Fees by the funding agency for technical and administrative excellence. From 1995 to 1997 (2 years) Greater Chicago AreaSenior Architect @ The FCP unit within Accenture was a separate $100 million, 500 person software product business with a staff of 200 developers that sold client-server CASE tools and multi-platform production architectures.
Reporting to the Director of Architecture, responsible for feature direction and product quality, with emphasis on the components of the Production architecture. From 1993 to 1995 (2 years) Greater Chicago AreaSenior Methodologist @ This $100 million, 1000-person company provided CASE tools based Information Engineering (IE.)
• Interpreted methodology documents, gathered user requirements, set scope and schedule, guided user interface design, software design, documentation and training materials for features within the Analysis Workstation of the 2.7 release. From 1990 to 1993 (3 years) Development Engineer @ This $30 million / year public – private partnership developed technologies so that they could be easily used in Michigan’s manufacturing companies, especially the automotive companies and their suppliers.
• Wrote C code for various projects, including a conformance test for a standards-based protocol stack. From 1985 to 1990 (5 years)
Masters, Computer Science @ University of Michigan From 1979 to 1991 Steve Sparks is skilled in: Agile, OOP, C#, Java, TDD, Scrum, Software Development, .NET, Distributed Systems, SQL Server, Trading Systems, Extreme Programming, Optimization, Risk Management, Architecture