Using a modern web framework for big enterprise agile project

At ThoughtWorks, a 50-people team is building a marketing website backend for one of the largest consumer electronics brands in the world. We are Play-Scala as our web framework which allows us to design the application in a very different but powerful ways. This experience based talk will talk about these differences, emphasizing on two of them: "Dealing with concurrency without threads" and "Dependency resolution with constructor injection".

Dealing with concurrency without threads
- The backend is end to end non-blocking with highly concurrent architecture
- Each page consists of 20+ reusable snippets, so each page request translates into 20+ outbound web service calls to get data for the snippet data in parallel
- Posting data involves download/upload of large images from/to remote services, also done in parallel
- We will show you how Scala Futures, Play and ReactiveMongo functional programming paradigm allows us to do all this without blocking any thread or managing thread-pools by hand

Dependency resolution with constructor injection
- Dependency injection is considered essential for designing applications that are easy to test. Usaully, dependencies are specified as constructors parameters
- Scala traits allow us to get rid of constructors by wrapping classes and their factories inside components that in turn can depend on other components, this enables a compile time mechanism for dependency resolution which is very flexible
- We will show examples of this pattern, its effects testing without external DI frameworks

We will briefly talk on how functional programming style in general helps with testing and software delivery on agile projects. Finally, we will also cover the pain-points these approaches bring out, and argue if it is worth to pay that cost.

 

 

 
 

Outline/structure of the Session

- Overview of the project

- High level architecture

- Why non-blocking?

- What are Futures?

- Composing futures

- Implicitly parallel traversals

- Scala traits as components

- Components dependency resolution

- Tesitng components

- Lessons learnt

 

Learning Outcome

The attendees will be able to carry home exaplainations to following questions:

- In what context to think about non-blokcing and concurrent application design?

- What is a Future/Promise abstraction and how does it help deal with concurrency without explicit threads and locks?

- How do you compartmentalize application parts to make use of separate thread pools?

- What are Scala traits and how do they help in creating components?

- How to test a concurrent Play-Scala app using component based desing?

- What problems did we encoutered while adopting this new framework and what was the workaround?

 

 

Target Audience

Developers, Tech leads, Architects, Technical program managers

schedule Submitted 3 years ago

Comments Subscribe to Comments

comment Comment on this Proposal
  • Doc Norton
    By Doc Norton  ~  3 years ago
    reply Reply

    Hi Mushtaq,

    Many of the conference attendees are requesting presentation slides. We find that your proposal onhttp://confengine.com/ is not updated with your session slides. Could you please update the talk at your soonest convenience?

    - Doc

     

  • Naresh Jain
    By Naresh Jain  ~  3 years ago
    reply Reply

    Hi Mushtaq, this is an important topic, however we won't be able to allocate 90 mins for this session. Would you consider doing this as a 20 mins demo focusing on the key aspects (DI and Concurrency) and showing a typical test cycle using Scala on Play Framework?

    If you agree, request you to move this to Agile Lifecycle theme by editing your proposal.

  • Prasad
    By Prasad  ~  3 years ago
    reply Reply

    +1 Reject, little overkill for this confrence

  • Ted Tencza
    By Ted Tencza  ~  3 years ago
    reply Reply

    Hi Mushtaq,

            Does this talk reference agile, or agile practices?  It looks to be more a straight forward technical overview of using Scala and the Play framework.  

    • Mushtaq Ahmed
      By Mushtaq Ahmed  ~  3 years ago
      reply Reply

      It does reference agile. DI is important aspect of testing and agile in general which we have implemented in a unique way enabled by Scala/Play.

  • Tathagat Varma
    By Tathagat Varma  ~  3 years ago
    reply Reply

    Hi Mushtaq - from the description of your proposal, I was not able to understand how it relates to Beyond Agile. From purely agile practices POV, it seems what you are describing is pretty mainstream. Can you share some more perspectives?

    -TV

    • Mushtaq Ahmed
      By Mushtaq Ahmed  ~  3 years ago
      reply Reply

      Scala being a new tehchnology platform I thought it will go under beyond agile. Even though the concepts like DI are mainstream, our approach to implement them is novel in agile community. I am sure there will be people who will be interested in knowing how adopting functional programming/Scala affects the agile practices. From that perspective, if you think it is better to treat it under 'Agile Lifecycle', I am open to that.


  • Ram Srinivasan
    Ram Srinivasan
    schedule 3 years ago
    Sold Out!
    90 mins
    Workshop
    Intermediate

    It is not a question of if a team is going to have a conflict; it is a question of when. Equipping them to deal with conflict is more than creating agreements or having a good facilitator. We look at a conflict model that focuses on dynamics of conflict by understanding- 1. Cognitive skills:self-awareness about triggers, hot spots, emotions,behaviors. 2. Emotional skills:reading emotions, body language, balancing emotions, using curiosity 3. Behavioral skills:understanding others’ perspectives and needs, avoiding 8 destructive behaviors, embracing 8 constructive behavior. In an organizational setting, it is important to understand the source (culture, interdependence, incompatibility, personality, power, etc.) and types of conflict (cognitive vs. affective). Creating awareness about conflict processes, retaliatory cycles and building a conflict profile can empower teams engage in constructive disagreements. 

  • Bimlesh Gundurao
    Bimlesh Gundurao
    schedule 3 years ago
    Sold Out!
    45 mins
    Case Study
    Intermediate

    Transforming a Business to be Agile involves a lot of moving parts. Being Agile not only means delivering high quality software, but ability to respond to changing Customers Needs/Markets/Competitors/Stakeholders and more. Fundamental to this change is "People" within the organization. Keeping “People Over Process” at the center its important  to facilitate the People in the organization to be fully successful. So how do we ensure they are successful? How does goal setting change? How does measurement of these goals change? Focus on Organization adoption to Agile largely has been limited to Engineering function. But how has the HR process changed to facilitate this transformation to be truly successful?

    In this session will look to bring in some of the best practices that are followed in the organizations through a Mix of Case Study and Research across Product and IT Services Organizations.

  • Liked Karthik Kamal Balasubramaniam
    keyboard_arrow_down

    7 Deadly Sins of 'Agile- But' Teams

    Karthik Kamal Balasubramaniam
    Karthik Kamal Balasubramaniam
    schedule 3 years ago
    Sold Out!
    20 mins
    Experience Report
    Beginner

    This report is based on the analysis of the epidemic called ‘Agile-But-Teams’ in services organization. The presentation would cover the following 7 anti-patterns in such teams,

     #1 Fix ‘everything’ in your contract (definitely no breathing space) 

    Sign contracts with fixed scope and penalties. Ensure you include at least 30 metrics with fixed targets without accounting for team’s capability.

      #2 Don’t groom your requirements, make them look beardy and scruffy 

     Ensure your product backlog grooming is either not taken seriously or not done until the first day of the sprint.

     #3 Be a salary thief and never change a thing 

    Freeze your process steps in the beginning of the project and create checklists that would ensure compliance on a monthly basis. If possible, include mechanisms for tailoring and deviation, but never change the process.

     #4 Be loyal to the law of averages 

    Set organizational baselines for Agile teams and measure them periodically. Also, get RCA’s and reasons for missing the organisation targets.

     #5 Trust the pyramid and mummies 

    Adhere to the team pyramid structure and give the product responsibility to the identified leads.

     #6 Never Tell, Only Ask 

    Never change your product development/testing practices empirically instead implement industry ‘best’ practices based on case studies from other projects.

     #7 Make Self-fulfilling prophecies 

    Constantly discuss about, how Agile is not the right model for your project. Ensure your prophecies are fulfilled and there is no redemption whatsoever

     The presentation would also cover the possible antidotes for the scenarios and explain in detail about the behavioral sciences behind such patterns.

  • Liked Prabhakar Karve
    keyboard_arrow_down

    Inspect and Adapt – Powerful technique to increase productivity through continuous improvement

    Prabhakar Karve
    Prabhakar Karve
    schedule 3 years ago
    Sold Out!
    90 mins
    Workshop
    Intermediate

    Inspect & adapt is an important agile practice. Inspection helps us to see the reality beyond our filters. Better awareness of reality helps us to more effectively re-plan our work and modify our existing way-of-working.

    There are multiple benefits of this practice, but in this workshop we focus on how it can lead to continuous improvement in productivity.

    Inspect and adapt can be used while carrying out regular work activities across the entire agile life cycle. However our focus will be on the Scrum ceremonies and common artifacts.

    In this workshop, through discussions and exercises, we explore Innovative ways to expand our capability to carry out inspection & adaptation, without adding any extra overhead.

    During the session you also get a few simple yet powerful tips which can be practiced immediately once back from the conference.

  • Liked Naresh Jain
    keyboard_arrow_down

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

    Naresh Jain
    Naresh Jain
    schedule 3 years ago
    Sold Out!
    90 mins
    Workshop
    Advanced

    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.

  • Liked Vibhu Srinivasan
    keyboard_arrow_down

    Coding with Geeks- De Code the secrets behind TDD, BDD and ATDD

    Vibhu Srinivasan
    Vibhu Srinivasan
    schedule 3 years ago
    Sold Out!
    90 mins
    Tutorial
    Intermediate

    This session is a coding sessiont that takes a problem and shows clearly what is the difference between TDD, ATDD and BDD. Ths session uses code for the server layer as well as UI layer.

    This session is not for you if you do not code. If you do code, please bring your laptop as we delve into the details of all these styles of programming techniques.

    We will rotate between ATTD, TDD and BDD periodically and show it at use in different layers. This session will be using Java , Rails, Scala and C# together so that you can see how you can benefit do these techniques even when coding in different languages.

    We look at common pitfalls and wrong beliefs that programmers have when it comes to these concepts

    This session is purely keyboard and you will have to bring a laptop.

  • Liked Abhilash Chandran
    keyboard_arrow_down

    Agile Appraisal: Sprint Iterations for Appraisal reviews

    Abhilash Chandran
    Abhilash Chandran
    schedule 3 years ago
    Sold Out!
    45 mins
    Case Study
    Beginner

    Appraisal reviews are always hard. Traditionally it is done once a year. The manager and employee undergo a tough period of reviews, discussions and ratings. At the end no one is happy.

    • Manager
      • Manager is forced to provide a feedback of an entire year in few minutes.  
      • Because of time constraints and lack of useful data, a constrictive feedback is not given.
      • In most of cases this ceremony is reduced to mere salary negotiations.
    • Employee
      • Employee feels cheated because of lack of any concrete feedback
      • Employee is not able to proactively discuss his/her career objectives and create a proper plan to bridge the talent gap.

    In this talk I will discuss some of the approach we are trying to follow in our group to align appraisal feedback also along with agile sprints.  

    I will present the experience report of how we are converting the age old waterfall appraisal process to Agile. I will discuss the need for this change, the general idea and the challenges we are facing.

    In this new way of appraisal management the focus is on the individual. Just like we have a Scrum/Kanban board, each employee will have a talent and improvement board. Instead of developing a product, the focus is to develop an individual. Like the scrum there are Ceremonies

    • Release planning – Organizational agenda
      • Decide Group & team goals
    • Sprint planning
      • Work with each team members to identify some “traits”/action points to improve
    • Review
      • Review the outcome
    • Retrospective
      • Based on the outcome revisit the individual goal & do a re-planning
  • Liked Abhilash Chandran
    keyboard_arrow_down

    Workshop- Agile user story and Behavior Driven Development (BDD) using Gherkin

    Abhilash Chandran
    Abhilash Chandran
    schedule 3 years ago
    Sold Out!
    90 mins
    Workshop
    Beginner

    In this session I will introduce the audience to the concepts of Gherkin language. Gherkin is a popular language used to encapsulate the requirements in agile world.

    This was successfully implemented in our group across India & USA. I will go through this case study also.

     

  • Liked Pramod Sadalage
    keyboard_arrow_down

    Ten Patterns of Database Refactoring

    Pramod Sadalage
    Pramod Sadalage
    schedule 3 years ago
    Sold Out!
    45 mins
    Talk
    Beginner

    Over the life of an application as requirements change, application usage patterns alter, load and performance changes the need to change database and database architecture is inevitable. There are patterns of these changes such as

    1. 1. Encapsulate Table with View
    2. 2. Migrate method from database
    3. 3. Replace method with views
    4. 4. Introduce Read only table
    5. 5. Split table
    6. 6. Make column non-nullable
    7. 7. Drop column
    8. 8. Add foreign key constaint
    9. 9. Merge columns
    10. 10. Replace columns

    In this talk we will discuss the above database refactoring patterns and different implementation techniques to enable blue, green deployments, allow for legacy applications to work with fast changing database and enable the teams to effectively refactor the database to fulfill the changing needs of the organization.

  • Liked Gerry Kirk
    keyboard_arrow_down

    Create an Agile virus in your organization, empower your team, change your life

    Gerry Kirk
    Gerry Kirk
    schedule 3 years ago
    Sold Out!
    90 mins
    Tutorial
    Beginner

    Need buy in from a key manager or executive to adopt Agile? Desiring better team collaboration? Hungry for a saner life at home?
    Try Personal Kanbanwinner of the Shingo prize for Operational Excellence. It's the fastest, simplest way to taste test the goodness of the Lean Agile approach to managing knowledge work. Personal Kanban empowers small teams and individuals, at work and at home.Give that overwhelmed executive instant relief. Build your own system, and soon curious onlookers ask and then create their own. Look out, you've just released an Agile virus in your organization!
    You've also discovered a way for you and your team to get more out of your efforts, to improve communication, and find time for the things that matter most.In this session you'll learn how to create a Personal Kanban system through stories, examples and interactive exercises. Walk away understanding the psychology behind visualizing work and limiting work in progress, inspired and motivated to make a difference at work and home. 

  • Liked Ashish Mahajan
    keyboard_arrow_down

    Water the root , Enjoy the fruit

    Ashish Mahajan
    Ashish Mahajan
    schedule 3 years ago
    Sold Out!
    20 mins
    Talk
    Intermediate

    Yellow or dry leaves of a tree have more to do with its root, rather than its color, which is just an indication of need to water the roots. For a tree to flourish, to bear green leaves, with fruits, it’s the root that needs to be watered

    This is to say, put focus and care into your core every day and then the rest of the things will simply flourish and express itself.

    At times, we are too busy in discussing and analyzing things at a very high level, trying to improve the color of the yellow leaves of the trees, by applying patches, thereby ignoring watering its root.

    We are so obsessed with achieving better results every time, that ,metrics, processes and numbers become the focus of discussion in the organization. We keep on doing the same thing again and again, and expect different results, every time.

    Measure more, measure accurately, implement jazzy-flashy processes with new fashioned terminologies of promises of skyrocketing results, make everyone occupied, and reduce cost at any cost!

    And most of the times, you get the same results, or even worse.

     

    Here are some of the things,I believe, are watering the tree of Product Development that bear the fruits of success.

    • Focus on automated unit tests and refactoring the code every time you see an improvement opportunity, quality will take care of itself.
    • Focus on having open, honest and professional discussions with customers; trusted partnership will take care of itself.
    • Promote culture of failing fast and encourage making mistakes, time to market and innovation will take care of itself.
    • Implement the DNA of Value Flow into the organization, and cost will take care of itself.
    • Focus on respecting and improving skills of the people in your organization, the results will take care of itself
    • Destroy the cubicles , both physically and mentally,  and the waste will have a tough time to find a place.
    • Focus on building great teams; and great products will take care of itself.
  • Liked Cara Turner
    keyboard_arrow_down

    Building Creative Teams: Motivation, Engagement and Retrospectives

    Cara Turner
    Cara Turner
    schedule 3 years ago
    Sold Out!
    90 mins
    Talk
    Advanced

    How do software teams become creative? If you're not a start-up, does creativity even play a role in the business driven world of software development? Idea generation is the basis of all our work - no matter how challenging or mundane. With a scientific approach to implementing change, creativity is the basic tool we have for addressing the challenges of software development.

    This talk explores the elements of engagement and creativity along with the neuroscience of generating ideas. These give us specific insight into how employing different agile retrospective formats over the course of the product development process can extend our usual practices and develop a thinking mind-set comfortable with tackling daily work with a fresh and explorative approach.

  • Liked Johannes Brodwall
    keyboard_arrow_down

    Bare-Knuckle Web Development

    Johannes Brodwall
    Johannes Brodwall
    schedule 3 years ago
    Sold Out!
    45 mins
    Talk
    Intermediate

    Can you go faster with less weight?

    We have all learned the benefit of reusing application servers like JBoss, ORMs like NHibernate or dependency injection frameworks like Spring that "solve all the plumbing code for you", but how real are these benefits really? Most developers struggle using techniques like test-driven development and refactoring effectively in their day to day project. Many developers spend a majority of their day finding out which magic incantations will make your framework solve your requirement.

    Yes, frameworks probably will reduce the size of your code base. But will their reduce the time it takes to develop that code base? And perhaps even more pressingly: How certain are your estimates when you know that a the majority of your work is to find out exactly which few lines of code you need to change by debugging, reading documentation and searching for answers on stack overflow?

    When I was first learning math, my dad told me that I didn't to use a calculator before I could do the math without it. In the same tradition, this talk builds on the premise that you shouldn't use a framework that you can't do without: I will create, live, a realistic web application without generators, without frameworks and without bullshit. Instead, I will use test-driven development to ensure steady progress to a solution with no magic.

  • Liked Anna Obukhova
    keyboard_arrow_down

    The SCRUM and the willpower: how neuroscience can boost your productivity

    Anna Obukhova
    Anna Obukhova
    schedule 3 years ago
    Sold Out!
    45 mins
    Talk
    Intermediate

    Willpower is the force that is between the brain activity (I want to do this or I need to do this) and the action itself (start coding). If there is not enough willpower, people find it difficult to start any activity (especially that involves
    decision making).


    What is the standard approach when you feel tired and find it difficult to concentrate? Take some coffee (but latest research shows that coffee depletes the brain activity, even when body has more energy), take some sweets (but sugar ends quickly and gives even more exhaustion to the body)? These widely used strategies generally do not work, and in long-term even add harm to the body and brain.


    The willpower is not endless (so-called muscle theory of willpower), it can be saved, it can be trained, there are approaches how to keep the willpower level high. To keep the willpower (and thus, productivity) on the high level, people should know and use different approaches that lay in the field on the social and cognitive science.


    There are a lot of evidences that SCRUM improves the developer’s productivity in terms of speed of development, code quality, and accuracy of design. Unfortunately mainly all recommendations from SCRUM coaches look like “believe me, if you do this, you will have better velocity”. Yes, it works. But why does it work?


    Sometimes SCRUM does not give such great results even when main elements are in place. The question “Why” and “What makes the difference” is here again.


    I will describe the model of relationship between the willpower related brain metabolism on very low level (specific amino acid cycle) and the SCRUM practices. I can prove that SCRUM addresses the productivity of the people’s brain using 3 different flows simultaneously. There are several tips that make these productivity flows working or not. You can make Agile productive, you can have non-productive Agile. I will show you where the difference is.


    Overall there are 10 productivity tips that can be put into 3 flows.


    As the outcome of this session, Agile coaches, and all people who can change the process (in fact that is any team member) will review their SCRUM: does the way they have it improve the productivity or they are losing all the power? The changes are cheap, the outcome can be huge.

  • Liked Shrawan Gaur
    keyboard_arrow_down

    Learn from Mistakes, Retain Your Strong Holds: Sprint Retro: Do As WE Do at John Deere

    Shrawan Gaur
    Shrawan Gaur
    schedule 3 years ago
    Sold Out!
    45 mins
    Talk
    Beginner

    As the 12th Agile Principle states : "At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.", it is quite easy to understand the importance of continuous evolvement which involves retaining learning and corrective actions.

    John Deere has started its Agile journey in year 2010 and since then has gone through various phases of transformation. Scrum teams has learnt alot and are continuously learning. Retrospection is one of very important scrum ceremony which paves path for team to advance in right direction.

    Here, I will demonstrate some retro techinques and its applications according to sprint work.

  • Liked Pradeepa Narayanaswamy
    keyboard_arrow_down

    WORKSHOP- Defining Behaviors as a team

    Pradeepa Narayanaswamy
    Pradeepa Narayanaswamy
    schedule 3 years ago
    Sold Out!
    45 mins
    Workshop
    Intermediate

    In lot of agile teams, often times, all the team members will be doing the grooming and planning exercise as a team. Often times, defining the behaviors is either ignored, overlooked, skimped or done by individuals on their own without a common understanding as a team.

    To solve this problem, I have used this hands-on time-boxed activity for all of my teams to define behaviors as they move along in the sprint. This will help all the team members to have a shared understanding on their users and their behaviors as it relates to their user story. This is an activity that any agile team member can take and implement the next day at work.

     

     

  • Liked Anand Bagmar
    keyboard_arrow_down

    Build the "right" regression suite using Behavior Driven Testing (BDT)

    Anand Bagmar
    Anand Bagmar
    schedule 3 years ago
    Sold Out!
    90 mins
    Workshop
    Intermediate

    BDT is a way to identify the correct scenarios to build a good and effective (manual & automation) regression suite that validates the Business Goals. We will learn about how this is different from BDD, and do some hands-on exercises in form of workshops to understand the concept better.

  • Liked Tarang Baxi
    keyboard_arrow_down

    1000 Words - Illustrating Project Challenges with Visuals

    Tarang Baxi
    Tarang Baxi
    schedule 3 years ago
    Sold Out!
    90 mins
    Workshop
    Beginner

    A project can face varied challenges through its life, foreseen and otherwise - runaway scope, high defect volumes, depressed velocity, and many more. Addressing many of these first requires recognition of the problem and then action from one or more sets of project stakeholders. Telling the story with simple visuals can be a very powerful way to articulate a challenge (the what), the potential root causes (the why) and the options available to fix it (the now-what). Teams typically already track a lot of data related to throughput, quality, scope and cost. Creative use of this data combined with simple, hand-crafted visuals can be much more effective than hundreds of bullet points. In this hands-on workshop, you get to exercise your visual thinking and visual communication skills. We introduce some simple visual thinking techniques like Look-See-Imagine-Show, and then let you apply them in a project simulation, so that you can practice hand-rolling simple visuals that speak volumes (no fancy tools needed!).

  • Vinod Sankaranarayanan
    Vinod Sankaranarayanan
    Pravin Kumar Thakur
    Pravin Kumar Thakur
    schedule 3 years ago
    Sold Out!
    20 mins
    Experience Report
    Beginner

    After more than 5 years of supporting the thetrainline.com platform, ThoughtWorks worked with The Trainline teams to transfer knowledge and context  back to the Trainline Teams.

    This methodology was co-created by ThoughtWorks and Trainline as a healthy sustainable and mature way to transfer knowledge. The transition itself was about a year long and involved multiple agile concepts around remote pairing, program MVP and above all, continuous delivery and non-disruption to business through the process.

    This presentation would take the audience through the experiences and learnings of the process. This session is co-presented by ThoughtWorks and Trainline (vendor and customer) and will provide an insight across multiple spectrums of delivery and business.

  • Liked Ted Tencza
    keyboard_arrow_down

    Pushing a Rope: Lessons learned from implementing innovation programs at Bigcommerce and Atlassian

    Ted Tencza
    Ted Tencza
    schedule 3 years ago
    Sold Out!
    45 mins
    Talk
    Intermediate

    You cannot effectively push a rope, similarly you cannot force innovation to happen. You can only set up an environment where it is fostered and allowed to thrive. This is even more relevant in an Agile environment, where there is freedom to explore innovation. This talk will be a review of the lessons learned while implementing innovation programs in Agile environments at Atlassian and Bigcommerce. This session covers programs that worked (like FedEx/ShipIt/Hackathons, 20% time) and programs that failed (dedicated Innovation Team). Most importantly it will explore why certain types of programs are more successful that others.

    It will also explore how Agile methodolgies and practices can help to improve the results of innovation programs. The talk will also detail some strategies for setting up a culture of innovation, and discuss the pre-requistes to creating and fostering an environment where innovation is celebrated.