London vs Chicago

Adopting an integrated approach to TDD.

assistant Learn More
DevOps

Software Delivery
with Containers

Imagine deploying and running your applications and services in an environment that is fully-automated, self-healing, and scaled based on incoming demand, in the blink of an eye, on a footprint smaller than any virtual machine (VM) on the market.  Technology companies, such as Google, have been doing this for well over a decade.  This platform is called a container and it is the biggest revolution in DevOps to date.

subject Read Article
DevOps

Quantifying Software Quality

As software development teams look for ways to improve their products and services, they often look at improving time to market, better prediction of release schedules, improving customer satisfaction, and raising overall software quality.  Software “quality” can mean a lot of things to different people.  But quality goes way beyond how well a product functions or how many bugs it contains.

subject Read Article
DevOps

Managing Technical Debt

The manner in which technical debt is managed can give a company a competitive advantage when it’s most needed or destroy a well conceived product.  When incurred properly, technical debt can greatly decrease time to market, providing a short-term advantage over the competition.  But if that debt is not paid off quickly, it will slowly, yet surely, erode the quality and the value of your software.

subject Read Article
assistant Development Tip

London vs Chicago

Now that you’ve mastered the basics of Test-Driven Development, consider the two primary schools of TDD.  The London School takes an outside-in, behavior-based approach, which fosters Command-Query Separation, and relies heavily on test doubles — ceding brittle tests.  The Chicago School takes an inside-out, state-based approach, which promotes high cohesion, with a greater emphasis on design patterns — although YAGNI is a risk.

Learn More
assistant Development Tip

Trunk-Based Development

Embrace continuous delivery by frequently integrating small batches of work directly into the source control trunk (at least once daily).  Short-lived branches can be used to implement pull requests or to isolate release candidates, but should never persist longer than a day.  Utilize Feature Toggles to turn off features that are not yet ready for release.  Pull the Andon Cord and fix regression errors immediately to keep the trunk in a healthy and deployable state.

Learn More
assistant Development Tip

Developer or Engineer

Are you a Software Developer or a Software Engineer?  There is a difference.  A Developer will write code that fulfills the customers' needs today.  An Engineer will build a solution that first fulfills the customers' needs for tomorrow, then only second, fulfills their needs for today.  Engineering a solution requires understanding which qualities need to be optimized and applying appropriate engineering principles to best achieve that optimization.  Some qualities are diametrically opposed and...

Learn More
school Training

The Technical Discipline of Being Agile™

Agile was created by 17 technical leaders in the software industry who crafted a lightweight development process that was intended to heal the divide between business and developers.  They also established technical norms that would mitigate common issues such as excessive cruft, tightly coupled architectures, rigid code, immature test suites, technical debt, along with other anti-patterns that slowed delivery of high quality software.  This course examines the characteristics of good and bad software and explores technical practices that resolve the issues and enable teams to deliver great software fast.

Learn More schedule 6 Hours
school Training

Managing Technical Debt

To maintain business, market, and technological advantages, you must effectively manage technical debt incurred within all artifacts that define, implement, and validate your software.  This course examines what technical debt is, how it can benefit your organization and give you an advantage over your competition, how and when it should be (intentionally) incurred, and how and when it should be paid off.

Learn More schedule 2 Hours
school Training

Principles & Practices of Test-Driven Development

This course teaches the principles and practices of Test-Driven Development (TDD) and demonstrates how proper software design evolves through application of the eXtreme Programming principle of Test First.  Unit testing principles are introduced, along with a thorough discussion on the benefits of TDD.  An application is developed (from start to finish) during this course to explain step-by-step and demonstrate first-hand how a high quality, testable design evolves by applying the three laws of Test-Driven Development.

Learn More schedule 90 Minutes
computer Code Kata

Prime Transformation

A good TDD developer is one who can apply transformations well.  What are transformations?  They are the opposite of refactoring.  While refactoring is changing the structure of code without changing its behavior, transformations are changes to code that generalize behavior without changing its structure.  In this kata, you will create a function to calculate the prime factors of a given integer using TDD while applying transformations to pass the tests.

Get Started

Doug Klugh

Software Craftsman

Software Development and DevOps Leader, Microsoft developer, and Agile Coach.

;