Quando usar espera explícita vs espera implícita no Selenium Webdriver?

Estou usando:

driver.manage().timeouts().implicitlyWait(180, TimeUnit.SECONDS);

Mas ainda falha continuamente para o elemento abaixo

    driver.findElement(By.id("name")).clear();
    driver.findElement(By.id("name")).sendKeys("Create_title_01");

Eu adicionei o código de espera:

for (int second = 0;; second++) {
        if (second >= 120) fail("timeout");
        try { if (isElementPresent(By.id("name"))) break; } catch (Exception e) {}
        Thread.sleep(1000);
    }

A espera implícita não deve esperar até que um elemento seja encontrado? Também seria melhor se eu usar Espera explícita em vez do código que eu adicionei que temThread.sleep()?