Yup. It's easy to write a to-do app. What is hard is 10 years later of features and needing to add more. While also dealing with the architecture short sightedness and pitfalls. Anyone who has worked on legacy software knows, at some point, all architectural decisions eventually become architectural pitfalls, primarily because requirements and customers change. It becomes a point where, its not really the code that's the issue, its design and customers' changing requirements.