See About for “just the basics.”
A Little More of My Story
My appetite for continuous learning has been focused over the last nine years on applying lean-agile principles and knowledge-based product development, the kanban method (flow/queuing), and eXtreme programming (XP) practices to software development, along with using object-oriented designs, pattern-oriented software architectures, and domain–driven design.
Since 2004, I’ve been learning and assisting teams with applying lean-agile processes and practices like Scrum and XP. In 2007 I began learning and teaching others about adding kanban (flow/queueing) methods to software development as well, to further optimize and evolve their processes and practices. My software architect/developer experience allows me to contribute as an embedded team member on the development floor from planning, story development, design, and thru implementing (TDD, unit testing, refactoring, pairing, test automating, continuously integrating, etc.).
My road to lean-agile processes and practices started when I was hired to help develop a service-oriented structural engineering design engine. While the development team had a strong knowledge of structural engineering and developer tools, they needed help managing the complexity of the business domain and problem space. I started teaching them what I knew well then, the concept of separating concerns at a macro level (layered architecture, physical tiers) and how to do stateless development.
This helped, yet our code was still hard to test, understand, or change. In looking for a solution I “discovered” design patterns and worked to provide informal in-house training, then formal training, which included how and why these design patterns worked (foundational OO design principles). Fortunately, this training also touched on XP practices such as automated unit testing and TDD, which we adopted, and soon added continuous refactoring, automated integration testing, continuous integration, co-location, pairing, spikes, iterative development, incremental delivery, and embedded product owners/customers. These improved our software development process, but there were still significant issues.
By now, several of us were exploring lean-agile concepts, but I also began looking into applying principles from theory of constraints, queuing theory, and flow. This lead me to begin emphasizing kanban methods in our software development: visualizing workflow, JIT planning, limiting work in progress, managing lead times and cycle times, determining average completion rates, and establishing decoupled cadences for implementation, delivery, planning, and process improvement efforts. This ultimately resulted in the successful delivery of the strategic sharable service-oriented structural engineering design engine while also significantly improving the group’s software delivery capabilities.
This professional summary reflects my passion for learning and helping others to learn, seeking how and why things work, and my desire for continuous improvement. Since 2004, I’ve learned and successfully contributed in three different technical industry domains, and seek challenging opportunities where my technical background and software development experience can contribute and provide further growth.
On the personal side, I enjoy watching (analyzing) football games, at any level, studying the strategies and tactics the teams apply, along with turkey hunting, dove hunting, and fresh-water fishing, which all include taking my daughter and son. When not enjoying the outdoors, you’ll find me, my wife, and children playing games, reading, and spending lots of time together.