Wednesday, October 23, 2013

SCRUM Master - Job Description

Summary
The Scrum Master will be responsible for developing and maintaining an agile SDLC for a development organization for a project team spread over multiple geographies, time zones and mix of multiple vendors (contractors) and employees. Scrum Master will also be responsible for the coaching/mentoring of existing development managers/leads on Scrum methodology as it is implemented and used during the project development life cycle.

As Scrum Master you must act like "Glue" or "Lubricant" depending on what the situation requires.

Role and Responsibilities
·         Develop and maintain agile SDLC for a software development organization, creating necessary standards, tools and best practices.
·         Guiding the team and organization on how to use Agile/Scrum practices and values to delight customers
·         Guiding the team on how to get the most, out of self-organization
·         Champion values of self-organization across organization
·         Assessing the Scrum maturity of the team and organization and coaching the team to higher levels of maturity, at a pace that is sustainable and comfortable for the team and organization
·         Removing impediments and/or guiding the team to remove impediments by finding the right personnel to remove the impediment.
·         Building a trusting and safe environment where problems can be raised without fear of blame, retribution, or being judged, with an emphasis of healing and problem solving.
·         Facilitating getting the work done without coercion, assigning, or dictating the work.
·         Act as protector of team and moderator to resolve issues within team if arise.
·         Helps team to focus on current Sprint, achieve sprint goals  and value optimization
·         Strive to help team to become high performance team with transparency, self-organization, business value focus, cooperation with competition
·         Helps Team to learn from its experiences
·         Supporting and educating the Product Owner, especially with respect to grooming and maintaining the product backlog.
·         Educating Product Owner on benefits of sustained velocity and setting up cadence of delivery
·         Providing all support to the team using a servant leadership style whenever possible, and leading by example
·         Ensures a proper power balance between PO, Team, and Management
·         Addresses needs efficiently and effectively
·         Detects hidden problems and strives to solve them
·         Facilitating discussion, decision making, and conflict resolution
·         Assisting with internal and external communication, improving transparency, and radiating information

Required Skills
·         CSM certification from Scrum Alliance

·         The ability to distinguish between what "is Scrum" what is "not Scrum"
·         Knowledge of other Agile approaches: XP, Kanban, Crystal, FDD, TDD, etc.
·         Understanding of technologies used by team

·         Must understand evolution of Scrum Master role in team over time period


Optional Skills

·         CSP certification from Scrum Alliance

Wednesday, October 2, 2013

Does unstructured data exist?



While talking to NO SQL enthusiastics, I often hear that No SQL database can handle unstructured data. Similar arguments are also echoed by Hadoop and BigData devotes.  Are these people are technically correct or just using marketing hype to influence IT decision makers who are business savvy but technical dependent?

In my point of view, there is nothing called unstructured data. NO SQL, Hadoop and BigData zesty people are calling any dataset which does not fit in relational data base as unstructured data. What do you think?

In the context of data, there are two attributes which defines complexity. First is relationship among objects (equivalent to tables in relational database) of data and second is varying number of elements (equivalent to columns in a table in relational database) in objects. With respect to these two parameters there are four possible combinations:

      * Both number of elements in objects and relationship among objects is fixed; it is not changing over time period.
a.       Numbers of elements in objects are fixed and relationships among objects are simple and can be described using relational math. This type of data is prime candidate for relational database.
b.      Numbers of elements in objects are fixed and relationships among objects are not simple and difficult/nearly impossible to describe using relational math. For example if relationships among objects are mimicking graph structure than graph database (e.g. Neo4j) is better choice than relational or any other type of database.

      * Numbers of elements in objects are varying on ad hoc basis irrespective of complexity of relationships among objects than relational database is not the solution. You need database which can accommodate varying number of elements in  objects such as MongoDB

       * Numbers of elements in objects are fixed but relationship among object is varying on ad hoc basis. Again relational database is not the solution. You should explore HBase or MongoDBfor this scenario. 

          *Both numbers of elements in objects are varying and relationships among objects are changing on ad hoc basis. Yep, you guessed correctly, relational database is not the part of the solution. For this scenario you can explore HBase or MongoDB.

In above discussion, I have not considered volume of data.

In truly unstructured data, structure of data is not definable. If one can’t define a structure, then structure does not exist from programming perspective. 

There is no unstructured data. Data has structure, we may have not been able to discover or comprehend it yet.

Tuesday, September 3, 2013

Book Review: Good Math: A Geek's Guide to the Beauty of Numbers, Logic, and Computation (Pragmatic Programmers)


Book Review:  Good Math: A Geek's Guide to the Beauty of Numbers, Logic, and Computation (Pragmatic Programmers) by Mark Chu-Carroll: Publisher- Pragmatic: ISBN- 13: 978-1937785338

Good Math is excellent book for software programmers who do not have formal education in Mathematics. Book covers variety of topics.

Part 1 of book starts with Pop Sci style (discussion on very light topics like Natural Numbers, Integers, etc). In Part 2, book strengthens Pop Sci style while discussing Zero, Golden Ratio, etc. In Part 3, book is at its epitome for Pop Sci style while discussing about Roman Numerals, Egyptian Fraction, and Continued Fraction.

Part 4 diverges from Pop Sci and ventures into realm of Logic and Programming. Discussion about Logic (with reference to Mr. Spock of Star Trek is superb). Part 5 prepares readers to take a dive into Set Theory which is fantastic. Lastly, Part 6 enters into kingdom of Lambda Calculus.

Though book has some flaws (like In Chapter 13, mathematical notation is used but basic introduction in provided in chapter 16) but no one is perfect.

I would like to see some talk around Prime numbers, infinity, and infinitesimal in Pop Sci part.

Good Math inspired me to extend my ninth grader/sophomore blog post to include Lambda calculus apart from other software topics.

Good Math is certainly going to live long on my bookshelf.

Disclaimer: I did not get paid to review this book, and I do not stand to gain anything if you buy the book. I have no relationship with the publisher or the author.

Further reading: I am not aware of any other book which covers topic of mathematics and computers in similar fashion as Good Maths. Only one book I can think of near to style and concept of Good Maths is Understanding Computation: From Simple Machines to Impossible Programs  by Tom Stuart.

One can get more information about book and related topics from:

  1. Mark’s blog: http://scientopia.org/blogs/goodmath/
  2. Amazon: http://www.amazon.com/Good-Math-Computation-Pragmatic-Programmers/dp/1937785335
  3. Publisher -- Pragmatic http://pragprog.com/book/mcmath/good-math



Thursday, August 29, 2013

Distributed Systems and CAP Theorem: For my sophomore



Yash: Papa, do you have few minutes!!

Me: Yes. What is the issue!!

Yash: Nothing. I was wondering what is CAP theorem? I was trying to understand it but it is confusing. It talks about Consistency, Availability and Partition Tolerance in Distributed Systems. I have little idea about distributed systems but CAP Theorem ….

Me: It should not be a challenge. First tell me what do you know about Distributed Systems?

Yash: In distributed systems, various components of software systems run on different machines. So, if one component needs to be scaled up, that can be done individually without affecting remaining components.

Me: OK. Give me an example.

Yash: Let us assume, I have a Java program which also has database. So as you explained to me in MVC pattern (link to MVC here) there will be few distinct components:

  • JSP s representing View
  • Some servlets which will be holding controller logic
  • Java Beans which will be talking to database
  • Database to hold data

and....

Me: Hold on. Add one more component in your list.


  • Images which will be displayed in browser with JSPs.


Yash: OK. So I have 5 components. So potentially I can host my application on five different computers. One machine for each component. And suppose with time, due to increased data, I can add one more machine for database. So, totaling 6 machines. Here I am taking benefit of distributive computing.

Me: Fantastic!!

Me: Should be talk about CAP Theorem?

Yash: Yes. I want to know it.

Me: OK. So we will start from non-computer life.  One day you wake up and had a great idea to start your own company.  Its name will be AskMe. It has very simple service to offer. People will call AskMe and give their reviews about restaurants. Also they can ask AskMe to give reviews about a particular restaurant as given by other reviewers. 

Since you were very enthusiastic about this idea. , so you talk with your friends in school. Few of your friends become member of AskMe. To keep track of each member and review you started to write details in a Note book. 

AskMe service is unique and people liked the idea of restaurants review over phone, word of mouth helped. AskMe started to gain new customers. With increased customer base, you started to miss calls, which is not good for business. 

You rope in your brother in AskMe business. You wanted that customer should have only one telephone number for AskMe, so got another line with same telephone number and internally rote the calls depending upon who is free (You and your brother). You also gave a separate note book to your brother where he can jot down reviews and also read the reviews if asked. You were happy. 

But within few days, you realized that some restaurants are in your note book and some other in your brother’s note book. It means AskMe is not giving correct reviews to its customer. You and your brother think through the problem at hand and decided that every day in morning, both need to tally each other note book, and ensure that both note books are in sync.

This arrangement worked but after few days, you and your brother have small fight and your brother decided not to sync his note book with yours. AskMe is in trouble. Also during non-fight days you noticed that AskMe cannot start working till both of you sync your booklets and invariably both note books are out of sync during day time.

Now let us list the challenges AskMe is facing:


  • Both notebooks may not be in sync all the time. This may not happen because one of you may decide not to sync due to any reason
  • If during day time, if you both decide to sync your note books, during that time AskMe service will not be available
  • One of you may not show at work which will result in missed calls


Yash: It seems to me that out of these three challenges only two can be solved at a given point of time. 


  • If AskMe decide to sync all notes book all the time, few calls will be missed.
  • If at least one of us decides not to show for work again few calls will be missed.
  • If AskMe add more people to take calls, there will be more time consumed to sync up the note books, again few calls will be missed.


It seems to me that there is no perfect solution.

Me: This is CAP Theorem. C is for Consistency, A is for Availability, and P is for Partition Tolerance. In any distributed computer system, all three cannot be achieved.

Yash: Does it mean, all distributed computer systems are not perfect in terms of Consistency, Availability and Partition Tolerance?

Me: Yes, but there are techniques to reduce the impact.

Friday, August 23, 2013

Book Review: Data Science for Business



Book Review:  Data Science for Business: What you need to know about data mining and data-analytic thinking by Foster Provost and Tom Fawcett: Publisher- O'Reilly: ISBN- 13: 978-1449361327

 
As name suggest Data Science for Business is for business people. It is an education book for business people not for technical crowd.

Book explains Data science and data mining concepts in very crisp manner. Those who does not have patience to read whole book should read chapter two. Now if you interested then go ahead. I guess you will.

Book is around 500 pages long which makes it difficult to read but still book has good content for business folks without using arcane jargon.

Disclaimer: I did not get paid to review this book, and I do not stand to gain anything if you buy the book. I have no relationship with the publisher or the author. I got electronic format of book from publisher for review.



One can get more information about book and related topics from:

  1. Book’s web presence http://data-science-for-biz.com/
  2. Amazon: http://www.amazon.com/Data-Science-Business-data-analytic-thinking/dp/1449361323
  3. Publisher -- Oreilly http://shop.oreilly.com/product/0636920028918.do