Project management interview questions & answers - Part III

How have you contributed to the success of the project? 
By:
  1. Understanding end goals.
  2. Understanding my role and each team's roles.
  3. Identifying Interdependencies and stating them early on. 
  4. Cross functional and periodic communication via emails, standups, meetings. 
  5. Setting up milestones and periodic checking enabling team to collaborate well.   
  6. Accepting and managing problems.
  7. Recognizing and rewarding the teams. 

How would you increase efficiency of your development team? 
By:
  1. Document Coding and dev standards.
  2. Implement CI integration. 
  3. Release often if possible.
  4. Schedule demos.
  5. Follow test driven development. 
  6. Creating detailed tasks. 
  7. Review backlog
  8. Resolve blockers. 
  9. Have short meetings.
  10. Support initiative 
  11. Rely and trust your team's expertise, where ever possible. 


If you come about an early delay in one of your milestones what would you do?
  1. Catch them early by monitoring the progress of the project and staying in touch with leads through out the project. 
  2. Notify stakeholders: Update them on delay and revised schedules. 
  3. Call for a meeting: Dev, technical teams, vendors, stakeholders, customers and update them on the delay. 
  4. Gather the right resources: Re-allocate the resources. 
  5. Reschedule: Check if some activities that were planned sequentially can be done parallely.
  6. Re-prioritize: List out all the activities that are not yet done. Move the important ones to the top of the list. 
  7. Document the updated plan and send it out to everyone.  

How to decide between traditional project management v/s Agile methologies?
Use traditional when:
  1. Long and detailed planning is required. 
  2. Processes is linear and all the tasks are scheduled sequentially. 
  3. Requires a formal CM process. 
  4. Prioritization is fixed.
  5. Customer feedback can be taken at the end and incorporated into future releases. Customer involvement is low. 
  6. Organization is very centralized. 
  7. ROI is achieved at product release.
  8. Ex: Hardware or non-customer facing projects like infrastructure or technology changes. 
Use Agile when: 
  1. Process and decision making is iterative.
  2. Need customer feedback right away and can be incorporate right away.
  3. Organization is de-centralized. 
  4. Prioritization changes based on business requirements and customer feedback. 
  5. Small amount of work is picked up to be done. Rest can be updated and prioritized based on inputs. 
  6. Customer involvement is high.
  7. ROI is achieved often and is iterative. It determines what the future releases. 

What are the various states of the project? - RYG. What do they stand for? How to move the project from R to G?
Green: Project is within budget, timeline, and expectation.
Yellow: Project might fallout of budget, timeline or expectation and is it risk. Requires special attention from team involved. If needed from higher ups.
Red: Some aspect of the project has fallen behind or encountered major setback or is over budget
How to move R to G: Have a plan on paper, get a buy in, and get it approved. Once everyone agrees to the new set of parameters then move it to G from R.
Some teams move G to Y or R to get feedback from upper management so that they can get their expertise involved to get it done.

Project management interview questions & answers - Part I

Big Data Basics

NoSql:
  1. Data is highly unstructured.
  2. Doesn't follow stringent structure of RDBMS enabling speed and agility. 
  3. DBs are distributed and data can be distributed across multiple nodes and servers. 
  4. Allows for horizontal scaling: As the data grows add more nodes without impacting performance.
Big Data: 
  1. Big Data refers to large collection of data (that may be structured, unstructured or semi structured) that expands so quickly that it is difficult to manage with regular database or statistical tools.
  2. HDFS does not offer native support for security and authentication.
  3. Cluster has nodes

Hadoop v/s conventional DB:

Hadoop:
  1. Data is distributed across many nodes and processing
  2. Write once, read many. Once you write the data, you can delete it but can't modify it.
  3. Archival data: Telephonic call or transaction data
  4. Doesn't support SQL at all.
  5. It is an ecosystem of tools, technologies, and platforms.
  6. Runs on many commodity H/W and uses commodity S/W.
  7. Supports Hbase that is a NoSQL distributed DB.

Conventional DB:
  1. Conceptually all data sits in one server/database.
  2. Data can be modified.
  3. Support SQL


Hadoop layers:
  1. Bottom layer/Layer 1: Commodity Cluster Hardware
  2. Middle layer/Hadoop Layer/Layer 2: MapReduce, HDFS
  3. Top layer/Tools layer/Layer 3: RHadoop, Mahout, Hive, Pig, HBase, Sqoop
  4. RHadoop: Supports statistical language R
  5. Mahout: Machine learning
  6. Hive/Pig: NoSQL
  7. Sqoop: Getting data into and out of the Hadoop file system

Advantages:
1. Scalable
2. Cost effective in terms of processing large volumes of data.

=== Hive ===

  1. It provides SQL intellect so that users can write such queries called as HQL to extract data from hadoop.
  2. These SQL queries are converted to MapReduce queries. These queries in turn will communicate with HDFS.
  3. Great platform to write SQL writes to interact with HDFS.
  4. Not RDMS, or OLTP or real time updates or queries 
  5. Nice features:
    1. Supports different file formats like sequence/text/avro/orc/rc file. 
    2. Metadata gets stored in RDBMS
    3. Provides lots of compression techniques. 
    4. SQL queries are converted into MapReduce or tez or spark jobs. 
    5. UDF can include mapreduce scripts can be plugged 
    6. Specalized joins helps improve query function


Hive v/s RDBMS:
Hive:

  1. Enforce schema on Read and not on write. So you can write any kind of data till you read it. 
  2. Supports storage of 100PetaBytes of data.
  3. Doesn't support OLTP
RDBMS:

  1. Schema on Write. Won't let insert any data if its out of schema. 
  2. Allows storage of around 10PB of data. 
  3. Support OLTP
Impala:

  1. It is not mapreduce
  2. It is Massively Parallel Processing engine on top of Hadoop to query and analyze the data sets. 
  3. Utilizes Hive metastore to store table structure
  4. With the help of external tables, data resides in the Hadoop file system and structure in the metastore.
  5. Popular for Data scientists and analysts. 


Hive v/s Pig v/s Spark
Hive:

  1. Gives non-programmers ability to query and analyze Hadoop DBs
  2. Abstraction layer on top of Hadoop
  3. Batch oriented framework
  4. Useful for structured data. 
  5. Users can use SQL like interface to interact with backend Hadoop platform. 
  6. Supports:
    1. Batch query processing: For huge datasets. 
    2. Interactive query processing: For real time data processing. 
  7. Hive queries get converted into MapReduce jobs. 
  8. Predefined or UDF(User Defined Functions) can be used to perform certain action. 
  9. In hive: 
    1. select * will create a fetch job but not map reduce
    2. Aggregation functions like min, max, etc will create a map reduce job. 
Pig:
  1. Requires some programming knowledge to query and extract the data. 
  2. Abstraction layer on top of Hadoop
  3. Batch oriented framework. 
  4. Useful for structured, semi-structured, and unstructured data. 
  5. Pig has 2 parts: Pig Latin and Pig runtime. 
    1. Pig runtime converts the job from Pig to MapReduce
  6. Popular amongst data engineers
Spark: 
  1. In memory processing, you need to know java to utilize spark. 
  2. Faster but is low level since it requires coding knowledge.
  3. Useful for structured, semi-structured, and unstructured data. 
Decision making between Hive, Pig, Spark
  1. If you have unstructured data then go with Pig or Spark. 
  2. If you have structured data then go with Hive and load the data into Hive. 
  3. If you want faster processing go with Spark. 
  4. If you are fine with waiting few hours then go with Pig or Hive. 
  5. If you have technical knowledge then go with Spark -> Pig -> Hive. 
Few notes:
  1. Solr: Elastic search tool. Searches for words within documents. 
  2. Sqoop is used to import data into Hadoop. Pig is used to process that data. 
  3. Hbase: column family NoSql DB

System design cheatsheet

Database scaling

  1. Horizontal scaling is ensured by adding concurrent machines that will handle more requests.
  2. Path1: The requests will be routed to SQL and it will become slow overtime. To make it better add more RAM, use sharding, denormalization, SQL tuning.
  3. Path 2: Better way to handle scale is denormalize right from beginning or switch to scalable no-sql DB. Even after that you'll need to introduce a cache.

Caching

  1. Users will see performance degradation when loads of data is fetched from the DBs. Cache needs to be implemented in such cases. 
  2. In-memory cache like Redis or Memcached should be considered and not file based caching. 
    1. Data is stored in the RAM. 
    2. Redis can do 100s of 1000s of reads/second. 
    3. Writes(including incremental ones) are faster too. 
  3. Cache sits between storage and application. 
  4. 2 patterns are: 
    1. Cached database queries
    2. Cached objects

A. Cached database queries

  1. Store the query and its result in the cache. 
  2. Query is the key and result is value. 
  3. Problem: If just a column or row changes, you need to remove all the key-value pairs that reside in the cache. That row or column might be used by a lot of queries and might be present in a lot of results. So its not an ideal approach. 

B. Cached objects

  1. Store the class instance so that you can get rid of it if something changes. 
  2. If one DB column value has changed then you need to get rid of the relevant object and not complete object.
  3. So its an ideal approach. 
What to store in cache:
  1. Sessions
  2. User activity stream like twitter
  3. Fully rendered blog posts
  4. user <-> friend relationships

Types of asynchronism

A. For mostly static data that doesn't require a lot of pre-computation:


  1. Website pages that are built with frameworks or CMS should be pre-rendered and stored on AWS or CDN. 
  2. Cron job performs these operations and store/push them on CDNs. 
  3. This will make the site super responsive and could handle multiple requests. 

B. For dynamic data that requires intensive computation:

  1. User comes to the site and requests an operation to be performed. 
  2. Site informs the user that its processing the task and informs the user once the job is done. 
    1. When the task comes it is placed in the queue. 
    2. Worker process will come and pick up the task from the queue. It will process it. 
    3. The worker process finishes the job and informs the Front end about it. 
    4. FE receives the signal and update the user. 
    5. Technologies used for queuing are: Redis list, RabbitMQ, ActiveMQ


Source:
http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones
http://www.lecloud.net/post/7994751381/scalability-for-dummies-part-2-database
http://www.lecloud.net/post/9246290032/scalability-for-dummies-part-3-cache
http://www.lecloud.net/post/9699762917/scalability-for-dummies-part-4-asynchronism


Project management interview questions & answers

How would you handle non-productive developers or team-members?
  1. Align big lofty goals with their personal goals. If not, incentivize them by helping them identify the personal goals(like learning a new programming language that will be used in this project that will help her/him get motivated)
  2. Clearly define roles and responsibilities. Assign accountability to them.
  3. Don't be overly strictly. Put some big rules in place but don't keep overemphasizing them. 
  4. Include the team in decision making and planning process. 
  5. Do retrospective meetings to ensure what has been accomplished and what not. 
  6. Talk to them to understand if they need help.  


How will you get traction from a TPM of another team?
  1. Communicate the goals to them and what impact they are going to make. Indicate KPIs or metrics that this goals could help achieve. 
  2. Align their projects with yours and involve them into planning. 
  3. Divide the projects into roadmap and sub-stories. Make them commit to the sub-stories and ask for timelines.
  4. Offer help if they are not able to achieve those timelines. 
  5. Glorify them when the projects are achieved within reasonable time limits. This will make them very likely to work with you again. 


What are important things of consider while running a cross-team program?
  1. Helps if roles and responsibilities are defined. 
  2. Communication is shared. And their are frequent updates. Frequent meetings of leaders, where they provide updates from their teams. 
  3. Its best if they know the mission and goals one can achieve. Report frequently on KPIs and metrics. 
  4. Encourage cross-functional training. 
  5. Celebrating major milestones and congratulating the team on achieving the goals.


How do you earn trust of your team members.
  1. Lead by example
  2. Communicate openly
  3. Don't place blame on any one person. Tackle the issue at hand without pointing fingers. 
  4. Discuss trust issues. 
  5. Be available to them to discuss project goals and communicate often. 
  6. Develop team exercises. 
  7. Be calm, open, and transparent where ever possible. 
  8. Encourage mutual feedback. 
  9. Allow flexibility in choosing projects, hours.
  10. Be patient with new employees. 


How do you plan a project or program?
  1. Under the project goals. 
    1. Align them with company goals and mission. 
    2. Define KPIs and metrics. 
    3. Prioritize goals. 
  2. Identify stakeholders and meet with them. Discuss project goals with them to see if they help achieve their goals. 
  3. Create a product roadmap. 
  4. Divide roadmap into deliverables. 
  5. Assign deliverables to functional and dev teams. Create a project schedule of the deliverables. 
  6. Identify issues or technology gaps and complete risk assessment. 
    1. Think of alternatives to avoid or minimize risk. 
    2. Think of MVPs in case project runs into delivery issues. 
  7. Present the plan to stakeholders. 
  8. Communicate the plan to the dev teams and keep things moving. 


What in your opinion are three constraints of a project or program?
Its called as Project management triple constraint. Those are:
  1. Time
  2. Cost
  3. Scope
  4. 4th: Meets the customers requirements. - Make it PM diamond.

Tell-tale signs that your project is going to fail:
Objectives:
  1. Missing strategy. 
  2. No clear goals.
  3. Leadership priority issues. 
  4. Too many projects at one time. 
  5. Constant scope changes.
  6. Last minute major changes.
Leaders:
  1. Team doesn't trust higher level or management. 
  2. Management or key people leaves in between the projects.
People:
  1. Stakeholders are not interested. 
  2. No knowledge sharing. 
  3. Resource limits


How do you motivate your team of developers?

  1. Provide them flexibility to choose the projects and times they could work on whenever possible. 
  2. Involve them in planning and important decision making if possible. Don't ask them to do it because upper management is doing it. 
  3. Help them understand what KPIs or metrics you are trying to achieve. And how it will help shape the company. 
  4. Career growth: Help them with career growth if possible. Align the career goals to the projects that are pending.
  5. Innovation: Allow them to utilize latest tools and technologies. If they are going to conferences to learn new things let them go. Request a demo to see you are interested what they have been learning. See if you can put sometime in project planning to let them experiment with new technologies. 
  6. Create structured trainings in the organizations. Let me take online trainings and reimburse it when needed. 
  7. Provide recognition of good work.
  8. Good infrastructure to let them work. 
  9. Empower them to make the decisions where ever possible. Don't wait on you for each and everything. 
How have you contributed to the success of the project? 
By:
  1. Understanding end goals.
  2. Understanding my role and each team's roles.
  3. Identifying Interdependencies and stating them early on. 
  4. Cross functional and periodic communication via emails, standups, meetings. 
  5. Setting up milestones and periodic checking enabling team to collaborate well.   
  6. Accepting and managing problems.
  7. Recognizing and rewarding the teams. 

How would you increase efficiency of your development team? 
By:
  1. Document Coding and dev standards.
  2. Implement CI integration. 
  3. Release often if possible.
  4. Schedule demos.
  5. Follow test driven development. 
  6. Creating detailed tasks. 
  7. Review backlog
  8. Resolve blockers. 
  9. Have short meetings.
  10. Support initiative 
  11. Rely and trust your team's expertise, where ever possible. 


If you come about an early delay in one of your milestones what would you do?
  1. Catch them early by monitoring the progress of the project and staying in touch with leads through out the project. 
  2. Notify stakeholders: Update them on delay and revised schedules. 
  3. Call for a meeting: Dev, technical teams, vendors, stakeholders, customers and update them on the delay. 
  4. Gather the right resources: Re-allocate the resources. 
  5. Reschedule: Check if some activities that were planned sequentially can be done parallely.
  6. Re-prioritize: List out all the activities that are not yet done. Move the important ones to the top of the list. 
  7. Document the updated plan and send it out to everyone.  

How to decide between traditional project management v/s Agile methologies?
Use traditional when:
  1. Long and detailed planning is required. 
  2. Processes is linear and all the tasks are scheduled sequentially. 
  3. Requires a formal CM process. 
  4. Prioritization is fixed.
  5. Customer feedback can be taken at the end and incorporated into future releases. Customer involvement is low. 
  6. Organization is very centralized. 
  7. ROI is achieved at product release.
  8. Ex: Hardware or non-customer facing projects like infrastructure or technology changes. 
Use Agile when: 
  1. Process and decision making is iterative.
  2. Need customer feedback right away and can be incorporate right away.
  3. Organization is de-centralized. 
  4. Prioritization changes based on business requirements and customer feedback. 
  5. Small amount of work is picked up to be done. Rest can be updated and prioritized based on inputs. 
  6. Customer involvement is high.
  7. ROI is achieved often and is iterative. It determines what the future releases. 

What are the various states of the project? - RYG. What do they stand for? How to move the project from R to G?
Green: Project is within budget, timeline, and expectation.
Yellow: Project might fallout of budget, timeline or expectation and is it risk. Requires special attention from team involved. If needed from higher ups.
Red: Some aspect of the project has fallen behind or encountered major setback or is over budget
How to move R to G: Have a plan on paper, get a buy in, and get it approved. Once everyone agrees to the new set of parameters then move it to G from R.
Some teams move G to Y or R to get feedback from upper management so that they can get their expertise involved to get it done.



NoSQL

This one is reviewed but I need to delete its copy from hubpages or somewhere NoSQL Data models: key-value  Aggregate model.  key or i...