Менеджер это тот, кто уменьшает неопределенность.
Что такое надпрофессиональное образование? Это уменьшение лоховости во всем, что не касается непосредственно твоей профессии! Но и профессии тоже.
Буду делать хорошо и не буду лохом!
Неважно какие у тебя есть знания, умения и навыки ну, да, желательно, чтобы их было побольше, их уровень повыше, а глубина поглубже но! важно как ты умеешь применять этот пакет имеющихся у тебя знаний, умений и навыков. Как применять этот пакет наиболее эффективно в проекте «твоя жизнь»? в этом суть надпрофессионального образования.
Развитие современного общества и появление новых проблем, сопровождающих это
развитие, делает ясным, что в 21-м веке потребуются не только эксперты по некоторым аспектам отдельных стадий сложных процессов (профессионалов в старом понимании этого термина). Понадобятся специалисты по решению проблем. Это означает, что истинные междисциплинарные исследования, основанные на теории сложности, будут в цене. А в университетах будут стараться учить не
«предметам», а «стилям мышления».
Главная / ШКОЛА НАДПРОФ / Итеративная разработка, быстрое прототипирование, параллельное обобщенное внимание и самые стремные враги программиста
Итеративная разработка, быстрое прототипирование, параллельное обобщенное внимание и самые стремные враги программиста
Из скайп-чат-переписки Хаафа и Васи Садовникова.
Хааф:
Слышал про быстрое прототипирование и итерации?
Вася Садовников:
Только про итерации чуть-чуть где-то :)
Хааф:
Смотри. Расскажу кратко :)) И может ссылок найду потом. Самые стремные враги программиста:
1. Преждевременная оптимизация — можно убить кучу времени на микронастройки, которые не дадут никакого эффекта, или дадут отрицательный, плюс затруднят поддержку и понятность кода. Лучше сначала быстро писать самым красивым с ТЗ алгоритмизации виде, потом — только если тормозит!! — мерять профайлером!!! — и алгоритмически!!! оптимизировать узкие места. Это отдельная задача. Думать про нее заранее — потеря времени. Щас, ищу статью хорошую.
Вася Садовников:
Ага, да :))), из-за этого очень сильно страдаю и торможу :)) Правда, это уже экспоненциально уменьшается — отклонение в сторону преждевременной оптимизации :)
Хааф:
Вася Садовников: :)))))))))
Хааф:
«The First Rule of Program Optimization: Don’t do it. The Second Rule of Program Optimization (for experts only!): Don’t do it yet». — Michael Jackson
Открой пока, а почитаещь чуть позже, я щас еще 2 фишки расскажу:
2. Второй злейший враг программиста — это предположение, что он может «понять» или «придумать» программу, а потом ее «написать». т.е. когда разделены процессы моделирования и реализации — отсюда идут все жесткие методологии управления, типа составляем план и контролируем его исполнение. В программировании они ВООБЩЕ НЕ РАБОТАЮТ.
Вася Садовников:
О! Ого!
Хааф:
И от них отказались лет 30 назад во всем мире.
Вася Садовников: Ага!
Хааф:
Такой подход заменен итеративным. И различными его вариациями, когда создается черновая модель какого-то участка программы — она набрасывается быстро — и смотрится что получилось. Потом она уточняется и уподрабнивается и снова смотрится, при этом программа всегда поддерживается в рабочем состоянии на каждорм этапе. Она при этом на глазах у тебя растет. Как художник — он делает сначала крупные мазки, композицию, потом прорисовывает детали. По всей поверхности картины невозможно начать в деталях прорисовывать глаз и закончить гармоничной фигурой человека.
Хааф:
Не знаю, это ложится тебе как-то? Есть ага!-эффект? :))
Вася Садовников:
Да, ложится :))
Хааф:
Еще одним апофеозом итеративной разработки является быстрое прототипирование. Дело в том что, в любом программном проекте огромное количество неопределенности, но эта неопределенность распределена неравномерно по времени разработки. В начале ее очень, очень много. Чем ближе к концу, тем ее меньше.
Неверные решения, в начале, могут убить весь проект. В конце, что бы ты ни решал, сильно ничего не изменится. Поэтому, каким будет проект — закладывается _В НАЧАЛЕ_ и тут, шаг туда, шаг сюда — очень сильно влияет теория катастроф и бифуркаций в действии :))
Cовмещая это с тем , что мы не можем разделить моделирование и реализацию — мы получаем подоход быстрого прототипирования в рисерче-емких задачах — это самое лучшее и почти единственное что дает результат.
Смысл такой — твоя задача — скорость проверки идей — основная задача — то, что сработает, ты потом перепишешь основательнее или возьмешь за основу, но на первом этапе тебе нужно отбраковать кучу неподходящего. Лучше сделать это быстро.
Этот подоход дает удивительные результаты. Например, в геймдеве он популярен, там много конкурсов всяких типа игра за день, игра за 7 дней, и!! что удивительно!! Участиники гораздо более результативны! Проектов получается больше и они гораздо интереснее, чем те, кто не ставит себе ограничений по времени и полгода оптимизирует вывод четырехслойных текстур.
Хааф:
С этим всем связано умение видеть целиком проект. Где у него самое неопределенное место в данный момент. И именно его по-быстрому определять итерациями и протоитпированием и так шаг за шагом, к концу каждый раз уменьшая неопределенность, там, где ее больше всего у нас, сейчас это система редактирования баблов. И пофигу как вводится текст и насколько быстро, когда мы поймем как должно быть — найдем способ это сделать.
Всегда думать не отдельными фичами, а продуктом целиком. Что бы ты ни писал в данный момент, какую бы микрозапятую не ставил — всегда держать перед глазами целый светлый образ конечного продукта, ощущения от его использования, важные и не важные для него параметры и функции, эмоции. Это тебе будет давать критерий, делаешь ты нужное или увяз.
Вася Садовников: О, ага!
Хааф:
Каждое решение или вопрос — сверять с этим образом. Типа думаешь, а дайка я вот это... и сверяешь сразу! Это лакмусовая бумажка — ответ на все вопросы в проекте.
Вася Садовников:
Да! Йес!
Хааф:
Отлично :))) И еще один концепт важный: scope — как бы это… граница проекта, что в него входит, а что нет — это близко связано со светлым образом.
Вася Садовников:
О, да!
Хааф:
И должно быть ОЧЕНЬ четко определено в голове. Иначе будет feature creep и много других непритяных следствий. Например, ты вот видишь уже например, что написать едит контрол и какую-нибудь подсистему — практически одинаковый, большой объем усилий от размера фичи не зависит насколько долго ее писать — если она ввязана в большую систему ее писать можно _БЕСКОНЕЧНО_ .
ЛЮБУЮ ФИЧУ ПИСАТЬ МОЖНО БЕСКОНЕЧНО!
Вася Садовников: О!
Хааф:
Это не преувеличение. Возьми любую задачу и поищи библиотеки в сети. Каждая их них пишется много лет и они ушли очень далеко вперед и если ты будешь повторять их работу, ты никогда никуда не сдвинешься и не получишь ничего цельного на выходе, поэтому scope.
Вася Садовников: Да!
Хааф:
Очень четко — что ты будешь писать, а что не будешь, а также — что программа должна делать точно в этой версии, а что мы пока даже не обуждаем.
Вася Садовников:
Да! Е!
Хааф:
Если ты усвоишь данную дхарму – скорость, мощность, продуктивность, творческость и красота твоей разработки вырастут на порядки и не будут знать границ :)))
Вася Садовников:
:))))) Спасибо!
Хааф:
Вообще, Вася, у тебя есть дар. Ну, просто талант это да. Но я про другое. У тебя есть параллельное обобщенное внимание. Не знаю, как еще это сказать. Когда ты видишь не мыслью, а образом, гештальтом таким, ты можешь отодвинуться посмотреть на что-то и знать как оно устроено — это потом уже если нужно можно пытаться это формулировать. Это очень эффективный способ. Гораздо эффективнее линейного мышления. Юзай почаще :)
Вася Садовников:
:))))))))) Буду чаще юзать!
Хааф:
Для его эффективного примерения, базовая операция — это выбор масштаба. Что ты хочешь увидеть? Все!
Вася Садовников:
О! Как зум такой :))))
Хааф: Да :))
Вася Садовников:
Офигеть ваще! :))))
Хааф:
Он очень удобен в частности и для абстрактных систем вроде архитектуры, системы отношений в коде, алгоритмов и тп. Типа если заплутал — позволяет очень быстро и точно сориентироваться — где ты и куда тебе идти.