Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Опытный разработчик/проектировщик может определить сроки выполнения задачи и оценить риски.
То есть вы заведомо подразумеваете, что ваш разработчик всегда не укладывается в сроки?
Даже выдающиеся программисты не возьмут на себя смелость утверждать об архитектуре новой программной системы то, что она будет успешной.
цикломатическая сложность
покрытие кода тестами
Архитектура: степень связанности, её считают по-разному, но как не считай, а это отличная характеристика способности системы расти и изменяться.
вычислительная сложность
нормальные формы реляционных баз данных
Если немного отойти в сторону от идеальной объективности, то многие утилиты для анализа кода умеют считать кучу метрик вместе с некоторой суммарной характеристикой. Учитывая, что многие из них поддерживаются большими группами профессионалов, их выдачу можно считать объективной.
Это вообще не про код и архитектуру, но про алгоритмы.
Объективные характеристики качества?!
Смешиваете понятия. Выдача таких инструментов вполне объективна, они считают ровно те формализованные метрики, которые их просили. SLOC, например. Или SLOC/method. Эти параметры при сильных отклонениях от средних позволяют предположить «code smell». С некоторой долей вероятности.
Если у нас есть два проекта, выполняющих одну задачу (или один проект в разных версиях)… Более того, на основе этих метрик, мы может строить прогнозы того, как изменится качество кода при исследуемых изменениях.
Поэтому вычислительная сложность (в купе с её аналогом для используемой памяти) — это именно показатель качества.
Давайте не будем забывать, что аспектов у программного проекта множество и они часто имеют взаимоисключающие свойства. Нормальная форма — это (как и большинство других метрик) показатель качества для конкретной части проекта (используемой модели данных), а не его всего.
То есть они позволяют построить некий прогноз, что нам и требуется.
Отсутствие универсальной метрики (или там закона) ни в коем случае не отменяет наличие объективных частных метрик.
Основной тезис, который я хотел донести: мы не можем нормально формализовать понятие качества кода и архитектуры.
Какой алгоритм качественнее: со вычислительной сложностью O(N) и памятью O(1) или наоборот?
Которые показывают погоду на Марсе. То, что эти метрики стабильны не означает, что они объективно характеризуют качество.
Автор много курил и так и не смог понять — материален ли труд программиста или нет?
То есть когда я цикл пишу, то занимаюсь проектированием? Пойду за прибавкой, «мужики-то и не знают».
Кхм. Обычно — головой. Там, этот — мозг. У автора другое место думает?
В слове «ремесло» нет ничего плохого, скорее верно обратное. Если что-то стало ремеслом, значит уже накоплен позитивный опыт (на базе тонны негативного) и есть проверенные, работающие решения, которых достаточно, чтобы работать (создавать продукты).
Привет, капитан Очевидность! Как жизнь? А можно у людей остальных профессий тоже будет право на ошибку? СПАСИБО, друг! (* плачет от счастья *)
А как же многостраничные распечатки машинных кодов????? Автор, ну очнись уже. Столько напридумали разных схем и прочего.
А эти программисты — они, блин, болтуны чертовы.
Автор, время идет, жизнь меняется. [...] слегка наработан опыт в самых разных областях программирования и более-менее прояснена сложность тех или иных задач.
С современной точки зрения ваша статья — это несусветная чушь.
когда столяр выбирает какой шуруп ему нужен, он тоже занимается проектированием. И когда водопроводчик подбирает шланг под резьбу. Просто решения на таком уровне не называют проектированием
Ошибки неизбежны в любой области деятельности. Вот недавно самолет упал, пилоты допустили ошибку (возможно). Хотя их учат и тренируют как никого другого.
«Программист, подобно поэту, работает почти непосредственно с чистой мыслью. Он строит свои замки в воздухе и из воздуха, творя силой воображения. Трудно найти другой материал, используемый в творчестве, который столь же гибок, прост для шлифовки или переработки и доступен для воплощения грандиозных замыслов».
Из опыта. В среднем у каждого участника проекта разработки ПО на всякие разговоры уходит 50% рабочего времени. У нас это называется «синхронизация ментальных моделей». Известно, что слова, тембр и интонация передают только чуть меньше половины информации. Поэтому на передачу информации удаленному участнику команды тратиться в два раза больше времени. Отраслевая методика COCOMO II учит, что если проект выполняется распределенной командой, то его трудоемкость надо умножать на 1,5.
талантливых режиссеров, как, впрочем, и талантливых менеджеров программных проектов
Для программных продуктов еще не придумали адекватные инструменты визуализации. Об этом говорил еще Брукс, почти 40 лет назад.
Программирование, как новый вид человеческой деятельности