Naga Chokkanathan

Archive for August 2011

Session 1 – Continuous Delivery – Nick Hines (Thoughtworks)

DevOps

Development and Operations communities together, learning from each other

What is Continuous Delivery?

* Automate the last mile to allow rapid, reliable deployment at the push of a button
* Rapid incremental delivery of high quality valuable new functionality to users
* Constant measurement and optimization of the delivery process

So, what are the benefits?

1. Predictability (and boring – Good for software deployment)
2. Reliability
3. Power in the hands of the business
4. Fast Feedback
5. Responsive to business change

So, how do you get there?

1. Fundamentals – Basic standards of source control
2. Automation – Everything / at least whatever is possible (functional testing, integration testing etc.,)
3. Right-sizing (Changing the way you divide-up the features you deliver)
4. Continuous improvement (of Process)

Why Now?

* Traditional approach: Write Spec, Write Code, Test & Fix, Release (Months / years)
* By the time release happens, things can change
* Agile – Similar approach, but in iterations (Months)
* Now we are talking about hours / days releases
* Evolution, Not revolution

Development Practices

* Functional Automated Testing
* Code on main line
* Branch by abstraction
* Non-functional Automated Testing
* In case of a problem, No rollback, Just re-release the previous version

Build & Deployment Patterns

* Build pipelines
* Canary Releases (Small subset release, test)
* Infrastructure as code (Store the infrastructure information in the source control system and treat it how you would treat software code)

Tooling

* Chef
* Puppet
* CF Engine
* IaaS
* Go

Lean Startup

* Free and Open Source
* Agile software development
* Customer Centric Rapid iteration
* Powerful, Cheap analytics

Production Dashboard

* What is in production
* What is in the next release
* Install to production – Trigger / Button

Real life examples of continuous delivery:

* Flickr
* Netflix

Book: Continuous Delivery by Jez Humble, David Farley

****************

Session 2 – “It is difficult to do TDD & CI” – Exploring the “Why” in a large company – J Srinivas & Chetana (Infosys)

CI = Continuous Integration
TDD = Test Driven Development

Different levels of adoption / understanding / acceptance

Types of projects / organizations we looked at

1. All Agile
2. A successful Agile pilot, want to move others to Agile
3. Application developed in Traditional mode, Maintenance in Agile
4. Both App development and Maintenance in Agile

Common Patterns among all these 4 types

* Adoption of management practices very strong
* More emphasis in automating functional testing more than unit
* Executing in 6 week sprints for majority of projects

What is important right now?

Development: Functionality, Security, Scalability
Maintenance: Maintainability, Reliability, Performance

Entry Barriers:

1. Investment in process automation
2. Culture Change
3. Dependencies
4. Distributed teams

Lowest adoption in mixed environment (#1 in the above types of organizations / projects)

Reasons: Management wants ROI for investment immediately / Low Buy-in / Teams lack understanding / Inter-dependency / Restriction on usage of unapproved toolset

All Agile Teams (#2) deviations observed in all teams, frequency of CI: Daily & Weekly, Automated functional tests, Challenge in automating the regression suite

Happiness Quotient in distributed teams: Maturity is the key

To get to effective practices: Investment, Legacy, Infrastructure, Culture, Business to invest with faith

**************************

Session 3 – Test Load Balancer – rocket booster for your build – Janmejay Singh & Pavan K S

What is TLB?

Test Load Balancer: Free and Open Source software, Cuts your build time by executing tests parallely on a grid

We went from 2 hours to 12 minutes to 9 minutes builds. How?

Dream: Fast Builds

* Fast Build = Rapid Development
* Devs spend less time waiting to check-in
* Easier for devs to run precomit buids, results in pulling upstream changes often and running builds frequenty

Common Solutions:

1. Split applications into modules
2. Throw more hardware at it – Slice and dice

Optimal solution: Every bucket takes the same time

Smoothened Time-based Balancing

XYZ Balancing

Failed first orderer

ABC Orderer

***********************

Session 4 – Devops at SlideShare – How we built a system that deploys 5 times a day on production – Kapil Mohan & Mayank Joshi

http://www.slideshare.net/kapil/devops-at-slideshare-talk-at-devopsdays-bangalore-2011

Once upon a time, deployments used to be rare – everybody were scared to deloy, because it was a tedious job

Manual steps to setup a new server – Non-repeatable / error prone / un-maintainable… Site down / long downtimes / time wasted in digging teh root cause / adding capacity etc.,
Blame game started

While all these were happening, the site was growing very fast

DevOps @ Slideshare

Why?

1. Deployments were blockers
2. Zero Visibility into the system
3. No Shared ownership
4. Needed better engineering processes

We looked at Lean processes

This presentation opened our eyes –> http://www.slideshare.net/jallspaw/10-deploys-per-day-dev-and-ops-cooperation-at-flickr

Tools & Culture: Object oriented, incremental, repeatable, Ruby

Scripted Deployments: Repeatable, powerful – Capistrano

Source Control: Moved from SVN to Git, Using GitSVN glue, Merging, Branching FTW, Dev and Ops can access all repositories

Continuous Integration

Ruthless Monitoring – Web based performance dashboards, detailed, time-based profiling, devs have visibility

Alerts – Web / Email / SMS – Nagios everything – On-Call Devs

Visibility: Akamai, Website Pulse, Nagios alerts

Management’s Role: Force collaboration when troubleshooting issues, downtimes, Build cross functional teams, STOP Blaming

Essential Questions To Ask

2. Decision Making

  • Are decisions made Just-In-Time? Or Ahead of time? Or Postponed-as-much-as-possible? Which one is most likely to produce the best decisions?
  • Should I make my decisions when I am in good mood / with clear focus / relaxed time to think? Will it have an impact on the quality of decisions?
  • Some people seem to like ‘pressure’ and they claim they make better decisions ONLY under pressure, am I one of them? Does it make any sense? Should I wait till last minute to create a sense of pressure for making snap decisions?
  • Do I have a plan / clear process for making decisions? If not, Why? Can good decisions be made purely by chance? Consistently?
  • Do I understand the problem clearly, before making my decision?
  • Is it possible that the situation doesn’t need a decision?
  • Do I document my assumptions? If those assumptions change, do I understand / convey to others that my decisions are likely to change?
  • Can I recognize ‘patterns’ in the problems I face? Did I face a similar situation earlier? If yes, do I remember how I made a decision? What clicked? What didn’t? Why?
  • When looking for options for decisions (to solve a problem), Do I rely on my experience? Other Sources? Which other sources?
  • In this problem scenario, Have I done enough background research? Do I have enough data to make an intelligent decision?
  • What is the difference between “Gut Feel” Decisions and “Rational” Decisions? Which one is better? Which one suits me better? Which one would work?
  • To solve the current problem, Do I have choices? How many? Are they unique / distinct / clear choices, or just confusing thoughts? How can I clear and convert them to real “choices”?
  • Is this the complete list of “Choices”? Are there any stones unturned? Can I combine few of these and invent new solutions? Am I intelligent / qualified enough to do that?
  • Are these choices “Compare”able? What are the factors on which I can compare / analyze them one-to-one? Among these factors, which are more important than others? Why?
  • Do I prefer to make my decisions all alone? Why?
  • Do I collect information / solution options from others? Who are those “others”? Everyone around me? Or only a select few? How do I determine who can help me with a particular problem? Is it their level of experience? position? friendship with me? Reliability? What else decides this?
  • When I collect information / solution options from others, do I just keep them as support data? Or allow them to control my decision directly?
  • Involving others: does it make the entire decision making process more complex? Or less complex? What about variety? Extra pair of eyes bring “Out of the box” thinking? Or the other way? Is it a nuisance and we are better off doing it all alone?
  • Am I open to “unusual” decisions? Or Do I prefer to stick to proven solutions only? If yes, What am I missing?
  • When there are too many choices, do I freeze? How can I avoid that? Can I do more research to choose one best among those similar-looking choices?
  • When there are too little choices, or zero choices to make a decision, what do I do? How can I “harvest” decision choices?
  • Do I analyze risks associated with each decision? Should I document them? Should I prepare a plan of action regarding this?
  • After all the analysis, I may still go with a “Gut Feel” decision, but in that case, do I realize I have ignored the scientific research?
  • Do I take responsibility for all my decisions, whether scientific or gut feel?
  • Do I understand “Not taking a decision” is also a decision? Do I exercise this right enough?
  • Similarly, I can also postpone a decision, if the time / data is not right. Do I understand that this is not a weakness, unless and until it is overdone / misused?
  • Should I document my decision making process? Why? To be transparent? To setup a repeatable proccess? For others to understand the reasoning behind my decision? For me / others to follow / mimic in future?
  • Can I stop after making a decision? Or is it a continuous process? Should I observe the results and continuously update my situation-problem-solution-results database?
  • If a similar problem raises in a different situation, do I stick to my old decision, or re-analyze? Why? Can’t I template-ize decision making?
  • Do I have confidence that I am making good decisions?
  • Am I dependent on somebody else / something else to make my decisions? Am I empowered to make good decisions?
  • Do I sincerely feel that the time spent on analyzing a problem / making a right decision is worth? Does it really pay? Am I convinced that it is not a waste of time? Or, Are we better off doing some real work?
  • Do I attach too much importance to decision making tools?
  • When I am doubtful about my decision, do I go back and do further research? Or take some decision because I have come this far?
  • Do I communicate my decision clearly? Is it important? Why?

***

N. Chokkan …

26 08 2011

I compiled these questions as part of a series of articles I am writing for a magazine, sort of a "Personal Checklist" for various soft skills – thought of sharing them with you – If everything goes well, I will be posting similar set of questions (on different topics) every week,

By no means this is a complete list – Please add more questions which I might have missed, Thanks in advance,

***

N. Chokkan …

17 08 2011

Essential Questions To Ask

1. Communication (Spoken)

  • When others talk, do I Listen? How much?
  • What do I listen exactly? Their words? Tone? Unspoken words? Facial Expressions? Body Language?
  • When I don’t understand what they say, do I feel bad about myself? Is it my mistake? Do I ask questions / doubts? Do I feel bad about asking questions? Should I? Is it a sign of weakness? Can it be a strength really?
  • When I talk and they listen, how do I collect feedback? Do I change the way I talk based on their reactions?
  • Can I see things from someone else’s view? Will it help in me understanding their perspective? Should it change the way I communicate with them?
  • Can I explain the same fact to different people in different ways depending on their maturity level, experience, expertise and expectations?
  • How good is my Vocabulary? Grammar? Do I feel they are important for effective communication, or I can manage with as-long-as-they-get-it-I-am-fine attitude?
  • Do I express my emotions clearly? Should I?
  • What about expectations? Do I make them clear to others? Or they frequently misunderstand what I say, leading to future disappointments?
  • When I speak, am I repeating myself many times because others don’t seem to get it? Is it my mistake, or their problem?
  • When someone expresses an opinion and I disagree with it, should I keep quiet? Or openly disagree with them? Sugarcoat it? Act as if I agree with them and later crib / blog / tweet about it with others? Which one is healthy?
  • You are talking about something I already know, What am I supposed to do? Listen with fake-interest? Play with my smartphone while pretending to listen? Finish your sentences? Change the topic?
  • When talking to others, am I trying to steal the spotlight always? Am I converting dialogs / discussions to stand-up-monologues? Will it affect the way others look at my communication / Message?
  • Can I summarize a discussion with all important points expressed by everybody, in less than 2 minutes? Is it useful? to whom?

Yesterday I got an Email invitation from a major ERP Vendor. They are conducting some sales show at Bangalore and the mail asked me to register, if I am interested in attending this event.

I looked into the event agenda, it was interesting, so I decided to register. But I had to choose a mode of registration – I can send Email to somebody with my particulars, Or Submit them using an online form, Or call a number and speak to a person.

As usual, I choose the online form – Email is not structured enough and I hate talking to call center folks answering unnecessary questions. Hence I clicked the “Register” link in the Email, filled out the online form and submitted.

Within next 10 minutes, I got a phone call, from the same ERP Vendor, ‘Sir, we got your registration, we need couple of additional details!’

This was very surprising. I filled out a long form with almost 40 fields. If they need additional details after all this, why not add it to the original form itself? Why a follow-up phone call is necessary? Can’t they understand I choose “Online Registration” because I wanted to avoid manual registration via phone?

The person on the phone was not ready to understand all these. Most likely, she is given a script and asked to call every registrant to get additional information. I did provide the information, but that experience left me a bad taste – Is this the way a top, billion-dollar corporation handles its prospects / customers? Don’t they understand that online experience is totally different from offline experience and you have to be extra careful when stitching them together?

Long back, when online purchases / other financial transactions were not popular, a company by name “TicketMaster” decided to introduce online ticket booking facility. Once launched, they were waiting eagerly ‘Will people accept this new mode of ticket booking?’

After sometime, their first online ticket was booked. They were thrilled. They called the person promptly and Congratulated him. ‘Sir, you just bought the first ticket in the history of internet. Can you tell us why you decided to buy online, instead of regular ticket booking channels?’

He replied, ‘Because, I don’t like talking to people’ and immediately disconnected the call.

(072)

***

N. Chokkan …

17 08 2011

Yesterday, I attended a session organized by Yahoo! R & D – Mr. Deepak Agarwal delivered a very nice talk on ”Recommender Systems: Art and science of matching items to users”. It had many interesting insights which will be useful to solution designers / business analysts / programmers / general public who want to know how ‘personalization’ works on web – I am posting my raw notes from the session here, Please ignore spelling / grammar errors, if any 🙂

– Examples: Recommend ADs on pages (Google adwords), Recommend news items on portals, Recommend related items to buy (amazon), Recommend movies based on ratings etc., (Netflix), Recommend people (facebook), Recommend Deals (ebay)

– In most cases, real estate available is short, but the choices are more

– We use these recommender systems on a daily basis, without realizing them

– Goal of recommender systems: Server right items to users in an automated fashion, to optimize long-term business objectives

– Components:
   
    1. User
    2. Context (Page / Previous item viewed etc.,)
    3. Item inventory (Articles, Web Pages, ADs etc.,)

    Challenge: Construct an automated algorithm to select item(s) to show

    – Get feedback (Click, time spent, rating, buy etc.,)
    – Refine parameters of the algorithm
    – Repeat (large number of times)
    – Optimize metric(s) of interest (total clicks, total revenue etc.,)

    Low marginal cost per serve
    Efficient and intelligent systems can provide significant improvements

– Data mining: Clever algorithms

    * So much data, enough to process it all and process it fast?
    * Ideally, we want to learn every user-item interaction (# of things to learn increases with data size)
    * Dynamic nature
    * Learn quickly, because there is very little reaction time
    * Balance between heavy users (less in number – 20:80 rule) and not-so-freqent users (large in number)

– Simple approach: Segment Users / Items and serve most popular items or item segements to user segments

Example: Yahoo! front page

But it didn’t work, Because people who read an article won’t click again and that was affecting the overall rating for articles, which was not realistic anymore

– Clues to solve the mystery

Other sources of bias? How to adjust for them?

– Simple idea to remove bias – display articles at random to a small randomly chosen population

    – Call this the "Random Bucket"
    – Randomization removes bias in data (Charles Pierce, 1877; R. A. Fisher, 1935)

– Methodology: Select a random set of users, show them random set of articles and see how many are clicking it, because users and articles were chosen randomly, there won’t be any bias

– Random bucket ensures continuous flow of data for all articles, we quickly discard bad articles and converge to the best one
    – Click lift 40% initially
    – After 3 years, 200+% (due to continuous algorithm improvements, and content improvements due to that)

– Typical media: Editor decides which article goes where

– Internet media: Users decide

– Lessons Learnt:

    – It is okay to start with simple models that learn a few things, but beware of the biases inherent in your data
    – Randomization is a friend, use it when you can. Update the models fast, this may reduce the bias
    – What if we can’t afford complete randomization? Learn how to gamble – Gamblers do adoptive randomization

– Why learn how to gamble?

    Consider a slot machine with two arms
   
    P1 > P2 … unknown payoff probabilities

    Gambler has 1000 plays, what is the best way to experiment? (To maximize total expected reward)

    This is called the "bandit" problem, have been studied for a long time

    Optimal solution: Play the arm that has maximum potential of being good optimistic in the face of uncertainity

– Recommender Problems: Bandits?

    Two items

    Item 1 CTR = 2/100
    Item 2 CTR = 250/10000

    – Greedy: Show Item 2 to all

        Not a good idea

    – Item 1 CTR estimate noisy; Item could be potentially better
        – Invest in Item 1 for better overall performance on average

– Go Granular, But with back-off

    Too little data at granular level, need to borrow from coarse resultions with abundant data (Smoothing, Shrinkage)

    For example, no data at "pub-id=88, ad-id=77, zip= Palo Alto", So let me see at the data for Palo Alto, If that is also very little data for Bay Area

    Similarly, look at all ADs given by Publisher with ID 88 and so on

    There are different ways in which we can get data, So go for a calculation

    CTR = Weight1 * Score1 + Weight2 * Score2 … Weightn * Scoren

– How to decide the weight – Or rather, how much to borrow from ancestors

    – Depends on heterogeneity in CTRs of small cells
        * Ancestors with similar CTR child nodes are more credible

    – Example: If all zip-codes in Bay area have similar CTRs, more weights given to Bay Area node itself
        * Pool similar cases, separate dissimilar ones

Summary:

    – If you have lot of data, use it
    – If you have less data, look at the ancestors
    – If ancestors have less data, look for the right one based on the formula above

– Hierarchical smoothing

– Back-off model

– Data Model:

    User i visits a website
    Article j is served based on an algorithm
    Depending on whether they click on the article or not, we decide the score for future checks

– When a new user comes

    – Look at the available (Little) data
    – Assign the news items (to start with) based on this data
    – Observe continuously
    – Move them from one news item / category to another

– Post Click utilities
   
    Recommender + Editorial

    CTR + Utility per click needs to be compared

Last weekend (30th July, 2011) I attended BA Conference 2.0 in Bangalore, conducted by Thoughtworks India. It was a very fun and useful event and I enjoyed every session.

Basically, I am not a BA, but very much interested in the art of analysis – from that perspective, My notes from the session are below – Hope someone finds them useful:

Keynote speech by Rajeev from ThoughtWorks – abt challenges BAs face in agile projects due to frequent changes in reqmts

* You can’t ‘do’ agile, you have to ‘be’ agile :> (Not process, culture)

Next talk: Requirements Engineering for Large Scale Systems – Santhosh Mishra, Lead Research Engineer, Siemens Bangalore

* BAs r there 2 smoothen requirement changes within a project / sprint

* Requirements Engineering is much more than software

* biggest mistake: starting to think about a solution, before understanding the problem

* REBOK 2.2 – Requirements Engineering Body of Knowledge

* REBOK-Elicitation,Analysis,Specification,System Modelling,Validation, Reqmt Management

* BAs r in best position when they guide the customer, instead of recommending reqmnts

* BA: only people who r paid for openly admiting ‘I dont know’& then asking questions;)

* Don’t leave it to a single person’s imagination, instead build a system model

* Canoe (What’s the Spelling?) modelling for products – 3 levels of requirements: Assumed Requirements, Unidirectional requirements, Wow Factors

* Assumed requirements (Must have, But most likely Customer will never tell you)

* 2.Unidirectional reqmnts (Provide more, customer is happy), 3.Wow Factors (USP)

* Anything wow today, may become must have requirements later (Example:Camera in mobile)

* Its observed that Women make better BAs (What could be the reason? 🙂

* Enjoyable requirements: Involving the stakeholder / Use role play / theatre

* In every conversation, customer should have a take away

* BAs working together do better than those working alone

* If no one available, make a developer part-time BA and learn from each other

Next Speaker: Shweta Sharma, Thoughtworks – Dealing with difficult conversations

* Opinions vary, Stakes are high, Emotions run high – fear of spoiling / losing a relationship

* Why we need them? Change the status quo / bring improvements / enable growth / reach solutions

* How to deliver the message: Prepare, Give bad news up front, Be direct, Be clear, No blame frame,Seek first to understand,then to be understood, Paraphrase/Summarize,Be prepared for bad reaction,Have “I” Conversations

* “I” conversations =what I did wrong, taking part of the blame instead of simply pointing fingers

* go to any conversation with the mindset that everyone has done their best, it will be effective

Next Speaker: Preethi Madhu – Culture and Business Agility

* Attributes of agility: Adaptive, Responsive, Effective, Ease of movement

* Think about bringing mindset changes, instead of simply focusing on agile tools

* Organization Culture: It’s not your / my culture, but a third culture accepted by everyone

* Of course, there may be local flavors to an organizational culture

* Physical infrastructure (of office / showroom) is an important part of your org culture

* Policy is a reflection of org culture, not the other way

* Thoughtworks reception area has a timeline updated upto 2093 (the year we become a 100 year old company) … Smart 🙂

Next Speaker – Pinkesh Shah – Product Management and Business Analysis

* When you are doing it for the first time, How to identify a MVP – Minimally viable product

* Customer tells what they need – faster horse, Prd Mgr should reach “car” from there (Henry Ford’s quote)

* MVP: Minimally acceptable set of features, from which you can grow to a full / real product

* Productizing process – 5 steps – Understanding Value, Creating value, Capturing Value / Pricing, Communicating value, Delivering Value

* 1. Understanding Value (Customer value modeling)

* 2. Creating Value (Define products)

* 3. Capturing Value (Value based pricing)

* 4. Communicating Value (Positioning Value Preposition)

* 5. Delivering Value (Value Channels Network)

* A product manager orchestrates these 5 steps

* Adaptive Productizing Framework – Roles of a product manager: 1. Market Analysis (Choosing to Build), 2. Strategic Planning (Building Profitably), 3. Product Planning (Building it right), 4. Go to market (Marketing it right), 5. Sales Enablement (Selling effectively)

* A Prod Mgr’s II (influential index) matters a lot within the company

* 3 Ingredients of a successful Prod Mgr: Functional Skills, Soft Skills, Domain expertise

Next Speaker – Prem Kumar – Looking Beyond your Clients – The CATWOE Checklist

* Easiest thing, ask your client – But Does your client know the requirements?

* Stakeholders commissioning requirements may not be the people who know the requirements

* Think of new dimensions – CATWOE checklist

* C=Customers, A = Actors implementing your solution,T=Transformation process, W=World View,O=Owners / stakeholders who own the process,E=Environmental Constraints

Next Speaker – Rohit Bansal – Solutioning for Social Impact Projects

* Social Impact Projects/ beneficiaries: low literacy, min xposure 2 technology,Bottom of pyramid,Susceptible to exploitation

* focus on change in behaviour, create sense of empowerment,+ve change in ecosystem, need to sustain the change

* Solution must be:Easy2 use,undrstand,access,evolve,focus human behavior,free/cheap,immediate value


Disclaimer

The opinions expressed here are the views of the writer and do not necessarily reflect the views and opinions of the Organization He works for / belongs to.

Enter your email address to subscribe to this blog and receive notifications of new posts by email.

Join 57 other followers

Big Adda