画面移動のコードを書きたくて

@IBAction func goSecond(_ sender: Any) {
      let secondVC = self.storyboard?.instantiateViewController(withIdentifier: "second")
      present(secondVC!, animated:true, completion:nil)
}

ボタンと接続させるコードを書いたんですが、present(secondVC!~....の、secondVC!がつくのかよく理解できません。オプショナル型にすれば解決することはわかったのですが、これからも頻発しそうなエラーなので具体的な理由を教えていただけないでしょうか?よろしくお願いします。