Friday, April 11, 2014

Release Management and Agile way of working


Recently while talking to my friends who are in Release Management business, everyone had very good review about Agile. But when we started Agile in Release management, everyone agreed that for release management, Waterfall is only solution. Even I agreed to the proposition.

But yesterday night, when Hypnos (Goddess of sleep) eluded me, suddenly Release Management and Agile started wandering in front of my eyes.  Do really Agile and Release Management are two different species which has nothing in common? I started thinking in different angle.  

Is actual process of release not equivalent to run time of a software product?

Release is an execution of Release Plan. Now the question is: Is Agile applicable in making Release Plan. Answer is profound YES.

Any thoughts?

Tuesday, April 1, 2014

For my High Schooler - Object oriented vs Procedural Languages


Yash: Do you know, today we discussed difference between Object Oriented and Procedural languages.

Me: That’s good. May you like to explain to me?

Yash: Yes. It is very simple.

Yash: Before that I have a story to say.

Me: Go ahead.

Yash: OK.  I have a question for you.

Me: As you wish.

Yash: On Saturday morning mom ask you to go and get a bread loaf from grocery store.  What are the different things you will do?

Me: It is easy. I will get dressed. Fetch the car from garage and drive to store. Park the car in parking lot. Enter into grocery store, fetch the bread loaf. Pay for the loaf. Ride back to home in my car and that’s all.

Yash: OK.  In your answer, you are focused on verbs – sequence of actions.

Yash: I can explain the same story in different way where focus will be nouns. There are various entities like Mom, Dad, Car, Parking Lot, Store, Bread Loaf, Cashier, etc. These entities has their own actions like Car can move from Home to store and back, Cahier can accept the money etc. Interaction of these entities will result in purchase of bread loaf.

Me: accepted.

Yash: Moreover, an entity may perform several actions, say cashier can accept money and also give carry bag. This mean if we explain in terms of noun, system can grow in complexity and scale.

Me: I am overwhelmed.

Yash: In languages where focus is verbs are procedural languages. In Object oriented languages focus is Noun.

Me: Great!

Tuesday, March 18, 2014

Scrum Retrospective – What about best practices and learning from success?


As per Scrum Guide, the purpose of the Sprint Retrospective is to:

  • Inspect how the last Sprint went with regards to people, relationships, process, and tools;
  • Identify and order the major items that went well and potential improvements; and,
  • Create a plan for implementing improvements to the way the Scrum Team does its work.


But Scrum Guide is silent about on How?

The question of how become more important as scale of Scrum Agile increases in an enterprise.

To answer one part of How – “How and why something worked well?” Fu Pan might be an answer.

Fu Pan concept has its origin in Lenovo and widely supported by its chairman Liu Chuanzhi. The idea is to intentionally slow down and analyze events - both successes and failures - in order to learn from them and move ahead at a faster pace.

Goal:  What had you originally set out to do?

Measure results: What have you achieved and is it what you set out to do?

Brainstorm: Find outcomes, highlights and lowlights of the final result

Analysis: Get to the root cause of why the outcomes were achieved

Insights: Learnings based on the analysis. Determine what to replicate in the future, what behaviors to start, stop and continue

I am planning to use Fu Pan during Retrospective and also at Program level.

Any ideas, pointers?

Reference:

Tuesday, March 11, 2014

For my High Schooler: Application Server


Yash: Today in Java class, we discussed Application Server.

Me: What is that?

Yash: Don’t make fun of me.  Can you correlate it to some interesting example?

Me: I can try.

Yash: hmm…

Me: Ok. Name the planet on which we live.

Yash: Obviously, Earth.

Me: Is whole of earth has a same geographic feature?

Yash: No. We have sea, savanna, tropical jungles, desert, glaciers, polar ice caps, etc.

Me: Good.  Are animals living in these geographies same or different?

Yash: Naturally different. In sea you will find shark, whales, octopus and other sea creatures, in jungles you can encounter lions, giraffe, elephants and other animals. You will certainly find polar bears at North Pole. Similarly in other geographies different animals are living.

Me: Very true. Why so?

Yash: Because, each animal has different requirements to live, this can be fulfilled in a particular geography.

Me: Excellent. Let me rephrase.  Each animal has a different life cycle which can be supported only in a particular geography. Also there are some common requirements like oxygen to breathe, water to hydrate, etc.  which are available in all geographies.

Yash: yep.

Me: Let’s put this whole concept in technical terms. Earth is an Application Server which provides some minimum set of features (like security, object pool, etc.) to hosted containers like tropical jungles, seas, savanna, etc. (Servlet container, JSP Container, EJB Container, JMS Provider, etc.). These hosted containers provide life cycle support to its residents like sharks, whales, lions, etc. (Servlets, JSPs, EJBs, etc.).

Yash: This is terrific.

Me: My pleasure. It’s time for dessert.

Monday, February 24, 2014

For my High Schooler: Inversion of Control


At dining table.

Yash: In programming class, today we have lot of discussion.

Me: About what?

Yash: Teacher was saying that Inversion of control is completely swept the programming land scape. It has changed the way, Java programs are written.  She explained Inversion of Control but most of the students were not able to understand the concept.

Me: hmm…

Yash: But you know, I know what is IoC?

Me: Explain to me.

Yash: It is very simple. In IoC, we try to separate What and When.

Me: I didn’t get it.

Yash: In a program, we have What part and When part. IoC states that separate What from When.

Me: Explain.

Yash: Let me think of an example.

Me: ok.

Yash: I saw you working on very old computer in our garage. In one of the screen, program was asking your name. You entered your name. Then it asked your address. You entered address.  In the end it asked you to save the entered value. Here What and When are tightly coupled.  You cannot enter address without entering name. This is an example of with IoC.

Me: Nice example.

Yash: It is not complete yet. It is now turn of example with IoC. Now think of today’s web page. Suppose you want to create an account with yahoo mail. This page will ask your name, address, phone number, and other things. On this page you can enter your name, address, phone number, etc. in any order.  Here What and When are separated as far as this page is concerned.

Me: Fantastic. You certainly deserve some reward. What about Ice cream.

Tuesday, February 11, 2014

7 Hot programming trends


  1. Preprocessors: No one wants to develop a language from scratch. Either we are getting lazy or smart (why to reinvent wheel). Take a look at Groovy, Scala, Closure, JRuby, Jython, CoffeeScript, Dart and many more.
  2. JavaScript Framework: It seems JavaScript is taking over server side as well. The growing popularity of Node.js, Rahino, and usage of JavaScript in MongoDB, CouchDB and other NoSQLs is self-evident.
  3. CSS Frameworks: Do you remember when last time you written css file for a web application. To handle complex, complicated and huge web applications, CSS frameworks like SASS, Bootstrap, etc.
  4. Single page web applications: I like to quote Einstein -Everything should be made as simple as possible, but not simpler.
  5. Android everywhere: Android is becoming ubiquitous. As internet of things is getting steam, Android will gain. Just look at car’s dashboards.
  6. DevOps: As Scrum and Kanban has gained acceptability in development projects, it is now Operations and Support projects.
  7. More frameworks and platforms for Internet of Things: As internet of things will steam rolled, so the frameworks and platforms supporting it.

Friday, February 7, 2014

Fix It Sprint


Every business application has bugs, whether developed in Agile or traditional waterfall/spiral methodology.  Recently, we tried Fix-It Sprint in one of the project.

During Fix-It Sprint, all team members of Scrum (Pigs as well as Chickens) assembled in a big conference room and laid out the Fix-It plan. By the way, we have weeklong Sprints.  Team devised following format:

Day 1:

  1. First 2 hours to list down all bugs – whether listed in bug tracking tool or not. Also listed technical issues and challenges, as per Dev team members.
  2. Next 2 hours to prioritize and target for the first day.
  3. Remaining 4 hours to complete the items as per the plan.

Day 2:

  1. First  one hour to update the list created previous day with new items, discovered after fixing previous lot
  2. Next one hour to prioritize and target for the day.
  3. Remaining 4 hours to complete the items as per the plan.

Day 3, 4, 5

  1. Repeat day 2 plan

 

After a week, product was in better shape and satisfaction across team about quality of product was astonishingly high.

 

We are planning to repeat Fix-It Sprint, once in a quarter.

 

Is anyone else is doing similar experiment?