• Naresh Jain
    Naresh Jain
    schedule 2 months ago
    Sold Out!
    45 mins
    Experience Report
    Advanced

    By working with some of the most successful tech-product companies, I realised that code is NOT an asset, it's a liability. We should strive hard to minimise code. In 2011, when I started to hack on ConfEngine, I questioned my belief in TDD. I had also started playing around with APL style Array-Programming and Functional Programming. I felt, may be, I was getting a bit too dogmatic about TDD and automated tests in-general. As a thought experiment, I decided to build ConfEngine without ANY automated test. At first, it was really scary not to have the safety-net of automated test (something I took for granted for almost a decade.)

    As I scaled ConfEngine without any automated tests, I had certain interesting realisations:

    • How to embrace Simplicity and Minimalism WITHOUT automated tests
    • Why Throwing Away Code frequently helps you achieve a better decoupled-design and how this helps in better experimentation
    • Fear of Refactoring WITHOUT Tests is over-rated (Good IDE and safe-refactoring techniques can take you a long way)

    ConfEngine grew from a pet-project to a 8 member product team. It has over 60K users and has done financial transactions worth over half-million USD. And we continue to push forward without ANY automated tests. Its not perfect, but it has certainly helped me challenge my dogma around TDD.

    Background: In 2001, I stumbled upon the Test Infected paper. For the next 2 years, I struggled to really apply the test-first concept on real projects. Finally in 2003, I felt that I had fully internalised TDD and was able to apply on almost all projects. Then I started playing around with FIT and FitNesse, using ATDD on some of the projects. In 2006 I published "Avatars of TDD" paper in which I explained various styles of TDD and its design implications. Until 2011, I was a very big advocate of TDD, ATDD and BDD. I still like those practices, however I would not recommend it in all projects.

  • Liked Stanly Lau
    keyboard_arrow_down

    Mentoring technical practices, what works and not

    Stanly Lau
    Stanly Lau
    schedule 4 months ago
    Sold Out!
    45 mins
    Talk
    Intermediate

    Technical practices like refactoring and TDD (Test-Driven Development) have become mainstream in software development. However, software developers I met in many companies are either oblivious or have a different interpretation. My interest is to help developers adopt technical practices and being a mentor has played a big part. Through the years I've tried many ways to maximise the effectiveness of mentee's learning and also brings many challenges and discoveries. In this talk, I'll share the experiments I tried and hope it'll inspire you to help others improve their technical practices.

  • Liked Joshua Kerievsky
    keyboard_arrow_down

    The Art of Refactoring

    Joshua Kerievsky
    Joshua Kerievsky
    schedule 4 months ago
    Sold Out!
    480 mins
    Workshop
    Intermediate

    Code that is difficult to understand, hard to modify and challenging to extend is hazardous to developers, users and organizations. Refactoring, or improving the design of existing code, is one of our greatest defenses against such code. Yet many programmers lack formal training in refactoring. Furthermore, management tends to lack knowledge about the value of refactoring. This one-day workshop is designed to address these needs. You’ll learn the art of refactoring safely, when, why and how to refactor hazardous code, strategies and tactics for refactoring, as well as refactoring to patterns. You’ll also learn how refactoring impacts business concerns and vice-versa. Come to this class prepared to code with a pair and a mob as we refactor example code and help you learn the art of refactoring.

  • Liked Nayan Hajratwala
    keyboard_arrow_down

    Refactoring Legacy Code Guided by Simple Design

    Nayan Hajratwala
    Nayan Hajratwala
    schedule 6 months ago
    Sold Out!
    45 mins
    Demonstration
    Intermediate

    Are you frustrated by the many trivial examples that show up when you google "refactor legacy code"? How do you translate these examples to your real-world code base? Sometimes it's just easier to give up on the refactoring and increased test coverage, reserving these techniques for the ever elusive greenfield project. To help you with this dilemma, Nayan will walk through a real legacy Java code base, and perform some safe refactorings required to bring the code under test. All of this will be done under the guidance of the Four Rules of Simple Design (Pass the tests, DRY, Reveal intent, Minimize moving parts).

Sorry, no proposals found under this section.