Yeah, even with good planning, if it's something new you'll probably realize you made some bad assumptions early on. Sometimes it's not even technical. You can code incredibly fast now but it doesn't fix poorly articulated requirements (or just things you didn't think about).