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.