My PMP exam preparation: Lesson learned

I passed the PMP exam some weeks ago and now that I’ve more spare time I wonder share with you my experience.

First of all a little review about PMP exam:

  1. you must collect 35 cont hours
  2. you must have worked for many hours in all project phases (you can find the right requirement in PMP’s site)
  3. you must apply for the exam filling in many information including the experience above
  4. wait for PMI reply
  5. your submission could be accepted or could be extracted for audit
  6. (collect required audit documentation)
  7. pay for the exam
  8. receive the application code
  9. go to Prometric site and schedule your exam
  10. GOOD LUCK

My PMP preparation

I prepared it in 4,5 months studying it during lunch breaks, evenings and WEs.
I started studying using the PMBOK 5th and I read halfway through it.
In order to collect the 35 contact hours there are many courses but in Italy they cost a lot (1200-2500€).
In addition many of them require to take 5-6 days of vacation in order to attend them.
Browsing I found this course: pmp precast
It is very cheaper and in addition you can follow the course everywhere!!!
I spent many hours listening to the podcast (video) while I was driving to work.
Another great pro is that you can restudy something if you needed it.
This course not only explains the pmbook chapters but it also explains many other management topics like Net Present Value (NPV) or Agile (It wasn’t included in PMBOK 5th).
That is why I decided to give up the PMBOK.

Everyone suggests to plan the exam in advance and use this date as a motivational aim but if you have to collect the 35 contact hours you must complete the course before applying. My suggestion is to apply to PMI (without planning the exam) as soon as you complete the course.
PMI takes 7-15 days to reply to your application (In my case I remember something about 8 days)

After the application, while I was waiting for the PMI answer I continued studying reading this great book:
PMP® Exam Simplified: Updated for 2016 Exam
PMP Exam Simplified

This book not only helps you preparing the exam but it helps you understanding all project processes.
The PMBOK and PMPrepcast analyze the project flow decomposing it in Knowledge Areas:

  • Project Integration Management
  • Project Scope Management
  • Project Time Management
  • Project Cost Management
  • Project Quality Management
  • ect.

The prep book instead, follows the project flow decomposing it in Process Groups:

  • Initializing
  • Planning
  • Executing
  • Monitoring & Controlling
  • Closing

This way is esiest because it is the right sequence of steps that a project goes through.

While I was studying this book the cheat sheet created by Riccardo Vergas helped me a lot, everytime I needed to receck the whole processes flow.

As soon as I finished studying this book, I planned the exam 2 weeks later.
I used these 15 days doing many tests using the pmp prepcast simulator (included in my course).

How long does it take to get it?

As I said It takes me 4,5 months. Here how much I studied:
1,5 – 2h everyday (listening to prepcasts while I was driving and watching them during lunch breaks)
4-5h on saturday and sunday

How many quiz did I do?

I did all quizzes inside the prep book and I did 3 full exams (2 of them doing 200 questions without stopping).
My suggestion is to do at least 2 exams without distraction in order to simulate the exam experience. You’ve got to answer to 200 questions in 4 hours (50 questions/h).
It is very important that you calibrate your speed. I startart with 40 questions7h and I improved to 60 question/h at the first 2 hours reducing it to 50 after 3 hours…
In case the question/description was too long I started reading the last sentence/question because sometimes the context described doesn’t matter.

How was my exam?

The exam is an experience exam, so all quizzes done helped me to understand the matter, but even if you are goot at memorize; you can’t hope to find the same questions during the real exam.

Language Aid Experience?

I’m Italian so I’m not a native english speaker. Even though I studied using English books or video I requested the language aid in Italian.
During the exam the screen is splitted horizontally, on the top the english question and on the bottom the italian translation.
I’ve alsways started reading the english version but after 3 hours when my mind wasn’t so fresh 🙂 the italian version was useful to understand the context of the question.
Language Aid is free so my suggestion is to request it even if your english is very good.

Certification

40 days after I had passed the exam I received “paper” certification

Annunci
Pubblicato in Management | Contrassegnato , , , , , , | Lascia un commento

Resize Multiple Images At Once in Windows without any image softwares

How many times have you needed to resize multiple images at once?
I don’t do it a lot of times but every time I forget the fastest way to do it.

Here is the software that I like and I’ve used many times
imageresizer

There are many posts about it:
https://www.ampercent.com/resize-multiple-images-windows/15215/
https://dottech.org/173051/how-to-resize-multiple-pictures-at-once-in-windows-tip/

Pubblicato in Uncategorized | Lascia un commento

JSON Viewer and JSON Editor

There are lots of online JSON viewer and I’ve alwasy used this one:
http://jsonviewer.stack.hu/

Today, instead, I’ve needed an editor in order to write a sample JSON for sharing it with a customer.
I tried some editors and this one has won:
http://www.jsoneditoronline.org/

It allows you to design the json using a tree and generate JSON string or viceversa.
In addition you can save it in order to share the url or edit it later.

Very useful!

Pubblicato in REST | Contrassegnato , , , , | Lascia un commento

How does Jira automatically move parent story to done (next status) when all sub issues or tasks are completed? part 2

In my previous post I explained how jira automatically manage the movement of the parent issue.

I analyzed it deeply and here I am with other details.

Before I said that the parent issue must have been in progress in order to allow jira to move it automatically. I didn’t pay attention to default jira behaviour because using the simplified workflow, jira automatically moves it even though the parent issue is in TO DO status.

This made me crazy and I started struggling trying with different workflows and here the result.

What I said in the part1 is the main key:

The parent issue workflow status must be set in the last column, when all subtasks are moved to the last column, Jira checks if the parent issue workflow allows the parent issue to move from the current status to the first status available in the last column of your board.

Here my board configuration:

Here my simple subtask workflow:

Here my previous parent issue workflow that doesn’t allow me to move the parent issue from TO DO to TO DEPLOY, but the parent issue must be set in progress:

Here my new one that allows jira to automatically move the parent issue from TO DO to TO DEPLOY:

Notice the link between TO DO and TO DEPLOY, this is the magic link that leads this behaviour.

Pubblicato in Jira, Management | Contrassegnato , , , , , , | Lascia un commento

MySQL Delete rows subquery You can’t specify target table ‘XXX’ for update in FROM clause

Today my colleague and I have received a gift from MySQL.
Our goal was to delete some rows obtaining them using a subquery.

Here is the query:

DELETE ps_pack FROM ps_pack
WHERE id_product_pack IN (select id_product_item from ps_pack where id_product_pack = 148356904);

And here the response of MySQL
You can't specify target table 'ps_pack' for update in FROM clause

The query is pretty easy but MySQL doesn’t want to delete rows in a table that is used in a subquery.
Looking for a solution we came across a post with the solution (unfortunately I lost the link).

Don’t ask me why but wrapping the query with some useless steps I fooled MySQL:

DELETE  p.* FROM ps_pack p
WHERE p.id_product_pack IN (SELECT  id_product_item FROM (SELECT id_product_item FROM ps_pack where id_product_pack = 148356904) x);
Pubblicato in SQL | Contrassegnato , , | Lascia un commento

Draw chart, network diagram, architectural diagram, gantt etc.

Do you have to write documentation and you need chart or flow diagram, architectural diagram, comunication diagram, gantt or something like that?
If you haven’t installed Visio these sites might help you:

Free (It allows to save your chart directly to an xml file). I like it!
https://www.draw.io/

Free editor (If you want to save you work you need to have an account and pay for it)
https://creately.com
https://www.gliffy.com/

Pubblicato in Uncategorized | Contrassegnato , , , | Lascia un commento

Jira: how to set in progress status when a subtask move to in progress using Script Runner

This is something that Jira would have done by default but it doesn’t…
So If you require that the parent issue change status from TO DO to In Progress when a subtask move from TO DO to In progress, this is the solution.
Buy Script Runner that is cheap and allows you to do whatever you want.
Add a post function (script runner) to the transition of the subtask workflow.
Here is the code to add in the subtask transition post function from TO DO to In Progress

import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.ComponentManager
import com.atlassian.crowd.embedded.api.User
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.event.type.EventDispatchOption

import com.atlassian.jira.util.JiraUtils;
import com.atlassian.jira.workflow.WorkflowTransitionUtil;
import com.atlassian.jira.workflow.WorkflowTransitionUtilImpl;

def user = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()
 
if (issue.isSubTask()) 
{
    def parentIssue = (MutableIssue)issue.getParentObject()
    def currentParentStatus = parentIssue.getStatusId()
    // if the parent has the id of the status TODO (change it with your Jira ID)
    if (currentParentStatus == "10000") 
    {
        WorkflowTransitionUtil workflowTransitionUtil = (WorkflowTransitionUtil) JiraUtils.loadComponent(WorkflowTransitionUtilImpl.class);
    	
    	workflowTransitionUtil.setIssue(parentIssue);
        // 61  is the Id of the transition from TO DO to In Progress
        workflowTransitionUtil.setAction(61);          
        workflowTransitionUtil.validate();
        workflowTransitionUtil.progress();
    }        
}

In order to manage it correctly I suggest adding also the change status from In Progress to TO DO when all subtask moved back to TO DO status.
To achieve this goal add the post function to the subtask transition from In Progress –> TO DO

import java.util.Collection;
import com.atlassian.jira.ComponentManager;
import com.atlassian.jira.config.SubTaskManager;
import com.atlassian.jira.event.issue.AbstractIssueEventListener;
import com.atlassian.jira.event.issue.IssueEvent;
import com.atlassian.jira.issue.Issue;
import com.atlassian.jira.issue.MutableIssue;
import com.atlassian.jira.issue.issuetype.IssueType;
import com.atlassian.jira.util.JiraUtils;
import com.atlassian.jira.workflow.WorkflowTransitionUtil;
import com.atlassian.jira.workflow.WorkflowTransitionUtilImpl;

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.event.type.EventDispatchOption

 
if (issue.isSubTask()) 
{
    def parentIssue = (MutableIssue)issue.getParentObject()
    def currentParentStatus = parentIssue.getStatusId()
    // if the parent is in status in progress
    if (currentParentStatus == "3") 
    {
        def areAllToDo = true;
        def subTaskIssues = (Collection<MutableIssue>) parentIssue.getSubTaskObjects();
        
        // I'll check all subtask's status
        for (MutableIssue subTask : subTaskIssues)
        {
            def subTaskStatusId = subTask.getStatusId();
            
            // even though this is a post function when you check the item's status that triggers this function it's the old one, so it's not updated
            // I'll check that all issues are in TO DO a part from this issue that will'be in In Progress
            if (subTaskStatusId != "10000" && issue.getId() != subTask.getId())
            {   
                areAllToDo = false;
                break;
            }
        }
        
        if (areAllToDo) {
            
            WorkflowTransitionUtil workflowTransitionUtil = (WorkflowTransitionUtil) 
            JiraUtils.loadComponent(WorkflowTransitionUtilImpl.class);

            workflowTransitionUtil.setIssue(parentIssue);
            // 111 is the transition Id from In progress to TO DO (Stop Progress)
            workflowTransitionUtil.setAction(111);              
            workflowTransitionUtil.validate();
            workflowTransitionUtil.progress();
        }
        
    }        
}
Pubblicato in Agile, Jira | Contrassegnato , , , | Lascia un commento