By the way…

Springtime was Jack’s favorite time. He loved the fact that the days were getting longer. The sun was still shining when work was over – ideal for a barbeque with friends. And that’s what he had just planned for next

Read More

Managing Technical Debt with Agile

1. Types of Technical Debt An outline to use when discussing technical debt: Unintentional Intentional: (a) Short-term: Only if there is the commitment to schedule, prioritize, and fix soon (e.g., in the next sprint). (b) Long-term: Only if the commitment

Read More

Scrumban ‒ Being Differently Agile

Executive summary: Anyone who has worked for quite some time in the Agile environment would not have walked out without tasting the spices of Scrum and Kanban as part of their day-to-day activities. Scrum is best suited to products and

Read More

Micrognosis: A Pre-Agile, Agile Story

I want to share a story from a galaxy far, far away. It has been on my mind quite a bit of late, as I tell it in some of my agile classes. However, I am unsure whether the students

Read More

Behavior-Driven Development – Making TDD more accessible and effective for better Agile analysis

In addition to increasing complexity, the changing dynamics of technology, and meeting the quality expectations of prospective clients, the main underlying challenge in modern IT organizations nowadays is managing the scope and requirements of software projects. The challenge is not

Read More

Agile Business Analysis with Behavior-Driven Development (BDD): INVEST to be SMART

In recent years the agile movement has greatly expanded and is now state of the art with its highest priority being to satisfy the customer through early and continuous delivery of valuable software. Its primary measure of progress is working

Read More

Gilb’s Mythodology 12: Rational Dynamic Value Prioritization for Agile Projects

We think that current agile methods for prioritization can be improved. Let us save you the time to read this paper. Here is the message: You need to prioritize each sprint so as to maximize the set of measurable values

Read More

Jump-starting with TDD

Test-driven development (TDD) is one of the most desirable skills among software developers today and rumor is that within a few years developers without this skill will be unemployable [1]. There have been many books and presentations at conferences about its core concepts, but they rarely guide developers as to how to adopt it. This article will serve as a guide for learning more about TDD – whether you are an absolute beginner or already have some experience with TDD.

Read More

Load Testing at Netflix: Virtual Interview with Coburn Watson

I exchanged several e-mails with Coburn Watson (@coburnw), Cloud Performance Engineering Manager at Netflix, and he was kind enough to share with me some very interesting information about load testing at Netflix. I believe that this information is too valuable to keep hidden and decided to share it in the form of a virtual interview (of course, after asking Coburn’s permission).

Read More

TDD – a paradigm shift within the software development process for the Agile Environment

Test-driven development is a mechanism for designing software. By using this development style, developers first gather requirements and then formulate and implement a set of executable tests that completely characterize those requirements, and finally those tests are executed, one by one, by writing the requisite target application software. Test-driven development (TDD), is also referred to as test-driven design, because it adheres to and works based only on the underlying concept “get something working now and perfect it later”. Test-driven development (TDD) is considered to be a novel approach to software engineering because it consists of short development iterations in which the test case(s) covering a new functionality are designed first and then the necessary implementation code to pass these tests is implemented afterwards. Finally the correctness of the code is verified by performing similar tests against the same test cases. Further, in the subsequent phases, the identified defects are fixed and components are refactored to accommodate changes. This process is iterated as many times as necessary until each unit is functioning according to the desired specifications.

Read More