AGILE Problem SOLVING

Summary: Drawing on his “30 Days Challenge” experience on HackerRank, the author walks through the agile problem-solving process in stages: trial and error, a solution that works but falls short, reaching the best solution, and continuous improvement.

Message 1 : There is always a better way.

Message 2 : Every line of code you add is waste.

Message 3: Purpose and goals matter a great deal and you need them, but the goal is not the end of the road; it is a new reference point. It keeps you focused and on track.

Six or seven months ago, during the pandemic, I set out on the 30 Days Challenge on HackerRank and completed it.

Once you understand the problems, you start working on solutions. You can see one of the problems below.

Problem : Maximum Subarray Sum

1. FAILED & FIX

As I write code, I experiment; every time I compile, I spot my mistakes and fix them.

Remember the motto: “test, fail, fix, repeat“

This is also one of the XP (Extreme Programming) practices: TDD (Test Driven Development)

2. WORKING BUT …

Ah, if only there were no “buts” 🙂

After some trial and error, I found a “Working Software/Solution“. Awesome, I was thrilled.

But…

It produced the expected result, but the customer wasn’t happy 😉 because the performance was poor. The 32-line code was timing out.

While trying to make the code faster, I came up with a 28-line version, but it still timed out. Still, four lines is four lines. 🙂

Because every line you add is waste.

3. Done, Success

Then I did some research, read the forums, looked at solutions, and it clicked.

Result: the best-performing version came out at 13 lines.

If I hadn’t seen or found that final version, I would have written to HackerRank to tell them the compiler was faulty 🙂

Yes, until something better comes along, the best you have is the “working software/solutions” in your hands, just as the second value of the Agile Manifesto puts it.

Don’t assume there’s nothing better. Down the road, the solution might shrink to a single line 😉

“return Math.maximumSum(sumArray, m);“

By now you may have said, somewhere along the way, “Don’t touch working software.” Could that be the result of painful experiences from the past, our fear of making mistakes, and a lack of trust?

4. Keep GOING

Here’s what matters: get to know yourself and recognize your potential, set out on a good journey, explore, and keep learning and growing.

As long as your heart keeps beating, this cycle goes on – and it should.

This is also what lies at the core of Lean, Kanban and the Agile approach, the Agile Mindset and other teachings: “Cycles” and “Continuity“.

In other words, the aim is to always be on the road. To learn along the way, to improve continuously, to complete intermediate goals (Done) and, in doing so, to eliminate inefficiencies.

Lean, Kanban, Agile Frameworks

As your toolkit fills up, your competence grows, and finding solutions to complex problems gets easier; you start experimenting right away, and it becomes as fun as playing a game. You go looking for problems to solve.

Some call this experience, some call it being an expert or a master; titles are granted, ranks are pinned on. Then the titles aren’t enough and new ones are invented: expert, senior expert, principal, senior principal 😉 Then the roles and responsibilities for each of these titles get demanded, and are forced out into the open a few times. 😉

We all know that, fundamentally, titles don’t matter at all.

There’s just you. Does it need to sound fancy?

“Developer” : “One who develops” and always an “Amateur“

Erkan, I’m talking to you! 🙂 What do you say?

 

 

Frequently Asked Questions

According to the article, what are the stages of the agile problem-solving process?

Four stages: 1) Failed & Fix (test, fail, fix), 2) Working But… (a solution that works but is inadequate/underperforming), 3) Done, Success (reaching the best/best-performing solution), 4) Keep Going (continuous learning and improvement).

How does TDD (Test Driven Development) relate to this process?

The author connects the motto “test, fail, fix, repeat” with TDD, one of the XP (Extreme Programming) practices.

Which value of the Agile Manifesto is emphasized in this article?

As stated in the second value of the Agile Manifesto, the emphasis is on moving forward with the “working software/solution” you have until something better is found.

Related Posts


Author: Erkan Sarıkaya — Enterprise Agile Coach, founder of GONEX. He writes on enterprise agile transformation, Scrum and agile leadership coaching. You can learn more on the About Us page and read his other posts.