Yosic:
Кто ясно мыслит, тот ясно излагает
кгм, выглядит как язвительный укол, чтож, будучи джентльменом также не останусь в долгу) Если рассмотреть поток мыслей как очередь, то при разборе этой очереди качественный код должен сообщить, в чем конкретно ошибка, на каком элементе и обработать ситуацию максимально корректно. Ну раз кто-то не справляется и сообщает очень общий код ошибки выхода, то либо алгоритмы такие себе.... либо железо не вытягивает). Хотя это в духе тех же плюсов, там программы сегфолтят сразу, независимо от причины, будь то просто выход, кнопка о программе или очередное наступившее полнолуние.
Yosic:
знать это вовсе не лишнее.
Что знать нужно - с этим не поспоришь, но на фоне загрузки знаниями в мозг новичку может быть не совсем до этого. Вернее, даже если он узнает, то забудет или не сможет иначе применить. Вопрос в том, что в мире есть еще и эволюция с усложнением инструментов, хотя и с как бы "упрощением" использования для разработчика. Аналогией можно вспомнить любой пример: раньше технику можно было починить, теперь трудно, раньше автомобиль можно было перебрать, теперь тоже труднее, в зависимости от сложности. Экстраполяцией на будущее наступит момент, когда знания настолько абстрагируются, что понимание самого нижнего уровня станет невозможным: уровни настолько сильно отдалены, что знание одного совершенно бесполезно в использовании другого, это должны делать другие люди в силу невозможности знать все одному человеку. Ну а т.к. дьявол кроется в деталях, то обшие знания скорее всего ничего не дадут, их уровень недостаточен для решения реальных проблем.
Yosic:
небольшое приложение в 1000 классов не бывает
У кого-то не бывает, а у кого-то - бывает, могу тоже взаимно оставить совет не судить по своему опыту. Обычно любое приложение сразу же начинает расслаиваться на фреймворк и предметный код, если оно строится с нуля. Если не с нуля, тогда обертки над апи фреймворка или либ все равно уходят в ядро: работа с компонентами приложения, обработка ошибок, cli, логгер, конфиг, бд, i18n, сеть, io, валидация уже около десятка пакетов. Этот рост достаточно быстрый и дойти до тысячи даже в соло-разработке вполне реально, просто само по себе приложение остается функционально небольшим, а вот саппортная логика под капотом весит очень много. Тем более, что большая часть логики так или иначе реиспользуемая, а если она использует сторонние либы, то все равно их вызов будет реиспользуемым. Еще сюда можно добавить самодиагностику, валидацию конфигов, сущностей и т.п. саппорт, который склонен все быстро переусложнять, но приложение без него склонно ложиться от любого чиха, запускаться через одно место и всячески больше вредить, чем решать свою предметную задачу.