Learning programming is fun and easy, but writing a good program can be daunting.
In most cases, we find ourselves constantly scratching our heads trying to understand the spaghetti code we wrote or making many changes just because of a newly added minor feature.