Самыми сложными являются операционные системы, компиляторы, сложные веб-приложения, рассчитанные на миллионы пользователей и тому подобное (сложнее всего сделать лучше, чем все остальные). Также требует усилий реализовать алгоритмы нейросетей с нуля или иные наукоемкие задачи.
Если имеется в виду именно программу где ты только программированием занимаешься (а не разрабатываешь игры, где надо проектировать смену спрайтов, движения обработку событий и т.д)
То сложнее всего на мой взгляд с нуля написать обычный чат между двумя людьми, так что бы и история переписки сохранялась, и метка прочитано ли сообщение и т.д.
Придётся подумать над многими моментами и о том как хранить данные и как сообщения отображать асинхронно для пользователей