Wednesday, February 5, 2025

PMP Project Management Process Overview

    PMBOK Guide (Project Management Body of Knowledge), covering the project lifecycle from initiation to closure. In PMP (Project Management Professional), Process group is represent group of activities that correlate to achieve specifics project objectives. 


1. Initiating Process Group

Goal: Define the project’s purpose, secure authorization, and identify stakeholders.

Key Processes:

  • Develop Project Charter:

    • Purpose: Authorize the project and define its objectives, scope, and high-level requirements.

    • Inputs:

      • Business Case: Why the project matters (e.g., “Build an app to increase revenue by 20%”).

      • Agreements: Contracts or MOUs with clients/vendors.

      • Enterprise Environmental Factors: Organizational culture, market conditions.

      • Organizational Process Assets: Templates, historical data.

    • Output: Project Charter (approved by the sponsor).

    • Tools & Techniques:

      • Expert Judgment: Consult stakeholders or SMEs to refine objectives.

      • Meetings: Workshops with sponsors to align on goals.

    • Example: A charter for building a mobile app might include business goals, budget, and success criteria.

                Project Charter is foundational document that formally authorize the projects and give the project manager authority to use resources.

                Sample of project charter: https://templatearchive.com/project-charter/

  • Identify Stakeholders:

    • Purpose: Determine who is impacted by the project and their expectations.

    • OutputStakeholder Register including:

      • Name/Title

      • Role (e.g., Sponsor, End-User, Vendor).

      • Requirements (e.g., “Needs real-time reporting”).

      • Influence Level (High/Medium/Low).

      • Communication Preferences (e.g., weekly email updates).

    • Tools & Techniques:

      • Stakeholder Analysis: Classify stakeholders by:

        • Power/Interest Grid:

          • High Power, High Interest (Manage closely, e.g., CEO).

          • High Power, Low Interest (Keep satisfied, e.g., regulatory bodies).

          • Low Power, High Interest (Keep informed, e.g., end-users).

          • Low Power, Low Interest (Monitor, e.g., suppliers).

      • Stakeholder Mapping: Visual representation of relationships.

    • Example: Key stakeholders for a software project could include end-users, developers, and executives.

                Identify Stakeholders is process to Identifying everyone impacted by the project and analyzing their interests, influence, and expectations.



2. Planning Process Group

Goal: Create a detailed road map project management plan to guide execution, monitoring and control.

Key Processes:

  • Develop Project Management Plan:

    • Purpose: Integrate all initial and subsidiary plans (Project Charter, Stakeholder Register,  scope, schedule, cost, risk, etc.) into a single document.

    • Output: Project Management Plan (the master plan for the project).

    • Tools & Techniques:

      • Expert Judgment: Consult SMEs for best practices.

      • Facilitation Techniques: Workshops to align team and stakeholders.

  • Plan Scope Management:

    • Purpose: Define how scope will be defined, validated, and controlled.

    • Output: Scope Management Plan.

      • Requirements collection methods (e.g., surveys, interviews).

      • Process for creating the Work Breakdown Structure (WBS).

                Sample of WBS: https://www.stakeholdermap.com/plan-project/example-work-breakdown-structures.html

  • Collect Requirements:
    • Purpose: Identify and documenting all  stakeholder needs and expectations.
    • Tools & Techniques:

      • Interviews/Focus Groups: Direct stakeholder input.

      • Surveys: Broad data collection.

      • Prototyping: Validate requirements with mockups.

    • Output: Requirements Documentation and Traceability Matrix

  • Create Work Breakdown Structure (WBS):

    • Purpose: Break deliverables into smaller, manageable tasks.

    • Output: WBS (hierarchical decomposition of work).

      • Decomposition: Divide deliverables into smaller components (e.g., "Develop Login Page" → "UI Design," "API Integration").

  • Plan Schedule Management:

    • Purpose: Define how the schedule will be created, monitored, and controlled.

    • Output: Schedule Management Plan specifying: Tools (e.g., MS Project, Jira), milestones, and approval processes.


  • Define Activities & Sequence Activities:

    • Purpose: Identify tasks and dependencies. Every activity that correlated need to define and create the sequence of each other

    • Steps:

      1. Define Activities: Break WBS into actionable tasks (e.g., "Write Code for Login Feature").

      2. Sequence Activities: Use Precedence Diagramming Method (PDM) to map dependencies

    • Tools:

      • Network Diagrams: Visualize task flow.

      • Dependency Types:

        • Mandatory (e.g., foundation before framing).

        • Discretionary (team preference).

      Example:
      Software tasks: "Design UI" → "Develop Frontend" → "QA Testing."


  • Estimate Activity Duration & Resources:

    • Purpose: Determine time, resources, unit of works needed to finish the tasks

    • OutputSchedule Management Plan specifying:
      - Tools (e.g., MS Project, Jira), milestones, and approval processes.
      - Story Points or Unit of Works

    • Tools:

      • Analogous Estimating: Use historical data (e.g., "Previous app took 3 months").

      • Parametric Estimating: Statistical models (e.g., cost per square foot).

      • Three-Point Estimating: Optimistic, pessimistic, most likely scenarios.


  • Develop Schedule:

    • Purpose: Create Timeline with clear start and end dates.

    • Tools:

      • Critical Path Method (CPM): Identify the longest path of tasks.

      • Gantt Charts: Visual timeline.

    • Output: Clear Data or Chart like Gantt Charts

                Sample Of Gantt Charts: https://create.microsoft.com/en-us/templates/gantt-charts

  • Plan Cost Management:

    • Purpose: Estimate and budget Project Costs.

    • Steps:

      • Estimate Costs: Use techniques like Bottom-Up Estimating (sum of all task costs).

      • Determine Budget: Aggregate costs into a Cost Baseline.

                Sample of cost management template: https://www.smartsheet.com/content/project-cost-templates

  • Plan Quality Management:

    • Purpose: Define quality standards and how to achieve them.

    • Tools:

      • Cost-Benefit Analysis: Balance quality vs. cost.

      • Flowcharts: Map processes to identify defects.

    • OutputQuality Management Plan (e.g., "All code must pass unit tests before deployment").
                Sample of QMP: https://www.stakeholdermap.com/project-templates/quality-management-plan-template.html

  • Plan Procurement Management

    Purpose: Identify external resources needed (vendors, contractors).

    Output: Procurement Management Plan including:

    • Selection criteria (e.g., cost, expertise).

    • Contract types (fixed-price, time-and-materials).

    Sample: https://exceltmp.com/procurement-spreadsheet-templates/


  • Plan Stakeholder Engagement

    Purpose: Define strategies to engage stakeholders effectively.

    Output: Stakeholder Engagement Plan including:

    • Communication frequency (e.g., monthly reports for regulators).

    • Conflict resolution methods.




3. Executing Process Group

Goal: Carry out the project plan to deliver deliverables.

Key Processes:

  •    Direct and Manage Project Work

    Purpose: Execute tasks defined in the project plan to produce deliverables.

    Steps:

    1. Inputs:

      • Project Management Plan (scope, schedule, cost baselines).

      • Approved Change Requests (e.g., adding a new feature).

    2. Tools & Techniques:

      • Project Management Information System (PMIS): Tools like Jira, Asana, or MS Project.

      • Expert Judgment: Guidance from SMEs or senior managers.

    3. Outputs:

      • Deliverables (e.g., completed software module, constructed building phase).

      • Work Performance Data (e.g., % of tasks completed, budget spent).

  • Manage Quality

    Purpose: Ensure deliverables meet quality standards defined in the Quality Management Plan.

    Steps:

    1. Tools & Techniques:

      • Quality Audits: Review processes to identify gaps (e.g., "Is code being peer-reviewed?").

      • Checklists: Verify all steps are completed (e.g., "Testing checklist for software release").

    2. Outputs:

      • Quality Reports: Document defects and corrective actions.

      • Verified Deliverables (approved by stakeholders).


  • Acquire Resources

    Purpose: Obtain the team, equipment, and materials needed to execute the project.

    Steps:

    1. Tools:

      • Negotiation: Secure resources from other departments or vendors.

      • Pre-assignment: Assign critical roles early (e.g., lead developer).

    2. Outputs:

      • Physical Resource Assignments (e.g., leased machinery).

      • Project Team Assignments (e.g., hiring a contractor for UX design).


  • Acquire Resources

    Purpose: Obtain the team, equipment, and materials needed to execute the project.

    Steps:

    1. Tools:

      • Negotiation: Secure resources from other departments or vendors.

      • Pre-assignment: Assign critical roles early (e.g., lead developer).

    2. Outputs:

      • Physical Resource Assignments (e.g., leased machinery).

      • Project Team Assignments (e.g., hiring a contractor for UX design).


  • Manage Communications

    Purpose: Distribute information to stakeholders as planned.

    Tools:

    • Communication Technology: Slack for updates, Zoom for meetings.

    • Communication Models: "Sender-receiver" feedback loops.

    Outputs:

    • Project Communications (e.g., weekly status emails, stakeholder dashboards).


  • Implement Risk Responses

    Purpose: Execute planned strategies to address identified risks.

    Tools:

    • Contingency Plans: Activate backup vendors if a supplier fails.

    • Workarounds: Unplanned responses to unforeseen risks (e.g., shifting deadlines due to a natural disaster).

    Outputs:

    • Updated Risk Register (e.g., "Risk X mitigated by action Y").


  • Manage Stakeholder Engagement

    Purpose: Communicate with stakeholders to ensure their needs are met.

    Tools:

    • Feedback Mechanisms: Surveys or focus groups.

    • Stakeholder Analysis Revisited: Adjust strategies based on changing influence.

    Outputs:

    • Updated Stakeholder Register (e.g., new communication preferences).


Share:

Sunday, February 2, 2025

Become Better Manager

 Communication: Clear, empathetic dialogue in 1:1s and team meetings.


    As a manager it is important to focusing on building good communications with team member. Rather than focus on "I" transitions to "We". In a collaborations this is like "nurturing others to succeed".

    Communications skills is mandatory such as:

        1. Active listening: conscious effort to listen more than speak, understand team concern and fully prepare with solutions. 

        2. Empathy: the ability to share and understand feelings of others.

        3. clear messaging: Be Transparent about goals, challenges, and expectations. 

        4. diversity awareness: Every individual is unique and have personality traits, so treat it correctly according their characteristics.

    About the 1:1s Meetings

    1:1 Meetings is important because it can help manager to understand individual goals, challenge, and motivation on of team member. Don't forget know a little bit of life to make it become understand about the motivations of team member

Delegation: Trusting teams to own tasks while providing support.

    As a Manager its important to know how to delegate works effectively. Assign the task based on individual growth or potential. Remember to put the context not instructions including why its matter, etc. and see the task to iterate and solved.
    
    Avoid micromanaging and trust team members.

Conflict Resolution: Addressing tensions early and fostering psychological safety.

Handle conflict resolution effectively is critical in maintaining healthy and positive environment. 

How to do it:

1. Addressing the sign early

This could be sarcasm in conversation or meetings,withdrawal in collaborations, or repeated disagreements over some or look a like issues.

2. Intervene Quickly

    - Private 1:1 meetings: Talk privately to understand their perspective
    - Facilitate a mediated discussions: Focus in resolve the issues and alignment of the conflict. find the common shared goals and find the agreement and understanding  

Strategic Thinking: Prioritizing high-impact work and aligning with company objectives.

    Strategic Thinking is focused on high impact work that align with company objectives, goal, or OKR.

    What's difficult is ti define the "High Impact Work" it can be to widen or unfocused. The best method is to always do the Formula:

                
    High Impact work = Value x Effort Required 


    The common method is use:

    MoSCoW Method: Label work as Must-have, Should-have, Could-have, or Won’t-have.

    Eisenhower Matrix: Categorize tasks as Urgent/Important, Important/Not Urgent, etc.


Remote/Hybrid Management: Building trust and collaboration in distributed teams.


    Managing remote or hybrid teams is unique because it requires intentionality to overcome distance, time, and lack of face-to-face interaction.

    Some point that need to set is:

  1. Set Clear Expectations and Terms Between Team Members

    - Set define working hours, communications rules (channels, response time, idling notifications)
    - Turn in cameras if possible to increase relationship, trusting,
    - Host virtual hours for informal chats

  2. Focus on Outcome not Activity

    Focus on deliverables (e.g., “Ship Feature Y by Friday”) monitoring the parameters like daily meeting or burndown charts.

  3. Using Tools to remove redundant activity

    - Record meeting,
    - Record tutorial such as on boarding, set up projects.
    - Use collaborative docs for document
    - Build Wiki like for documentations


  4. Clarify Roles and Ownership

    Remember to always clarify "who is who in charge and flow of collaborations". such as A will do API contract from BE, B in FE will consume it and build interface and unit testing based on api contract

  5. Summaries Documentations

    To avoid miss communication or miss interpretation always create document agreement like MOM or summary and share it to every one involve
     
  6.  Create Bonding Rituals
    - Host monthly virtual coffee chats or mini games.
    - Create spotify playlist for team member
    - Create a sharing sessions for bonding and participations



Share:

Monday, November 28, 2022

Algorithm Recursive/Recursion Method

 Recursion method by definitions is a way of solving a problem by having a function calling itself and make the problems become smaller and easier to find solutions.

Why We Need Recursion?

1. Recursion can break big problems into smaller ones and easy to use

2. Prominent usage of recursion in data structures like trees and graphs

3. Used in many algorithm (divide and conquer, greedy and dynamic programming)

How it works?

1. The method call it self

2. There's end conditions to interrupt loop

3. In stack Memory using FILO.

Recursive Vs Iterative Solutions?

Stack memory require?
    Recursive: Yes
    Iterative: No

Time Efficient?
    Recursive: No
    Iterative: Yes

Easy To Code?
    Recursive: Yes
    Iterative: No

When To Use Recursion:

1. When conditions breakdown to similar small sub problems meet

2. When Fine with extra overhead

3. When need quick working solutions

4. When traverse a tree

5. When use memorization in recursion

Method to do Recursion:

1. Identify the Recursive Flow

    Example:

    Factorial Problems: 5! = 5*4*3*2*1 => n * (n-1) * (n-2) * (n-3) ... *2 * 1 
    Define Formula: n! = n * f(n-1)

2. Determine Stop Conditions
    if n in [0,1]:

3. Handle Unintentional case - the constraint
    assert n >= 0 and int(n) == n 

Example:


Example with Factorial Problems (5! = 5*4*3*2*1):

import sys
sys.setrecursionlimit(100)

def factorial(n):
    # Step 3. Handle Unintentional case. The number must Positive Int Only
    assert n >= 0 and int(n) == n
    # step 2. Determine Stop Conditions
    if n in [0,1]:
        return 1
    else:
        # step 1. Identify the Recursive Flow
        return n * factorial(n-1)

print(factorial(-3))

Example with Fibonaci Problems (0, 1, 1, 2, 3, 5, 8, ...):

import sys
sys.setrecursionlimit(100)

def fibonacci(n):
    # Step 3. Handle Unintentional case. The number must Positive Int Only
    assert n >= 0 and int(n) == n
    # step 2. Determine Stop Conditions. if 0 or 1
    if n in [0,1]:
        return n
    else:
        # step 1. Identify the Recursive Flow
        # 0,1,1,2,3,5,8:
        # n2 = 0 + 1 ; n3 = 1 + 1 ; n4 = 2 + 1 ; n5 = 3 + 2 ; n6 = 5 + 3
        #  f = f(n - 1) + f (n - 2)
        return fibonacci(n-1) + fibonacci(n-2)

print(fibonacci(5))


Example with Sum Of Digits ( 108 = 10 +8 ;  56 = 5 + 6):




Share:

Sunday, February 16, 2020

How to fix ngx-gallery: Class constructor HammerGestureConfig cannot be invoked without 'new'



When I try to implement ngx-gallery in Angular 8. I found some strange error message:

Class constructor HammerGestureConfig cannot be invoked without 'new'

My first though there's something happen in Angular or ngx-bootsrap version. But, after some debug, definitely it's version problems and we can add same patch solution from github and stackoverflow. This is the full documentation:

  • Go To app.module.ts
  • add this code:

export class CustomHammerConfig extends HammerGestureConfig {
   overrides = {
      pinch: { enable: false },
      rotate: { enable: false },
   };
}
  • apply this patch in your providers app.module.ts
   providers: [
      {
         provide: HAMMER_GESTURE_CONFIGuseClass: CustomHammerConfig
      }
   ],
  • Add Import if necessary 
import { BrowserModuleHAMMER_GESTURE_CONFIGHammerGestureConfig } from '@angular/platform-browser';

Hope it works !!!
Share:

Wednesday, January 8, 2020

Install JDK on Ubuntu 32 bit and 64 bit




To install JDK on Ubuntu we need to do several step. Basically this tutorial for 32-bit and 64-bit Oracle Java 8 JDK on 32-bit and 64-bit Ubuntu operating systems. These instructions will also work on Debian and Linux Mint

1.  Go to terminal and type /sbin/init, this command to check your Ubuntu architecture weather it's 32 or 64 bit.

2. Check Java installed, type java-version on your terminal. If you have OpenJDK installed on your system it will give this results:

  • java version "1.7.0_60"
    OpenJDK Runtime Environment (IcedTea6 1.10pre) (7b15~pre1-0lucid1)
    OpenJDK 64-Bit Server VM (build 19.0-b09, mixed mode) 
Remembered that OpenJDK is not same with JDK.

3. Remove OpenJDK/JRE from your system by running this command: sudo apt-get purge openjdk-\* 

4. Download JDK from Download JDK .Please Remember to download JDK version which fits with your architecture system. For example, if your system running on 32 Bit download 32 Bit Oracle Java binaries.


5.After finished download the JDK file, copy your JDK file to '/usr/local/java'.

   sudo cp -r your-java-binaries /usr/local/java/ 

6.Go to '/usr/local/java/'. cd /usr/local/java/

7. Unpack The Java Binaries in /usr/local/java. Type sudo tar your-java-binaries

8. Your java/ folder will contain jdk and jre directory.


9. Edit system path file.

  • sudo gedit /etc/profile
  • Scroll down until end of file and type:
         JAVA_HOME=/usr/local/java/your-jdk-directory
         PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
         export JAVA_HOME
         export PATH
  • Save and exit
10. Inform your system where your Oracle Java JDK/JRE is located
  • sudo update-alternatives --install "/usr/bin/java" "java" "/usr/local/java/your-jdk-directory/bin/java" 1
  • sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/local/java/your-jdk-directory/bin/javac" 1
  • sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/local/java/your-jdk-directory/bin/javaws" 1 
 11. Inform your system Oracle Java JDK/JRE must default
  • sudo update-alternatives --set java /usr/local/java/your-jdk-directory/bin/java  
  • sudo update-alternatives --set javac /usr/local/java/your-jdk-directory/bin/javac 
  • sudo update-alternatives --set javaws /usr/local/java/your-jdk-directory/bin/javaws
12. Reload your system wide PATH /etc/profile by typing source /etc/profile
13. Test by run java -version  
  • If your instalation is correct, in terminal will displaying something like this:
          java version "1.8.0_05"
         Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
         Java HotSpot(TM) Server VM (build 24.51-b03, mixed mode) 

 
14. Test your javac by run javac -version
  • You should receive a message which displaying something like this: javac 1.8.0_05 
15.Reboot Your System.
Share:

Friday, December 20, 2019

Instal RVM on Linux Ubuntu 64 Bit






RVM is a command-line tool which allows you to easily install, manage, and work with multiple ruby environments from interpreters to sets of gems. To install Ubuntu in RVM

1. Check Apache and Mysql existed in your machine.
  •  Type http://localhost or http://127.0.0.1 on your browser to check apache running.
  • Check /var/www/ directory.
  • In /var/www/index.html type <?php phpinfo(); ?> , then type http://localhost or http://127.0.0.1 on your browser. If apache installation in your machine already correct, your browser will load PHP informations installed on your machine
2.Run on your terminal:
  • bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)
  • source ~/.bash_profile .Note : This command is for reload opened terminal. 
  • rvm requirements. Note : This command is for searching all libs that still needed, and then install the lib.
 3. Install Ruby according to the version we need:     
  • rvm install 1.9.3
4.Install another version of ruby with this method.
5. To view all installed RVM 
  • rvm list
6.To use specifics RVM 
  • rvm use 1.9.3
 7.If there is an error when running rvm use 1.9.3 try open file ~/.bashrc and ~/.bash_profile and then add this script :

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session

8. To use Specifics Gemset

  • rvm use 1.9.3
  • rvm gemset use rails3.2
  • rvm use 1.9.3@rails3.2
9. Set Default RVM
  • rvm use 1.9.3@rails3.2 --default

Share:

Thursday, November 28, 2019

MongoDB in PHP





The MongoDB PHP driver should work on nearly any system: Windows, Mac OS X, Unix, and Linux; little- and big-endian machines; 32- and 64-bit machines; PHP 5.2, 5.3, 5.4 and 5.5.

Install MongoDB Driver PHP

  • sudo pecl install mongo
  • Add extension=mongo.so in php.ini (/etc/php5/cli/php.ini)
  • Restart Apache: sudo service apache2 restart
Check Installed MongoDB
  • Check is MongoDB extensions already loaded in your PHP php --ini
    already installed: /etc/php5/cli/conf.d/mongo.ini
  • Check is MongoDB extesions already enabled php -i | grep 'Mongo' Already Enabled: MongoDB Support => enabled
  • Type <? phpinfo(); in your PHP applications.
Share: