During the course of the last years, software development somehow took a wrong turn and got vastly overcomplicated.
These days we just tend to over-design and overdo things. Consider projects that never get shipped because stakeholders keep on drawing UML diagrams for the requirements. Consider web sites that never surface the public web because of ever changing UI designs. Consider implementations so convoluted that development teams spend their entire lives playing "hot potato" with JIRA bugs that keep on showing their ugly heads up. Or consider software architectures so entangled that even ivory tower architects have their eyes bleed when they see implementations of them in the real world.
Things don't need to get complicated simply because everybody else seems to do that. Break down complex into simple, release early, iterate quickly and learn from feedback.
Here's an example of a web site that just works:
A blog theme that just works:
Here's an example of IDE that just works:
There is no point in trying to be perfect from the very start. You can get a better chance of succeeding if you just get the smallest possible thing done, make it real and then iterate from there.
Sometimes you might even find out that good enough software works good enough and does not need to be any more perfect.