The funny thing about software development is that your goal is often to solve a complex problem, and that the solution itself is often complex. In fact, there are a great many things in the world that are complicated, and require equally complicated solutions.
Most of us, myself included, are not genius enough to conceive of a vastly complicated thing and then make it a reality. To fix the big problem problem, we break stuff down into smaller problems. Smaller problems have a lot of advantages to them. They're easier to solve, feel less daunting, don't take as long and tend have less risk associated with attempting the wrong solution.
It seems like there are a lot of problems in life that are easier to tackle if you make them smaller. I have to keep reminding myself of that.