Sunday, May 20, 2012

Hamcrest Matchers in JUnit tests

Normal assertions in JUnit would look like this:

Assert.assertEquals(expectedValue, actualValue); for example Assert.assertEquals(3, bean.getValue());

With hamcrest matchers, we can make the tests much more expressive and with recent versions of JUnit, core hamcrest matchers are bundled with JUnit and so there is no need to download and add hamcrest to our classpath explicitly.

JUnit has this new static method in org.junit.Assert called assertThat which has signature like this:

assertThat(actual, Matcher);

Using this, we can make the tests very expressive. First add some of the static imports:

import static org.hamcrest.core.Is.is;
import static org.hamcrest.core.IsNot.not;
import static org.hamcrest.core.IsEqual.equalTo;
import static org.hamcrest.core.IsNull.nullValue;
import static org.junit.Assert.assertThat;

Then, assertions can look like this:

      assertThat(bean.getValue(), is(equalTo(3)));
      assertThat(bean.toString(), is("XYZ"));
      assertThat(bean.getNewValue(), is(nullValue());
      assertThat(bean.getType(), is(not(nullValue()));

This shows how readable these tests are when compared to the regular assertions. Also, we can see that matchers can be nested. In the above block, is and not, is and equalTo, is and nullValue() are chained to make it more readable.

There are more matchers available in org.hamcrest.core package inside junit jar. In Eclipse, you can open up the junit jar under referenced libraries and navigate to this particular folder in package explorer to see other available matchers.

Only drawback that I found is, I cannot use assertThat for comparing double values with tolerance. Other than that, I tend to assertThat for most of my assertions. It certainly makes my tests much more readable and expressive!
 

Sunday, April 8, 2012

PMP Cheat Sheet

This PMP cheat sheet is a follow up to my earlier post on PMP formulas cheat sheet. I've gathered these as I've prepared for the exam and posting it here so that others preparing can benefit from it.

Questions:
  1. What is a project?
  2. What is a program? 
  3. What is a portfolio?
  4. Who are stakeholders?
  5. Define stakeholder characteristics?
  6. What is contingency reserve?
  7. What is management reserve?
  8. What is last step in project closing?
  9. How will you choose a project given NPV of many projects?
  10. What is value engineering?
  11. Who issues project charter?
  12. What type of contract is purchase order?
  13. Sensitivity analysis is a technique in which process?
  14. Name some techniques in Perform Quality Assurance?
  15. What is Kaizen approach?
  16. Quality is management problem is mentioned by?
  17. Zero defects/Do it first time is mentioned by?
  18. Components of decision tree?
  19. What is critical chain?
  20. What is constructive change?
  21. What is code of accounts?
  22. Difference between precision and accuracy?
  23. Difference between quality and grade?
  24. Difference between agreement and contract?
  25. Difference between product scope and project scope?
  26. What is free float?
  27. What is total float?
  28. What is project scope statement?
  29. How to interpret control chart?
  30. What is staffing management plan?
  31. What is resource histogram?
  32. What is pareto chart?
  33. What is workaround?
  34. What is control account?
  35. What are types of contracts?
  36. List some information gathering techniques used in identifying risk?
  37. Define Time and Material contracts?
  38. What are seven basic tools of quality?
  39. What are different types of conflict management techniques?
  40. What are ways to handle negative risks?
  41. What are ways to handle positive risks?
  42. What are different stages of team development?
  43. What is Maslow's hierarchy of needs (from bottom to top)?
  44. List different types of power?
  45. Which power is very effective?
  46. Mention some sources of conflicts?
  47. What is procurement audit?
  48. What is gold plating?
  49. What is point of total assumption?
  50. What is war room?
  51. What is the sequence of actions that should happen when an issue happens?
  52. What is scope baseline?
  53. What is marginal analysis?
  54. What is zero sum reward system?
  55. What is murder board?
  56. What is oligopoly?
  57. What is Ethnocentrism?
  58. What is force majeure?
  59. What is typical duration range for WBS activity?
  60. What are responsibilities of risk owner?


Answers:
  1. Project is temporary endeavor undertaken to create unique product, service or result (has defined start and end date)
  2. Program is group of related projects
  3. Portfolio is group of projects or programs (may or may not be dependent). They are grouped together for effective management.
  4. Stakeholders are persons or organizations whose interests may be positively or negatively affected by the performance or completion of the project. Stakeholders include project team as well. 
  5. The stakeholders of a project typically have conflicting objectives. They have maximum influence during initial stages of the project.
  6. Contingency Reserve is to cover known unknowns (known risks)
  7. Management Reserve to cover unknown unknowns (unknown risks)
  8. Last step in project closing is gather lessons learned and archive project info (Organization Process Assets updates) for future use
  9. Choose project with high NPV (i.e high net present value)
  10. Value engineering is less costly method to deliver same scope without performance degradation
  11. Project sponsor issues project charter
  12. Purchase order is fixed price type contract
  13. Sensitivity analysis is a technique in Quantitative Risk Analysis
  14. Quality audits, process analysis (includes root cause analysis) are some techniques in Perform Quality Assurance
  15. Kaizen approach is Continuous improvement
  16. Quality is management problem is mentioned by Deming
  17. Zero defects/Do it first time is mentioned by CrosbySquare - Decision node, Circle- Chance node, Triangle - end of branch.
  18. Decision tree components are square - decision node, circle- chance node and triangle - end of branch.
  19. Resource constrained critical path is critical chain.
  20. Undocumented change to contract is constructive change.
  21. Code of accounts is numbering system used to uniquely identify each component of the Work Breakdown Structure (WBS).
  22. Precision is values of repeated measurements are clustered and have little cluster. Accuracy is measured value is close to true value.
  23. Quality is degree to which a set of inherent characteristics fulfill requirements. Grade is category assigned to products or services that have the same functional use but different technical characteristics. Low quality is not acceptable, but low grade may be acceptable.
  24. Agreement is not legally binding but a contract is legally binding.
  25. Product scope means the features and functions of the product or service being built. Project scope means the work that's needed to build the product. 
  26. Free float is time that an activity can be delayed from it's early start date without delaying early start of any immediately following schedule activities.
  27. Total float is time that an activity can be delayed from it's early start date without delaying the project finish date.
  28. Project scope statement contains deliverables and also the work required to create those deliverables.
  29. Process is considered out of control when a data point in control chart exceeds control limit or if seven consecutive points in control chart are above or below (i.e on one side) of the mean.
  30. Staffing management plan adds time (schedule) component to Human Resource (HR) plan. It also includes rewards and recognitions, training requirements and release criteria.
  31. Resource histogram is part of staffing management plan. It describes the type and quantity of resources needed over a period of time.
  32. Pareto chart is type of histogram ordered by frequency of occurrence. It shows how many defects were generated by type of category of identified cause.
  33. Workaround is response to negative risk event. Differs from contingency plan in that workaround is not planned in advance.
  34. Control account is management control point where scope, cost and schedule are integrated and compared to the earned value for performance measurement.
  35. Different types of contracts are Fixed Price, Cost-Reimbursable, Time and material.
  36. Information gathering techniques used in identifying risk are Brainstorming, Interviewing, Delphi technique and root cause analysis.
  37. T&M contracts are hybrid type of contractual agreements that could contain aspects of both cost-reimbursable and fixed-price type arrangements.
  38. Seven basic tools of quality are Cause and Effect (Fishbone or Ishikawa) Diagrams, Control Chart, Flowcharting, Histogram, Pareto Chart, Run chart and Scatter Diagram.
  39. Conflict management techniques are Withdrawing/Avoiding, Compromising, Smoothing, Forcing, Collaborating and Confronting/Problem Solving,
  40. Ways to handle negative risks are Avoid, Transfer, Mitigate and Accept.
  41. Ways to handle positive risks are Exploit, Share, Enhance and Accept.
  42. Different stages of team development are Forming, Storming, Norming, Performing and Adjourning.
  43. Maslow's hierarchy of needs from bottom to top are Physiological needs, safety needs, social needs, self esteem needs and self actualization needs.
  44. Different types of power are Reward power, Coercive (penalty) power, Legitimate power, Referent power and Expert power.
  45. Most effective power is Expert power.
  46. Resources, schedules and priorities cause 50% of project problems and conflicts. Schedule is the biggest source of conflict.
  47. Once you've closed out a procurement, it's important to conduct a procurement audit. This is where you go over everything that happened on the project to figure out the lessons learned, and look for anything that went right or wrong. 
  48. Gold plating is when the team adds more work to the project that was not requested by the sponsor or client. It is not scope creep.
  49. The point of total assumption is the point at which the seller assumes the costs. In a firm fixed price contract, this is the point where the costs have gotten so large that the seller basically runs out of money from the contract and has to start paying the costs.
  50. The room the co-located team meets in is called a war room.
  51. When an issue happens, analyze impact of issue -> submit change request -> if approved, update schedule and scope baselines -> implement the change.
  52. The scope baseline is made up of Project Scope Statement, WBS and the WBS Dictionary.
  53. Marginal analysis - The best level of the quality is reached at the point where the incremental revenue being gained from improvements equals the incremental cost being spent to secure it.
  54. A Zero Sum reward system is a win-lose recognition program. For example, with an employee of the month program their will only be one or two team members who will win the award each month. Reward programs should be more win-win.
  55. Murder board is a process where a committee asks questions from project representatives as part of the project selection process. 
  56. Oligopoly - There are few sellers and action of one seller will have impact on other sellers prizes.
  57. Ethnocentrism refers to belief that ones culture is superior to other cultures.
  58. Force majeure is a powerful and unexpected event, such as hurricane or other disaster.
  59. WBS activity should be between 8 and 80 hours.
  60. Every risk should have a risk owner listed in the register. That person is responsible for keeping the response plan up to date and make sure the right actions are taken if the risk does occur.

Saturday, April 7, 2012

PMP Formulas Cheat Sheet

Recently, I took PMP certification. I'm posting the formulas that I had gathered during preparation in my personal cheat sheet, so that others preparing can benefit from it.

Three point estimate (PERT) = (to + 4tm + tp) / 6 (This applies for both cost and time) (to is optimistic estimate, tm is median estimate and tp is pessimistic estimate)
Standard deviation = (p-o)/6 (p is pessimistic and o is optimistic)
Total standard deviation (given other std deviations) is sqrt of the sum of the individual variances (variance is square of deviation)

Schedule variance: SV = EV - PV (EV is Earned Value, PV is Planned Value)
(Note that SV is always 0 at the end of the project (if the project is completed))
Cost variance: CV = EV - AC (AC is Actual Cost)
(CV at the end of the project is AC - BAC) (BAC is Budget At Completion)
(Both SV and CV should be positive. Negative schedule and cost variance means project is behind schedule and over budget respectively)
Schedule Performance Index: SPI = EV/PV
Cost Performance Index: CPI= EV/AC
(Both SPI and CPI should be greater than 1. Schedule and cost performance index less than 1 means project is behind schedule and over budget respectively)
Burn rate = AC / EV = 1/CPI

Forecasting: (Estimate at completion - EAC)
EAC = AC + bottom up ETC (ETC is Estimate To Complete)
EAC = AC + (BAC - EV) - This is applicable if remaining work is estimate to continue at budgeted rate
EAC = BAC / CPI - This is applicable if remaining work continues at current cost
EAC = AC + ((BAC - EV)/ (CPI x SPI)) - This is considering both SPI and CPI

Variance at completion: VAC = BAC - EAC 

Total Cost to Performance Index (TCPI):
TCPI based on BAC = (BAC - EV)/(BAC - AC)
TCPI based on EAC = (BAC - EV)/(EAC - AC) (Ratio of remaining work to funds remaining)

Expected Monetary Value: EMV = Probability X Impact (Cost)
Present Value: PV = FV / ((1+r) to the power of n) (FV is future value)

Wednesday, December 28, 2011

Books I've read in 2011

I mostly read online articles/blog posts to keep me up to date. I read books occasionally whenever I get time. Below are some of the books which I've read this year.
  1. User Stories Applied: For Agile Software Development - This is one of the best books around for writing good user stories. Among many things it talks about how to gather user stories, how to best write them for acceptance testing, how to prioritize user stories, how to estimate user stories, planning for iteration, planning for release, how to measure and monitor velocity etc., Even though this is mainly for product owners/business analysts, it provides good information for developers, testers, scrum masters and managers also.
  2. 97 Things Evey Project Manager Should Know: Collective Wisdom from the Experts - This book is a collection of thoughts on things which every project manager should know and has many nice ideas and tips. This book would be useful not only for project managers, but also for anyone who leads/manages a team. If you are a team lead or development manager or technical manager, then this would be very useful to you. 
  3. The Pragmatic Programmer: From Journeyman to Master - This is one of the classic books on programming.  I think the first version was published back in 1999. Even though it was published many years before, most of the topics covered in this book are still relevant. This is a must read for every programmer and would especially help new programmers.
  4. Maven: The Definitive Guide - Maven's philosophy is convention over configuration. It works great for small projects, but for complex needs we need to configure it extensively. This book (also available as e-book) provides complete reference and would be very helpful for anyone trying to understand Maven intricacies and master it.
  5. PMP Certification: Excel with Ease - Even though I mostly work in Agile environment and like it, I wanted to see how traditional project management works and take PMP certification. This book (based on PMBOK) explains project management concepts in a simple manner. I learned more about general project management from this book and by studying for PMP certification. This book has lot of Q&A for each chapter and valuable tips/tricks on the PMP certification exam. This book would be very useful for anyone preparing for PMP certification.
Though not related directly to these books, below are some of my earlier posts related to these book topics:
  1. My favorite tips from Pragmatic Programmer (Pragmatic Programmer)
  2. Success tips for Agile teams (Agile)
  3. Key Points for any Project (Traditional or Agile) (Project Management, Agile)
  4. Ten tips for conducting effective meetings (Project Management, Agile)
  5. Effective Leadership/Communication skills needed for a Manager (Project Management)
  6. Project Management Process, Process Groups and Knowledge Areas (Project Management)
  7. Managing dependencies in Maven (Maven)
  8. GMaven goodness (Maven)
  9. Writing Maven Plugins (Maven)
  10. Maven 3 Features (Maven)
  11. Upgrading to Maven 3 (Maven)
  12. Maven 3 Parallel Builds (Maven)
  13. Books I've read in 2010 (Books)
  14. Books I've read in 2009 (Books)
 Wish everyone a very Happy and Prosperous New Year 2012!

Project Management Processes, Process Groups and Knowledge areas

Project management as explained by PMBOK (Project Management Body of Knowledge) is accomplished by the appropriate application and integration of 42 logically grouped project management processes. These processes are spread across 5 process groups and 9 knowledge areas.

The five process groups are:
  1. Initiating
  2. Planning
  3. Executing
  4. Monitoring & Controlling
  5. Closing
The nine knowledge areas are:
  1. Project Integration Management
  2. Project Scope Management
  3. Project Time Management
  4. Project Cost Management
  5. Project Quality Management
  6. Project Human Resources Management
  7. Project Communication Management
  8. Project Risk Management
  9. Project Procurement Management
The processes that belong in each process group, what they do and which knowledge area they represent can be confusing. This post (based on the info in PMBOK) discusses about each process group and briefly explains the processes that belong in each process group. The knowledge area they represent is indicated in brackets after the process. This post could serve as reference for project managers and also help someone preparing for PMP certification.

Initiating:

Processes performed to define a new project or a new phase of an existing project.
  • Develop Project Charter (Integration): Process of developing a document that formally authorizes a project and documenting initial requirements that satisfy the stakeholders needs and expectations. Output: Project Charter
  • Identify Stakeholders (Communication): Process of identifying all people or organizations impacted by the project and documenting relevant information regarding their interests, involvement and impact on project success. Outputs: Stakeholder register, Stakeholder management strategy 

Planning:

Processes required to establish the scope of the project, refine the objectives and define the course of action required to attain the objectives of the project.
  •  Develop Project Management Plan (Integration): Process of documenting actions necessary to define, prepare, integrate and coordinate all subsidiary plans. Outputs: Project Management plan.
  • Collect requirements (Scope): Process of defining and documenting stakeholders' needs to meet the project objectives. Outputs: Requirements documentation, requirements management plan and requirements traceability matrix
  • Define scope (Scope): Process of developing a detailed description of the project and product.  Outputs: Project scope statement, project document updates
  • Create WBS (Scope): Process of subdividing project deliverables and project work into smaller, more manageable components. Outputs: WBS, WBS dictionary, scope baseline, project document updates (WBS - Work Breakdown Structure)
  • Define activities (Time): Process of identifying the specific actions to be performed to produce the project deliverables. Outputs: Activity list, activity attributes, milestone list
  • Sequence activities (Time): Process of identifying and documenting relationships among the project activities. Outputs: Project schedule network diagram, project document updates
  • Estimate activity resources (Time): Process of estimating the type and quantities of material, people, equipment, or supplies required to perform each activity. Outputs: Activity resource requirements, resource breakdown structure, project document updates
  • Estimate activity duration (Time): Process of approximating the number of work periods needed to complete individual activities with estimated resources. Outputs: Activity duration estimates, project document updates
  • Develop Schedule (Time): Process of analyzing activity sequences, durations, resource requirements and schedule constraints to create the project schedule. Outputs: Project schedule, schedule baseline, schedule data, project document updates
  • Estimate costs (Cost): Process of developing an approximation of the monetary resources needed to complete project activities. Outputs: Activity cost estimates, basis of estimates, project document updates
  • Determine budget (Cost): Process of aggregating the estimated costs of individual activities or work packages to establish an authorized cost baseline. Outputs: Cost performance baseline, project funding requirements, project document updates
  • Plan quality (Quality): Process of identifying quality requirements and/or standards of the project and product and documenting how the project will demonstrate compliance. Outputs: Quality management plan, quality metrics, quality checklists, process improvement plan, project document updates
  • Develop Human Resource plan (Human Resource): Process of identifying and documenting project roles, responsibilities and required skills, reporting relationships and creating a staffing management plan. Output: Human Resource Plan
  • Plan communications (Communication): Process of determining project stakeholder information needs and defining a communication approach. Outputs: Communication management plan, project document updates
  • Plan risk management (Risk): Process of defining how to conduct risk management activities for a project. Output: Risk Management plan
  • Identify Risks (Risk): Process of determining which risks may affect the project and documenting their characteristics. Output: Risk register
  • Perform Qualitative risk analysis (Risk): Process of prioritizing risks for further analysis or action by assessing and combining their probability of occurrence and impact. Output: Risk register updates
  • Perform Quantitative risk analysis (Risk): Process of numerically analyzing the effect of identified risks on overall project objectives. Output: Risk register updates
  • Plan risk response (Risk): Process of developing options and actions to enhance opportunities and to reduce threats to project objectives. Outputs: Risk register updates, risk contract related decisions, project management plan updates, project document updates
  • Plan procurements (Procurements): Process of documenting project purchasing decisions, specifying the approach and identifying potential sellers. Outputs: Procurements management plan, procurements statement of work, make-or-buy decisions, procurement documents, source selection criteria, change requests

Executing:

Processes performed to complete the work defined in project management plan to satisfy the project specifications.
  •  Direct & Manage project execution (Integration): Process of performing the work defined in the project management plan to achieve the project's objectives. Outputs: Deliverables, work performance information, change requests, project management plan updates, project document updates
  • Acquire project team (Human Resource): Process of confirming human resource availability and obtaining the necessary team to complete project assignments. Outputs: Project staff assignments, resource calendars, project management plan updates
  • Perform quality assurance (Quality): Process of auditing the quality requirements and the results from quality control measurements to ensure appropriate quality standards are used. Outputs: Organization process assets updates, change requests, project management plan updates, project document updates
  • Develop project team (Human Resource): Process of improving the competencies, team interaction and the overall team environment to enhance project performance. Outputs: Team performance assessments, enterprise environmental factors updates
  • Manage project team (Human Resource): Process of tracking team member performance, providing feedback, resolving issues and managing changes to optimize project performance. Outputs: Enterprise environmental factors updates, organization process assets updates, change requests, project management plan updates
  • Distribute Information (Communication): Processing of making relevant information available to project stakeholders, as planned. Output: Organization process assets updates
  • Manage stakeholder expectations (Communication): Process of communicating and working with stakeholders to meet their needs and addressing issues as they occur. Outputs: Organization process assets updates, change requests, project management plan updates, project document updates
  • Conduct procurements (Procurements): Process of obtaining seller responses, selecting a seller and awarding a contract. Outputs: Selected sellers, procurement contract award, resource calendars, change requests, project management plan updates, project document updates

Monitoring & Controlling:

Processes required to track, review and regulate the progress and performance of the project.
  • Monitor & Control project work (Integration): Process of tracking, reviewing and regulating the progress to meet the performance objectives defined in the project management plan. Outputs: Change requests, project management plan updates, project document updates
  • Perform Integrated Change control (Integration): Process of reviewing all change requests, approving changes and managing changes to the deliverables, organization process assets, project documents and project management plan. Outputs: Change requests status updates, project management plan updates, project document updates
  • Verify scope (Scope): Process of formalizing acceptance of the completed project deliverables. Outputs: Accepted deliverables, change requests, project document updates
  • Control scope (Scope): Process of monitoring the status of the project and product scope and managing changes to the scope baseline. Outputs: Work performance measurements, organization process assets updates, change requests, project management plan updates, project document updates
  • Control schedule (Time): Process of monitoring the status of the project to update project progress and managing changes to the schedule baseline. Outputs: Work performance measurements, organization process assets updates, change requests, project management plan updates, project document updates
  • Control costs (Cost): Process of monitoring the status of the project to update the project budget and managing changes to the cost baseline. Outputs: Work performance measurements, budget forecasts, organization process assets updates, change requests, project management plan updates, project document updates
  • Perform quality control (Quality): Process of monitoring and recording results of executing the quality activities to assess performance and recommend necessary changes. Outputs are quality control measurements, validated changes, validated deliverables, organization process assets updates, change requests, project management plan updates, project document updates
  • Report performance (Communication): Process of collecting and distributing performance information including status reports, progress measurements and forecasts. Outputs: Performance reports, organization process assets updates, change requests
  • Monitor and control risks (Risk): Process of implementing risk response plans, tracking identified risks, monitoring residual risks, identifying new risks and evaluating risk process effectiveness throughout the project. Outputs: Risk register updates, organization process assets updates, change requests, project management plan updates, project document updates
  • Administer procurements (Procurements): Process of managing procurement relationships, monitoring contract performance and making changes/corrections as needed. Outputs: Procurement documentation, organization process assets updates, change requests, project management plan updates

Closing:

Process performed to finalize all activities across all process groups to formally close the project or phase.
  •  Close project or phase (Integration): Process of finalizing all activities across all of the project management process groups to formally complete the project or phase. Outputs: Final product, service or result transition, organization process assets updates
  • Close procurements (Procurement): Process of completing each project procurement. Outputs : Closed procurements, organization process assets updates

Reference: A Guide to the Project Management Body of Knowledge (PMBOK Guide) - Fourth Edition

Tuesday, December 27, 2011

Ten tips for Conducting Effective Meetings

We all have been in meetings which are boring, too long, where other participants are poking their phones or even sleeping. This is partly because meetings are not conducted properly. Considering how many meetings we all attend every day, it is important to make meetings effective. Ineffective meetings could easily cost thousands of dollars to the organization (for ex, think about a team  of 6 meeting several times a week ineffectively) Below are some of the tips that could help in conducting effective meetings:
  1.  Invite only relevant people to the meeting - It is important to invite only relevant people. Non-relevant participants either would not pay attention to meeting discussion or distract the meetings. They would be better off doing some real work.
  2. Provide meeting agenda in meeting invite - This would help everyone to prepare for the meeting accordingly. This would also help participants to decide if the meeting is relevant for them and they can decide whether to accept or decline the invite accordingly.
  3. Set up ground rules for the meeting - This needs to be done at the start of the meeting. This could be format of the meeting, behavior during the meeting, no use of cell phones etc., Ask if everyone is ok with this or if they want to add their own.
  4. Discuss only things on agenda - During meetings, it is very easy to get distracted or get into too much details on one topic. Avoiding this or having the facilitator remind everyone when this happens is important so that meeting discussion is on track.
  5. Have a good communication link - Having everyone co-located during meetings is very rare these days. Even if there is no off-shoring, we often work with other teams in US. Make sure you have a good phone line or better a good video-conferencing facility, if your organization can afford it.
  6. Have short meetings - Short meetings are more effective. Attention span of participants might reduce as time goes by. 30 mins or 1 hour is a good time for meetings. If you need to have meetings beyond that, make sure you think about it and have a valid reason to do so.
  7. End meetings on time - Even if you have short meetings, make sure that meetings ends on time. Participants might have something else scheduled after this and it is important to respect other people's time. Many participants tune out or think about the next thing they are going to do, once meeting goes past the scheduled end time. 
  8. Communicate results of the meeting - Conclude the meeting with results of the meeting and mention if any follow-up meetings are necessary. After the meeting, document (text, word, wiki etc.,) what was discussed in the meeting and send it to everyone (even to people who have missed the meeting). This would help participants to go back later on and find out what was discussed in the meeting. It could also serve as input for subsequent meetings.
  9. Do not spread meetings throughout the day - Try to have meetings when team members are disturbed from their normal work anyway. Having back to back meetings or meetings concentrated in mornings or evenings leaves people some undisturbed time to work on their regular stuff. Programming needs concentration and every time people get disturbed, it takes time for them to get back on track.
  10. Be a good facilitator - Being a good facilitator is key and can make even dull meetings fun. Having good communication skills, understanding of the subject etc., make meetings relevant. One of the key thing is to make everyone participate and make sure that no one's view is neglected. Facilitation skills are not easy for technical guys but is important to focus on.
I'm sure there are other points that would help too. If you want to add more, feel free to add them as comments.

Monday, December 26, 2011

Maven 3 Parallel builds

We upgraded to Maven few months back and recently tried parallel builds feature (I've posted about Maven 3 features in this earlier post - http://rajakannappan.blogspot.com/2011/07/maven-3.html.) in hopes of improving our build times. But, unfortunately our build times did not improve at all.

We are using the latest maven 3 version (3.0.3) and also the latest maven plugins available to date. Still, we get the many plugins are not threadsafe and so they don't take advantage of the parallel builds. For example, we get this during our build which shows these plugins are not threadsafe.

[WARNING] ********************************************************
[WARNING] * Your build is requesting parallel execution, but project
[WARNING] * contains the following plugin(s) that are not marked as
[WARNING] * @threadSafe to support parallel building.             
[WARNING] * While this /may/ work fine, please look for plugin updates
[WARNING] * and/or request plugins be made thread-safe.           
[WARNING] * If reporting an issue, report it against the plugin in
[WARNING] * question, not against maven-core                      
[WARNING] ********************************************************
[WARNING] The following plugins are not marked @threadSafe in 
[WARNING] MyProjectName project:
[WARNING] org.apache.maven.plugins:maven-pmd-plugin:2.6
[WARNING] org.codehaus.mojo:cobertura-maven-plugin:2.5.1
[WARNING] org.codehaus.groovy.maven:gmaven-plugin:1.0
[WARNING] org.codehaus.mojo:buildnumber-maven-plugin:1.0
[WARNING] org.codehaus.mojo:exec-maven-plugin:1.2.1
[WARNING] ********************************************************

It is unfortunate that these plugins don't support running in parallel even though Maven3 is out for a while now. Just posting my experience and hope it changes soon...