About   Slides   Home  

Managed Chaos
Naresh Jain's Random Thoughts on Software Development and Adventure Sports
RSS Feed
Recent Thoughts
Recent Comments

Problem Solving Techniques For Evolutionary Design

Thursday, October 10th, 2013

At the Agile Goa conference, I ran a small workshop to help participants understand the core techniques one should master to effectively practice evolutionary design while solving real-world problems.

Key take aways:

  1. Eliminate Noise – Distill down the crux of the problem
  2. Divide and Conquer – Focus on one scenario at a time and incrementally build your solution
  3. Add constraints to future simplify the problem
  4. Simple Design – Find the simplest possible solution to solve the current scenario at hand
  5. Refactor: Pause, look for a much simpler alternative
  6. Be ready to throw away your solution and start again

Avatars of Test Driven Development (TDD)

Tuesday, March 19th, 2013

It’s easy to speak of test-driven development as if it were a single method, but there are several ways to approach it. In my experience, different approaches lead to quite different solutions.

In this hands-on workshop, with the help of some concrete examples, I’ll demonstrate the different styles and more importantly what goes into the moment of decision when a test is written? And why TDDers make certain choices. The objective of the session is not to decide which approach is best, rather to highlight various different approaches/styles of practicing test-driven development.

By the end of this session, you will understand how TTDers break down a problem before trying to solve it. Also you’ll be exposed to various strategies or techniques used by TDDers to help them write the first few tests.

Outside In – Behaviour Driven Development (BDD)

Tuesday, March 19th, 2013

Recently at the Agile India 2013 Conference I ran an introductory workshop on Behavior Driven Development. This workshop offered a comprehensive, hands-on introduction to behavior driven development via an interactive-demo.

Over the past decade, eXtreme Programming practices like Test-Driven Development (TDD) and Behaviour Driven Development (BDD) have fundamentally changed software development processes and inherently how engineers work. Practitioners claim that it has helped them significantly improve their collaboration with business, development speed, design & code quality and responsiveness to changing requirements. Software professionals across the board, from Internet startups to medical device companies to space research organizations, today have embraced these practices.

This workshop explores the foundations of TDD & BDD with the help of various patterns, strategies, tools and techniques.

Inverting the Testing Pyramid

Tuesday, March 19th, 2013

As more and more companies are moving to the Cloud, they want their latest, greatest software features to be available to their users as quickly as they are built. However there are several issues blocking them from moving ahead.

One key issue is the massive amount of time it takes for someone to certify that the new feature is indeed working as expected and also to assure that the rest of the features will continuing to work. In spite of this long waiting cycle, we still cannot assure that our software will not have any issues. In fact, many times our assumptions about the user’s needs or behavior might itself be wrong. But this long testing cycle only helps us validate that our assumptions works as assumed.

How can we break out of this rut & get thin slices of our features in front of our users to validate our assumptions early?

Most software organizations today suffer from what I call, the “Inverted Testing Pyramid” problem. They spend maximum time and effort manually checking software. Some invest in automation, but mostly building slow, complex, fragile end-to-end GUI test. Very little effort is spent on building a solid foundation of unit & acceptance tests.

This over-investment in end-to-end tests is a slippery slope. Once you start on this path, you end up investing even more time & effort on testing which gives you diminishing returns.

In this session Naresh Jain will explain the key misconceptions that has lead to the inverted testing pyramid approach being massively adopted, main drawbacks of this approach and how to turn your organization around to get the right testing pyramid.

Agile India 2013 Conference Overview

Thursday, January 31st, 2013

Agile Way of Dealing with Uncertainty in a Complex Adaptive World

Saturday, September 1st, 2012

Recently I facilitated a workshop at the Agile Goa 2012 Conference titled – “Agile Way of Dealing with Uncertainty in a Complex Adaptive World“.

Abstract: It is human nature to look for patterns while solving new problems. We have a dangerous tendency to reuse what we already know to solve the next problem. We rarely discard what we’ve learned; we simply build on top of it. Sometimes this is a useful tactic, but often new problems and their context are slightly (if not vastly) different than the previous ones. And applying our previous way of doing things, will not be best suited for tackling the new problem.

In the software world, we’ve seen a similar desire to find the “one true way”, “the BEST method”, “the silver bullet” to solve all software development problems. Alas, after decades of trying we’ve not found one.

In this workshop, I’ll let you discover why this is not possible and possibly explain how best to deal with this problem. This ideas in this workshop are based on my experience backed by latest research from Cognitive Science, Complex Adaptive System’s Theory and Evolutionary Psychology.


Monkey See Monkey Do – Slides and Video

Friday, June 15th, 2012

At the Agile India 2010 conference, Sandeep and I ran a workshop to shed some light on the kind of aping that’s taking place in the software companies trying to be Agile.

Clearly we don’t have all the answers. Nor do we know the best way to build software in the right way (if there was one.) But we do know one thing:

The right way doesn’t involve mindlessly following practices just because some “expert” says you need to.

In this workshop we took a critical look at various “agile” practices and tried to highlight the dogma and ceremony that has creeped in. We also questioned if the practices defined a decade ago are still applicable? If yes, have they evolved since? What are some of the original creators of these processes practicing today?

Agile Evolution

Friday, June 15th, 2012

How has Agile evolved over the last 12 years?

Agile WTF – Way to Fail!

Friday, June 15th, 2012

This is an introductory presentation on the essence of Being Agile vs. Following Agile. And why being Agile is important? I’ve also tried to show an evolution of Agile methods over the last 11 years and the future of Agile. Also take a sneak preview into what challenges an organizations may face when trying to be agile?

Because I Got Age’il

Saturday, May 26th, 2012

A song dedicated to all the Agile Snake-Oil sales(wo)men.

It’s like I dont care about no process man…
Just hack some more code…ooohh
la da da da la da da la la da da

I was gonna groom the backlog until I got Age’il
I was gonna be at the standup but then I got Age’il
My project is still messed up and I know why (why man?)

‘Cause I got Age’il
Because I got Age’il
Because I got Age’il
La-da-da da da-da da

I was writing clean code before I got Age’il (C’mon y’all, check it out)
I could’a test-first or test-after but I got Age’il (uh uh la la da da)
I’m refactorin’ it next sprint and I know why (why man?) (hey hey)

‘Cause I got Age’il
Because I got Age’il
Because I got Age’il

I was gonna update my burn-down until I got Age’il (say what say what?)
I wasn’t gonna gamble with points but then I got Age’il (uh uh)
Now I’m completely burnt-out and I know why (why man)

‘Cause I got Age’il
Because I got Age’il
Because I got Age’il
La-da-da da da da

I was gonna do my code reviews but I was Age’il (uh, I’m serious man)
I was gonna refactor mercilessly but I was Age’il (uh)
Now I’m a Scrum Master (ha ha ha) and I know why (why man?)

‘Cause I got Age’il
Because I got Age’il
Because I got Age’il
La-da-da da da da

I was gonna go to retro before I got Age’il
I was gonna pay my tech-debt but then I got Age’il (no you wasn’t)
They scrapped my whole project and I know why (why man?)(yeah eh eh)

‘Cause I got Age’il
Because I got Age’il
Because I got Age’il
La-da-da da da da

I was gonna go to work but then I got Age’il (ohh, ohh)
I just got a new promotion but I got Age’il (la da da da da)
Now I’m selling Agile training and I know why (why man?)

‘Cause I got Age’il
Because I got Age’il
Because I got Age’il
La-da-da da da da

I messed up my entire life because I got Age’il (go go go)
I lost my kids and wife because I got Age’il (say what say what say what?)
Now I’m sleepin’ on the side walk and I know why (why man?)
(yeah yeah)

‘Cause I got Age’il
Because I got Age’il
Because I got Age’il
La-da-da da da da

la la da da da da la da da da shoobe do be do wa skibitty do da da da la
get jiggy with it scubbydooby wa ’cause I’m Age’il, ’cause I’m Age’il, ’cause I’m Age’il

    Licensed under
Creative Commons License