Kirk Knoernschild

Software Developer & Mentor

Kirk is an industry analyst at Burton Group. For 15 years, he has worked in the trenches on real software projects. He takes a keen interest in design, architecture, application development platforms, agile development, and the IT industry in general, especially as it relates to software development.

In 2002, Kirk wrote the book Java Design: Objects, UML, and Process, published by Addison-Wesley. He has also written numerous whitepapers and articles, including The Agile Developer column for The Agile Journal. Kirk is the founder of Extensible Java, a growing resource of component design pattern heuristics for Java that can easily be applied to most other platforms, including .Net. Kirk has trained thousands of software professionals, teaching courses on UML, Java J2EE technology, object-oriented development, component based development, software architecture, and software process. He enjoys hacking in a variety of languages, including Java, .Net, Ruby, and PHP.

Blog

Programming Language Classification

Posted Monday, March 30, 2009

Below is a table that sho more »

OSGi Discontent - Part 2

Posted Thursday, March 26, 2009

For the first part of th more »

OSGi Discontent - No Migration Path!

Posted Wednesday, March 25, 2009

OSGi has emerged as the de fact more »
Read More Blog Entries »

Presentations

Grass Roots Agile

We have been taught that the best way to solve the tough challenges inherent to software development is by stabilizing requirements early, followed by implementation and verification. Yet we continue to fail. We fail not because we do not try. more »

Big Teams & Agility

We know agile methods work for small teams. But applying agile practices on larger software development efforts is difficult. There is no one-size-fits-all magic agile method we can apply. more »

Agile Architecture

Developing large software systems is inherently difficult. Because of this, we attempt to make the right architectural decisions early due to the significant anticipated cost affiliated with making incorrect decisions. But this contradicts agile practices more »

Grass Roots Agile

close

Kirk Knoernschild By Kirk Knoernschild

We have been taught that the best way to solve the tough challenges inherent to software development is by stabilizing requirements early, followed by implementation and verification. Yet we continue to fail. We fail not because we do not try. We undergo complex process improvement efforts. We create detailed artifacts. We follow detailed plans. We establish steering committees and hire teams of architects. We fail because the approach is flawed. This session examines what teams can do to increase agility in traditional environments, and presents techniques that help drive agile bottom up.



In this session, I’ll talk about what development teams can do to increase their agility in traditional waterfall environments, and will present techniques that help drive agile bottom up. I’ll talk about the key steps involved in increasing development agility. Topics include: • Agile and the political ramifications of the term. • Examining why organizations fail in their process improvement efforts. • Increasing agility by attacking process pain points. • Starting the project the right way by writing code early. • Infrastructure and lightweight tools that help increase agility. • Bridging newly adopted agile practices to existing organizational processes. • Effective team structure and organization for large teams (> 100 people). • Starting small, gaining momentum, and avoiding big process improvement efforts. • Practices offering the greatest reward for the least risk. The purpose of this session is to provide actionable items that will allow attendees to immediately inject practices that increase development agility.


Big Teams & Agility

close

Kirk Knoernschild By Kirk Knoernschild

We know agile methods work for small teams. But applying agile practices on larger software development efforts is difficult. There is no one-size-fits-all magic agile method we can apply. The experience of the team, the organizational culture, existing processes, and much more affect how we can increase agility on large teams. This session explores how agile has been applied on team in excess of 100 developers, which practices work well, and which don't. The result might surprise you!



In this session, I’ll talk about how agile practices can be used on large teams, and which practices work best and which don't. Topics include: • Structure of the teams • The role of roles and responsibilities • How iterations hinder progress • Necessary infrastructure components supporting the development lifecycle • Establishing continuous flow and developing rhythm • Bridging newly adopted agile practices to existing organizational processes. • The absolute, #1, required, necessary practice! • The importance of architecture The purpose of this session is to provide actionable items that will allow attendees to improve the agility of large development efforts.


Agile Architecture

close

Kirk Knoernschild By Kirk Knoernschild

Developing large software systems is inherently difficult. Because of this, we attempt to make the right architectural decisions early due to the significant anticipated cost affiliated with making incorrect decisions. But this contradicts agile practices which have taught us to embrace change. So how do agile and architecture come together? Conceptually, the goal of agile architecture must be to eliminate the architectural significance of change by crafting software that can easily adapt to change. Ultimately, an agile architecture is a modular architecture. This session presents patterns for modularizing large software systems.



In this session, I'll talk about what development teams can do to increase architectural resiliency of their software applications. Topics include: • Where and when architecture is important • Exploring modularity • How to design modular applications today • The importance of insulating design decisions • Identifying a system's joints and why it's important • Preventing software rot through dependency management • Patterns to increase architectural resiliency through modularity The purpose of this session is to provide actionable items that will allow attendees to immediately inject practices that increase development agility.