Proposed (4)
Liked (33)
Commented (53)
Naresh Jain
Score 529
Naresh Jain

Tech-Startup Founder & Agile/Lean Expert

Agile FAQs

  India

Naresh Jain is an internationally recognized Technology & Process Expert. Over the last decade, he has helped many Fortune 500 companies like Google, Yahoo, Amazon, HP, Siemens Medical, GE Energy, Schlumberger, EMC, Alcatel Lucent, to name a few clients.

Naresh Jain's Startup Icons

Naresh is leading two tech-startups, which build tablet-based adaptive educational apps for kids, conference management softwaresocial-media search tool and a content curation and voting platform. His startups are trying to figure out the secret sauce for blending gamification and social learning using the latest gadgets.

As an independent consultant, Naresh worked with many fortune 500 software organizations and startups to deliver mission critical enterprise applications. Having played various roles of Founder, Agile Coach, Quality Evangelist, Technical Lead, Product Owner, Iteration Manager, Scrum Master, Developer, QA, Recruiter, Build Master, Mentor & Trainer, he is well equipped to help your entire organization to rapidly adapt Agile and Lean methods.

Agile Software Community of India

Naresh founded the Agile Software community of India, a registered non-profit society to evangelize Agile, Lean and other Light-weight Software Development methods in India. Naresh is responsible for conceptualizing, creating and organizing 50+ Software conferences worldwide.

Member since 11 months

Naresh Jain proposed:


Naresh Jain
Naresh Jain
SAMPLE PROPOSAL - Product Discovery Workshop
Naresh Jain
Naresh Jain

Many product companies struggle with a big challenge: how to identify a Minimal Viable Product that will let them quickly validate their product hypothesis?

Teams that share the product vision and agree on priorities for features are able to move faster and more effectively.

During this workshop, we’ll take a hypothetical product and coach you on how to effectively come up with an evolutionary roadmap for your product.

This 90 mins workshop teaches you how to collaborate on the vision of the product and create a Product Backlog, a User Story map and a pragmatic Release Plan.

This is a sample proposal to demonstrate how your proposal can look on this submission system.

Duration: 90 mins
Type:  Tutorial
Level: Beginner
» »
90_mins  
×
tutorial  
×
beginner  
×

product-owner  
×
agileux  
×
workshop  
×
11 months ago by Naresh Jain

Naresh Jain
Naresh Jain
Continuous Deployment for iOS Game Development
Naresh Jain
Naresh Jain

"Release Early, Release Often" is a proven mantra and many companies have taken this one step further by releasing products to real users with every commit a.k.a Continuous Deployment (CD).

Over the years, I've built many web/infrastructure products, where we've effectively practiced CD. However at Edventure Labs, when we started building iPad games, we realized there was no easy was to practice CD, esp. given the fact that Apple review takes a few days.

Our main question was: As mobile app developers, how should we architect/design our apps for CD?

We were a young startup, learning new behavior about our users (kids aged 5-8) everyday. We could not afford any delay in releasing latest, greatest features to our users. To solve this problem, I believe we've built an innovative solution to enable any mobile app developer to achieve CD.

If you are building real products, which have platform/3rd-party dependencies and you want to practice CD, this session is for you.

Duration: 45 mins
Level: Intermediate
11 months ago by Naresh Jain

Naresh Jain
Naresh Jain
Scaling XP Practices inside your organization using Train-the-Trainer Model
Naresh Jain
Naresh Jain

How do you effectively scale skill-based, quality training across your organization?

Over the years, I've experimented with different ideas/models to scaling skill-based training across an organization. In the last 4 years, I've pretty much settled down on the following model. Its very useful when mentoring teams on skills like Test-Drive-Development (TDD), Behavior-Driven Development (BDD), Product Discovery, Writing User Stories, Evolutionary Design, Design Patterns, Problem Solving, etc. I've successfully implemented this model at some very prominent fortune 500 enterprises.

The goal of this workshop is to explore what other successful models organized have used to scale skill-based training in their organization.

Duration: 90 mins
Type:  Workshop
Level: Advanced
11 months ago by Naresh Jain

Naresh Jain
Naresh Jain
Agile MythBusters
Naresh Jain
Naresh Jain

As the popularity of Agile methods have grown, so have the misconceptions or myths associated with Agile also grown. These myths get even more glorified when we talk about them in the offshore or distributed context. And to make matters worse, you can throw in a fixed-price contract spanner into the engine.

Worry not! In this fun-filled activity, we'll collect facts from the participants that they believe are true and then we'll declare them as confirmed or busted after an interactive (heated) discussion.

Duration: 45 mins
Type:  Workshop
Level: Advanced
4 months ago by Naresh Jain


Naresh Jain liked:


Prasanna Vaste
Prasanna Vaste
Should we stop using Story Points and Velocity?
Prasanna Vaste
Prasanna Vaste

On Agile projects we estimate user stories in order to allow team to

  1. 1. Track velocity
  2. 2. Decide scope for the Iteration
  3. 3. Help Prioritize stories
  4. 4. Help Release planning

But most of the time we faced issues with estimation. It takes lot of time in estimating user stories, managers tend to relate estimate to number of days it will take to complete the story, in some teams estimate is equal to deadline. Most of the teams which use story points to estimate the work face these issues. This results in lack of confidence on development team when stories are taking more time to complete.

Here I am going to talk about better alternative for both the suppliers of software products (financially and ethically) and their customers (internal and external). This alternative is being used in real companies delivering to real customers with great effect where team uses count of stories completed in an Iteration as measure of progress. Will talk about how this alternative can be used to track velocity, prioritize stories, planning Iteration and for release planning.

I will share some exmples from my past projects where team did not use story points/velocty but used count of stories completed in Iteration to measure progress and also as best indicator of future performance.

Duration: 20 mins
Level: Beginner
11 months ago by Prasanna Vaste

Bhasker Kode
Bhasker Kode
Writing and improving tail recursive functions
Bhasker Kode
Bhasker Kode

What is tail recursion?

Snippets from a few languages

Design choices around recursion

What kind of functions can be made tail-recursive? 

How do you profile such improvements?

 

 

Duration: 45 mins
Type:  Talk
Level: Beginner
» »
45_mins  
×
talk  
×
beginner  
×

recursion  
×
profiling  
×
1 month ago by Bhasker Kode

Roy Nuriel
Roy Nuriel
The Quality Assurance Journey - From Waterfall to Continuous Delivery
Roy Nuriel
Roy Nuriel

In the past several years we have seen more and more organization taking the decision and moving their development divisions to adopt Agile methodology. In most cases the change starts with a POC of a new and – in most cases – small project that validates the ability of the organization to make the shift to Agile. In many cases the development team takes the lead: changing the process, moving to unified teams, selecting which Agile practice to adopt, etc.

In this session I will share how we made the shift, while focusing on the change in our quality process.

As an R&D group that develops an Agile solution (HP Agile Manager), we wanted to get it right. We changed the way in which we develop software from waterfall to Agile, and built a process to support the teams in a complex and large enterprise. While previously we were accustomed to delivering releases in 1-2 year cycles, we now operate within a SaaS model where we update our production environment on a weekly basis. 

We have experimented with the same process that our customers are going through and, as a result, we adapted the way our QA engineers work. In accordance with their new role, we gave them a new title – Dev Testers.

Here are some of the dilemmas we faced:

-          What are the differences between "Dev Tester" and "QA Engineer"?

-          How can we measure quality in 2-week sprints?

-          What needs to change when testing a SaaS solution that is delivered on a weekly basis?

-          When and how should load testing be performed?

-          Automated v. manual testing

-          What testing should be part of the CI process?

-          How do offshore Dev Testers take part in our Agile practices (e.g. daily meetings)?

We dealt with all of these questions, and I would like to share the lessons we learned, our conclusions, and some of the challenges that we still face.

Duration: 45 mins
Type:  Case Study
Level: Intermediate
»
beyond-agile  
×
»
45_mins  
×
case-study  
×
intermediate  
×

qa  
×
10 months ago by Roy Nuriel

Neil Killick
Neil Killick
The Guessing Game - Alternatives to Agile Estimation
Neil Killick
Neil Killick

Agile promotes empiricism and change, yet many practitioners continue to scope out and estimate delivery times and costs for software products and projects.

Defenders of the art of estimation claim that we need to estimate software projects in order to answer common business and customer questions such as:

  • Should we go ahead with this project? (go/no-go)
  • How much will it cost? (bottom line)
  • When will it be done? (predictability)
  • Should we do project B instead of A? (prioritisation)

This session challenges participants to flip these questions on their heads and seek alternatives to estimation rituals. It covers the many risks inherent with an estimation culture and demonstrates real, practical alternatives, both at the portfolio and the sprint level.

Duration: 45 mins
Type:  Talk
Level: Intermediate
»
beyond-agile  
×
»
45_mins  
×
talk  
×
intermediate  
×

agile  
×
lean-startup  
×
lean  
×
scrum  
×
11 months ago by Neil Killick

Andrea Heck
Andrea Heck
Distributed Product Owner Team for an Agile Medical Development
Andrea Heck
Andrea Heck

We are developing medical imaging and workflow software in an agile way with development teams distributed to several countries. One of the major challenges is how to set up and communicate within the Product Owner team. There we have to deal with the distribution, e.g., have the Product Owner either onsite with her peers or with her Scrum team, travelling, or with proxy. We need people who are good in two different fields of knowledge: medical and software development. As a third issues, the environment of the customers may be different in different countries.

We have ramped up local Product Owners in different countries, have found local collaboration customers, and have developed a set of communication channels and workshops how to synchronize Product Owners in the team, share a common vision and backlog with their Scrum teams, and collaborate with customers locally and globally.

Duration: 45 mins
Type:  Case Study
Level: Advanced
» »
45_mins  
×
case-study  
×
advanced  
×

11 months ago by Andrea Heck

Venkat Subramaniam
Venkat Subramaniam
Haskell for Everyday Programmers
Venkat Subramaniam
Venkat Subramaniam

I learn different languages not to make use of them, but to program in my current languages in a better way. As we adapt functional style of programming in mainstream languages, like Java, C#, and C++, we can learn a great deal from a language that is touted as a purely functional language.

Haskell is statically typed, but not in a way like Java, C#, or C++. Its static typing does not get in the way of productivity. Haskell quietly does lazy evaluation and enforces functional purity for greater good. Everyday programmers, like your humble speaker, who predominantly code in mainstream languages, can greatly benefit from learning the idioms and style of this elegant language. The next time we sit down to crank out some code in just about any language, we can make use of some of those styles, within the confines of the languages, and move towards a better, functional style.

Duration: 90 mins
Type:  Talk
Level: Intermediate
» »
90_mins  
×
talk  
×
intermediate  
×

functional  
×
lazy  
×
static-typing  
×
haskell  
×
2 weeks ago by Venkat Subramaniam

Ellen Grove
Ellen Grove
Build Your Dreams: User Requirements Gathering with LEGO Serious Play
Ellen Grove
Ellen Grove

Let your hands be the search engine for your brain! LEGO® Serious Play® is a powerful thinking, communicating and problem solving technique that can help you and your team do serious work through structured play activities using a popular and playful 3D modeling toy. Through a facilitated process of building models that, storytelling and reflection, every person at the table is engaged and actively participating in the discussion, whether the topic is individual aspirations, team relationships, developing a new product or solving a wicked organizational problem. Everyone builds and everyone tells their story – all participants have equal opportunity to put their own points of view on the table, unlocking new perspectives and exposing the answers that are already in the room.  LEGO Serious Play has been used successfully for team-building and problem solving in a variety of organizations, from NASA to RBC to academic settings and public utilities.  

This presentation provides a hands-on introduction to LEGO Serious Play, so that you can experience firsthand how using LEGO to do real work unleashes creativity and enables meaningful conversations in a very short time. We will explore how to use this playful technique to collaboratively elicit information about user requirements and strategic design issues using the open source User Requirements with Lego methodology developed by a team at the University of Lugano, Switzerland.  This approach is particularly suited to Agile teams that want to get team members and stakeholders sharing their different perspectives on common goals in an open and light-weight manner.

Duration: 90 mins
Type:  Workshop
Level: Beginner
» »
90_mins  
×
workshop  
×
beginner  
×

requirements  
×
lego  
×
11 months ago by Ellen Grove

Victoria Schiffer
Victoria Schiffer
Agile Coaching? Sure thing! What about Life Coaching in Agile Thinking?
Victoria Schiffer
Victoria Schiffer

I love being around awesome people, who build great products customers desire. 
I love learning from and together with these amazing minds. 
I love creating the right environment for teams to flourish. 
I love change, and learning from new experiences. 
I love working in Agile environments.

How about you? 
I bet there are some elements of this list why you're in Agile, too. And you can probably add even more elements to it.

The Agile Manifesto states amongst others individuals and interactions, customer collaboration and responding to change.

In our everyday life doing Agile we already respect these aspects in many ways. 
But do we practice what we preach as best we can?

I'd like to challenge your current way of thinking about people and processes. 
I'd like to challenge you to focus on you, before you focus on others. 
I'd like to challenge your current way of reflecting. 
I'd like to inspire you to go different ways. 
I'd like to inspire you to inspire others.

In Agile we're already good in improving our processes and creating well performing teams and hence building the right things in the right way. And in the Agile Manifesto's communication and collaboration piece we can even get better.
"You have not yet reached the limit of what you're capable of!" means we can always further improve. And we do follow this idea in our Agile processes, too, through continuous feedback (Retrospectives) and improvement.

And why not take it even further? Why not go "Beyond Agile"?!

Here's where aspects of Life Coaching come in handy: through also understanding and improving ourselves (how do we interact with people due to how we perceive our environment) we will even further improve communication and collaboration.

Life Coaches believe our clients know the answer. And even if Agile Coaching is slightly different than Life Coaching, I see it as very relevant in Agile Coaching, too. If we apply this in Agile, instead of giving our clients (team, colleagues) the answers, asking them powerful questions to help them be more aware of what's happening at the moment, they will find their answer for it and will have a much better commitment to making the change for themselves, their teams and the company. It's not for us to TELL them what to do, but to ASK them what's going on for themselves. Here's where I see a huge chance for improvement.

In my session I give lots of examples on how to link Life Coaching ideas to our Agile work environments. I've given the session at LAST Conference Melbourne and at the Agile Coaching Circles Meetup Melbourne. The audience was engaged and the attendees were very happy about having some new ideas on how to improve their daily work life.

Come along to be inspired by Life Coaching and thus to benefit our Agile Thinking!

Duration: 45 mins
Type:  Talk
Level: Beginner
»
beyond-agile  
×
»
45_mins  
×
talk  
×
beginner  
×

coaching  
×
learning  
×
inspire  
×
reflection  
×
10 months ago by Victoria Schiffer

Jason Yip
Jason Yip
Think Like an Agilist: Deliberate practice for Agile culture
Jason Yip
Jason Yip

If I say, culture is important to adopting Agile, most people will just agree without even thinking too much about it.  But what is meant by "culture"?  Why is it important?

Culture is not typical behaviour; it is not what we say we value (but don't actually do).  Culture is our basic assumptions of how things work.  Culture is the logic we use to think through and respond to any particular situation.

If you imagine a pyramid, Agile practice and any other visible behaviour is on the top, stated or written Agile values and principles are in the middle, fundamental assumptions (aka culture) is at the base.

My session is intended to expose people to the base of that pyramid.

If culture is assumptions, then to understand Agile culture, we need to understand the basic assumptions of Agile.  To do this, I have created an approach called "Think Like an Agilist" that both exposes how we think through an "Agile situation" and allows us to deliberately practice "Agile culture".

The general idea is that I won't just talk about Agile culture and values, what I'll call "culture theatre", but rather expose people, who nominally consider themselves part of the Agile culture, to their underlying thought processes and assumptions, given a relatively difficult scenario.  Those thought processes and assumptions are the essence of culture (reference Edgar H. Schein).  What is interesting is noting when the thought processes and assumptions are different which indicates that there is a different culture at play.  What I've noticed is that this difference is common between novice vs expert Agilists.

Note that it isn't even about analyzing vs doing it mechanically but more about exposing what assumptions are being used to respond.

NOTE: I will be updating the attached slides as when I created them, I was framing it more as "doctrine" rather than "culture", defined as fundamental assumptions"

Duration: 90 mins
Type:  Workshop
Level: Intermediate
» »
90_mins  
×
workshop  
×
intermediate  
×

11 months ago by Jason Yip

Ted Tencza
Ted Tencza
Creating a Great Engineering Culture in an Agile workplace.
Ted Tencza
Ted Tencza

Company culture, or its DNA, is one of the most important factors to determing if a company succeeds.  Many companies claim to have great company culture.  But what does this mean, how can you know if your company has a great culture, and how can you go about improving the culture?  This talk will explore what great companies have in common, and share experiences I have had in helping to develop engineering culture during my career.    

Will also explore how Agile principles help to foster creating the best possible culture for your organization.

Duration: 45 mins
Type:  Talk
Level: Beginner
»
beyond-agile  
×
»
45_mins  
×
talk  
×
beginner  
×

culture  
×
dna  
×
11 months ago by Ted Tencza


Naresh Jain commented:


Ajay Avinash Solanki
Ajay Avinash Solanki
Agile Coaching - Giving and Receiving Feedback
Ajay Avinash Solanki
Ajay Avinash Solanki

Agile is based on crossfunctional and self organizing teams. Agile is based on the Plan, Do, Review and Adapt Feedback Loop. Feedback is the basis of Agile. Feedback can be amongst team members, between Scrum master and the team, Product owner and Scrum Master, Stakeholders and Product Owner and various combination of the same. We generally give a deficit based feedback. We point out to the short commings, mistakes, fix blames etc. This is a very emotionally chaged discussion which leads to a lose lose situation and a bad relationship. Contrary to this Giving feedback should be based on strengths. It is a planned approach which has to be rehearsed before hand. The main objective of giving the feedback is to find out solution instead of fixing the blame. Let us learn the techniques by which this can be made possible.

Duration: 90 mins
Type:  Workshop
Level: Advanced
»
beyond-agile  
×
»
90_mins  
×
workshop  
×
advanced  
×

1 week ago by Ajay Avinash Solanki

Naresha K
Naresha K
Discovering Functional Treasure in Idiomatic Groovy
Naresha K
Naresha K

Groovy is a dynamic language on the JVM. Groovy supports programming in multiple paradigms - imperative, object oriented and even functional programming. 

When I started using Groovy with Java background, the code used to be mostly imperative. As I explored the language in detail, I realized the power of idiomatic code. While the attempt to write idiomatic Groovy code helped me to realise the benefits of functional approach, thinking functionally resulted in better code too.

In this talk, I will demonstrate functional programming constructs in Groovy and show how to use them effectively. I will provide plently of examples to help the audience realize the benefits.

Duration: 45 mins
Level: Intermediate
» »
45_mins  
×
demonstration  
×
intermediate  
×

1 month ago by Naresha K

uday
uday
Why functional programming and BIG Data go hand in hand
uday
uday

My session will focus on why functional programming and big data go hand in hand covering the following aspects with use cases from my experience report:

  • Parallelize Code : Functional programming makes it easier to parallelize code, so even if a single operation may take more time to run in one thread, the overall performance can be better due to parallelism.
  • Seamless integration: Modern programming paradigms like functional programming, proven to provide the best scalability for cloud computing, are necessary to ensure cost-efficient performance for big data. Functional programming
    can be efficiently parallelised owing to it’s mathematical syntax thus allowing a seamless integration between algorithms
    and economic models.
  • Scalable Architecture: Functional languages encourage scalable software architectures is because of the fact that they, from the bottom up, eliminate as much shared state as possible from a language. This leads to scalable "micro" components.  Those micro components then scale naturally into larger components.
  • Efficient distributed code: Functional programming makes it much easier to write correct and efficient distributed code due to immutable data structures and statelessness.
Duration: 45 mins
Type:  Talk
Level: Intermediate
» »
45_mins  
×
talk  
×
intermediate  
×

big-data  
×
3 weeks ago by uday

Amit Dev
Amit Dev
Reactive programming with Rx
Amit Dev
Amit Dev

In this talk, I present basics of reactive programming using reactive extensions in Scala. The objective is to understand Futures and Observables which will help us to deal with asynchronous events in a functional way. We will go through many examples illustrating why and how to use these constructs.

Duration: 45 mins
Level: Intermediate
2 weeks ago by Amit Dev

Dhaval Dalal
Dhaval Dalal
Code Jugalbandi
Dhaval Dalal
Dhaval Dalal

In Indian classical music, we have Jugalbandi, where two lead musicians or vocalist engage in a playful competition. there is jugalbandi between Flutist and a Percussionist (say using Tabla as the instrument). Compositions rendered by flutist will be heard by the percussionist and will replay the same notes, but now on Tabla and vice-versa is also possible.

In a similar way, we will perform Code Jugalbandi to see how the solution looks using different languages and paradigms.

Duration: 60 mins
Level: Beginner
» »
60_mins  
×
demonstration  
×
beginner  
×

2 weeks ago by Dhaval Dalal

Debasish Ghosh
Debasish Ghosh
Property based testing for functional domain models
Debasish Ghosh
Debasish Ghosh

Manual testing is something that's error prone, incomplete and impossible to replicate on a large scale. We have instead been using xUnit style of testing for quite some time now. This approach has a number of drawbacks like (a) We need to write test cases by hand which again doesn't scale for large systems (b) We may miss out some of the edge cases (c) Safeguarding missing cases with coverage metrics doesn't help, since metrics are mostly based on heuristics (d) maintaining test cases and test data is a real pain.

In property based testing we write properties and not low level test cases. And let the system generate test cases which validate such properties. There are 2 main advantages with this approach:

  1. You think in terms of properties (or specifications) of the domain model which is the right granularity to think about
  2. You don't need to manage test cases, which is completely done by the system that generates a large collection of test data

This approach is ideal for the functional programming paradigm, which focuses on pure functions. Using functional programming it's easier to reason about your model - hence it's easier to test functional programs using properties. In this talk I will take some real world examples of property validation and verification using scalacheck (the property based testing library for Scala) and a real world domain model.

Duration: 45 mins
Type:  Talk
Level: Intermediate
» »
45_mins  
×
talk  
×
intermediate  
×

2 weeks ago by Debasish Ghosh

Anil Wadghule
Anil Wadghule
SOLID: the next step is Functional
Anil Wadghule
Anil Wadghule

As Object Oriented programmers, we follow SOLID Design Principles for improving OO design of our applications.

If you take the SOLID principles to their extremes, you arrive at something that makes Functional Programming look quite attractive.

Objects are merely a poor man's closures. And ultimately Closures are a poor man's objects.

This talk explains about how applying SOLID Design principles like Single Responsibility Principle (SRP) leads to many small classes. Furthermore, if you rigorously apply the Interface Segregation Principle (ISP), you'll eventually arrive at the ultimate Role Interface: an interface with a single method.

If you apply the SRP and ISP like that, you're likely to evolve a code base with many fine-grained classes that each have a single method.

Objects are data with behaviour. Closures are too are data with behaviour.

This talk will enlighten how applying Object Oriented Design Principles to their extreme will lead you to Functional Programming.

It's necessary for Object Oriented programmer to understand why Functional programming makes sense.

At the end, this talk will also cover essential basics of Functional programming needed to be known for every Object Oriented Programmer.

Duration: 45 mins
Type:  Talk
Level: Beginner
»
deep-dive  
×
»
45_mins  
×
talk  
×
beginner  
×

3 weeks ago by Anil Wadghule

Premanand Chandrasekaran
Premanand Chandrasekaran
Functional Programming in Java
Premanand Chandrasekaran
Premanand Chandrasekaran

Functional programming has started (re)gaining prominence in recent years, and with good reason too. Functional programs lend an elegant solution to the concurrency problem, result in more modular systems, are more concise and are easier to test. While modern languages like Scala and Clojure have embraced the functional style whole-heartedly, Java has lagged a bit behind in its treatment of functions as first-class citizens. With the advent of Java 8 and its support for lambdas, however, Java programmers can finally start reaping the power of functional programs as well. Even without Java 8, it is possible to adopt a functional style with the aid of excellent libraries such as Guava.

This talk will explore how to apply functional concepts using the Java programming language and demonstrate how it can result in simpler, more elegant designs. We will conduct this in a hands-on workshop style with attendants being encouraged to code-along. So bring your favorite Java 8 aware IDE, an open mind and prepare to have a lot of fun.

Duration: 60 mins
Type:  Workshop
Level: Beginner
»
deep-dive  
×
»
60_mins  
×
workshop  
×
beginner  
×

1 month ago by Premanand Chandrasekaran

Shakthi Kannan
Shakthi Kannan
Lambdaaaaaaaaaa Calculus
Shakthi Kannan
Shakthi Kannan

This talk is an introduction on lambda calculus and will address the foundations of functional programming languages.

We will learn the building blocks of lambda calculus - syntax, rules, and application.

Duration: 60 mins
Type:  Talk
Level: Beginner
» »
60_mins  
×
talk  
×
beginner  
×

lambda  
×
calculus  
×
mathematics  
×
language  
×
construct  
×
1 month ago by Shakthi Kannan

Ramakrishnan Muthukrishnan
Ramakrishnan Muthukrishnan
An introduction to Continuation Passing Style (CPS)
Ramakrishnan Muthukrishnan
Ramakrishnan Muthukrishnan

Traditionally functions return some value. Someone is waiting for that value and does some computation with it. This "someone" is called the continuation of this value. In a normal functional call, the continuation is "implicit". In the "continuation passing style" (hence forth called with the short form, CPS), we make the continuations explicit. In this style, function definitions take an extra argument called "continuation" and it never return. The "return value" of the function 'continues' by passing this value as an argument to the continuation. Continuations are sometimes called "gotos with arguments".

CPS is used as an intermediate stage while compiling a program since it makes the control structure of the program explicit and hence can be converted easily to machine code. Another feature of a CPS-transformed function is that it is tail-recursive even if the original function was not written in a tail-recursive style.

Continuations enable a programmer to build new control operators (if the language's built-in operators does not already provide the control operators the programmer need).

Duration: 60 mins
Type:  Tutorial
Level: Intermediate
»
deep-dive  
×
»
60_mins  
×
tutorial  
×
intermediate  
×

continuations  
×
scheme  
×
racket  
×
cps  
×