• Мой путь

    Спасибо Автору этой замечательной подборки. Кажется, меня ждет еще одна бессонная ночь...

  • Мой путь

    Андрей Церкус, unit или блочное тестирование предназначено для того, чтобы тестировать какой-то черный ящик, если мы знаем, что подается на вход и что получается на выходе. Если удастся в вашем ящике, двигающем некий дивчик немного порефакторить и выделить блок который будет просто двигать, используя какой-то интерфейс, причем ему будет все равно что двигать, главное было бы оно двигабельно, то вы сможете протестировать такой модуль с помощью юнит теста. Можно так же установить координаты мыши и вызывая метод, проверить в какую область разместился дивчик. В общем, есть черный ящик. Как вы определите тот факт, что он рабочий? Вы передадите что-то на вход и проверите результат. Неважно как воздействует на вас результат — вы всегда можете это определить. Вот этому стоит научить компьютер. Подготовить входные данные, вызвать тестируемый черный ящик и как-то проверить результат. Он сделает это автоматически и скажет вам «красный», если система повела себя не так, как закладывалось."как написать юнит-тест какого-то куска кода, который работает с громадным числом вариаций входных данных" Думаю это не «кусок», а «кусочище». В таком случае я бы декомпозировал этот черный ящик на маленькие ящички и тестировал бы их независимо. А если это не получается, тогда утверждал бы с помощью теста: 1й тест «если в этот хаос я засуну 2, то на выходе сделав А-С-К-Е-А-А-И-А, я получу 45» 2й тест «если я передам −1, то я получу 5, при этом ничего делать не надо». И так много-много раз, пока не успокоюсь за тот код, с которым работаю. Первопричина создания теста — стресс, который на меня нагоняет код. Стресс, связанный с тем, что я не знаю, как код работает, или мне кажется, что код работает неисправно, или я хочу поставить какую-то контрольную точку, позволяющую мне сделать, к примеру, рефакторинг. Мне страшно — пишу тест. Мне спокойно — продолжаю работу. Если мне надо узнать, как поведет себя система, если я сделаю М, тогда я отладке предпочитаю написания тестирующего кода. Если кто-то спрашивает меня, как работает это, я предлагаю ему написать автоматический тест (перед тем изучив существующие тесты) чтобы узнать это. Это экономит время и оставляет наследие.

  • Мой путь

    Maxim Yemelyanov, спасибо. «Обычно проектирую сверху вниз» Это хороший инструмент, тоже пользуюсь его преимуществами. В SCRUM с его небольшими итерациями — самое то. «мне кажется я только сейчас начинаю понимать что-то в этом» кажется, я только начинаю понимать о чем вы.

  • Мой путь

    glassofmind, вы правы. Спасибо за замечание. Несознательно я тоже стал его использовать. Задав себе вопрос «почему? » я нашел ответ. Дело в том, чтобы изгнать неуверенность приходится прибегать (сознательно или чаще несознательно) к использованию инструментов, которые дают эту уверенность (или иллюзию). Если сравнить (фоносемантически) слово «функциональность» и слово «функционал», то последнее более сильное, нежели правильный вариант. Проще это простое детское повторение, и стоит говорить «повторюшка шрюшка» дабы отучить:). Чем больше наблюдаю за общением (неважно на с каким уровнем знания русского языка), тем больше замечаю, что человечество пошло не тем путем. Слова это якоря, которые вызывают у разных людей разные чувства. Мое «дерево» и ваше «дерево» рождают разные чувства у меня и у вас. Мое определение будет строиться на моем опыте общения с деревом, а ваше на вашем. Они разные. Мы можем спорить часами об одном только дереве. И по сути, каждый из нас будет прав потому как описывает один и тот же объект в действительности, но разными чувствами с использованием общепринятого Русского языка. Сложно порой, вроде слушаешь кого-то, но не слышишь или наоборот ты говоришь, а тебя не слышат хотя слово в слово могут повторить все то, что ты сказал.Думаю, главное, чтобы мы слышали и понимали друг друга, а не то как мы к этому придем. Согласен с вами в том, что от несознательно привитых паразитов стоит избавляться. Что делать, если для лучшего понимания в узком кругу людей приходится использовать эти слова, а когда выходишь на свет, то сложно вот так просто переключиться обратно?

  • Мой путь

    smp, спасибо за ответ. Revenge_one и Сергей Волошин. “Увесь світ старався скільки часу, а виявляєцця усе то мона через ‘Мой путь’...” думаю, мной было бы потрачено еще много лет, чтобы без этих “стараний” выйти на текущий уровень. Не факт, что я проделал бы этот путь. Быть может, все осталось бы на процедурах, а я ушел в другую степь и через 20 лет придумал свою какую-то методологию. Не знаю. Потому хочу сказать спасибо Авторам тех книг, которые читал и тем людям, которые меня чему-то научили. Спасибо. Думаю, если забрать сейчас у всех интернет и книги, то пара-тройка поколений, и мы снова вернулись бы к мускульной силе.Св. Бубукий, хорошо, когда к целям везет. Теперь мы имеем кризис, он делает свое дело — забирает долги назад. Есть над чем подумать. Где-то слышал совет “давай больше чем берешь” — это я имел ввиду, когда говорил “я хочу у вас работать, я не знаю как, но научусь”.

  • Мой путь

    Revenge_one, людям свойственно преувеличивать свои достижения и я не исключение. Все мы дети в большой песочнице, и, когда какой-то ребенок построил свой замок, пускай даже по книге «Замки из песка для чайников», он хочет чтобы все вокруг знали, что, в первую очередь, сделал его он сам, а потом уже с помощью других. Где-то я слышал: «все что хорошо сказано — мое». Revenge_one, спасибо вам за замечание. Лучше сказать и дать возможность устранить непонимание, чем просто подумать и составить неправильное мнение про человека, а потом постоянно доказывать себе что он именно такой и не иначе («а если он оправдывается, значит я прав! »).

  • Мой путь

    Тень, спасибо за подробный комментарий и за наводку с Data Driven...Что касается «тыкания в одну кнопку», так это так же как и ходить-доказывать кому-то что тыкать не стоит. Помню, как только я открыл это чудное свойство ТДД, я вывесил над рабочим местом лист А4, где написал «дней без дебага» и каждый день ставил туда галочку. На меня смотрели как на диковинку. Еще чуть позже я просто заражал заинтересованных. Еще чуть позже только во время парных программингов, но так же с активным втиранием. Теперь считаю, что только примером и молча (пока не спросят) можно чего-то эффективно достичь — много времени на ожидание запроса «а как это ты так? », а потом эффективный диалог, в котором все сразу в подкорку уходит (без критики типа «ты дурак „-“ нет ты сам дурак»). А у тебя как с этим, есть КПД? Вот недавно задался вопросом «почему этот мужик так дорого берет за свои тренинги? ». Ответ — потому что он получает высоко мотивированных, желающих получить информацию, людей. А ломать чужую (без его ведома) психику и переводить на новый инструментарий (тем более не факт, что скоро снова прийдется переучиваться на что-то новое) — это себе во вред. Лучше выучить еще один инструментарий, а потом еще и еще один, а когда к тебе подойдут с вопросом «а как у тебя так выходит? » — вот тогда объяснить куда он попал и повести за ручку к результату. Кстати дебагом пользуюсь в тех случаях, когда чувствую что это будет эффективнее. И тут можно пойти дальше от «тыкания мышкой в одну точку». Например под eclipse Ctrl-R выполняет все за тебя до текущей линии, в которой останавливается (тебе стоит только оставить точку где-то на входе). А от мышки советую вообще отказаться — любая ИДЕ располагает множеством горячих клавиш, с помощью которых «тыкание» кажется уже не таким тривиальным. Ускоряться можно. Только кто хочет? Потому и советую показать примером — когда ты покажешь показатель (качество+время+результат) в несколько раз выше среднего, тебе с большей долей вероятности поверят. Спасибо за комментарий.

  • Мой путь

    Vlad Romanenko, рад что вызвал положительные эмоции. leokom;).

  • Мой путь

    Доброжелатель, спасибо почитаю. Не меняйте никанейма по жизни. Alexander, вас заинтересовало что-то конкретное? Если так — это можно сделать темой следующего поста. oshyshko, каюсь — слушал Гришковца, очень понравилось. Вполне возможно я несознательно допустил его вклад в статью. Но, кажется, теперь я знаю секрет его гениальности. Говорить про свой опыт можно часами. Тем более, если им некогда гордился, а теперь вспоминаешь как наивное и красивое детство. Попробуйте поведать что-то из своего прошлого. Уверен, будет тот же эффект. Что касается Спектрума. То, с чего начал статью (бытовой компьютер ЛИК) — это его брат, только не такой цветной. Те еж кассеты, тот же пиииииииии... тыдыш!... вжвжвжжжвжвжвжуииииииииввжжвшшшвшвшвшвшшшвуиииииип! Когда слушал эти байты и мыль только об одном -, а получится или нет? Где нам сейчас с флешками Х ГБайтными об этом думать. А было и с ручкой в тетрадку байт за байтом, когда магнитофон поломался. Советую, очень советую загрузить эмулятор с сети и забыться на неделю в свой любимый Z80. Мой был КР580ВМ80А Охх. Иду искать эмулятор...smp, я рад это слышать. Про моки слышал и чувствую острую необходимость. Завтра обязательно попробую. Пару дней назад прикручивал к проекту DBUnit. Пока остановился на том, что надо сконфигурировать ее для записи во вьюху. Св. Бубукий. Устраивался на свою текущую работу тоже интересно. Я не знал, возьмут или нет, я просто пришел на собеседование, сказал: «я ничего не знаю из того, что мне перечислили, но готов учиться!» Меня взяли, не посмотрев ни на диплом, ни на те Делфи-проекты, которые я принес. За первых же пару дней я освоил JSP. Это было так же, как и с обработчиками в делфи. Там было все, что надо для работы программы и М и В и Ц. Это позже я узнал что джиеспиха придумана для других целей... vkozhaev, я вот сегодня поднимался в горку на своем велике и думал о вашем комментарии: сейчас «больно»? — через месяц будет приятно. Все зависит от того, как мы относимся к этой боли. Тот, кто получает удовольствие, думаю, уже понял причинно-следственные связи на прошлом опыте. Лично я стремлюсь к тому, чтобы максимально делать свое хобби. Там любая «боль» в кайф. Вот собирал кубик рубика. Первый прорыв через боль и собрал, потом за 10 минут, за 5, 4, 3, 2.5, 2, 1.5, 1.3... На меня посмотреть с боку — чувак «болеет». Крутит и крутит. В маршрутке крутит, за обеденным столом крутит, на перекуре крутит, в туалете крутит. Сочувствую тому, кто нехотя бы взялся за то же дело только чтобы кому-то что-то доказать. Вот ему «больнее» всех. А если мотивация идет изнутри, тогда все немного иначе. Про «то, что не убивает»: если идти достаточно долго, то куда-то обязательно придешь. Остановка на этом пути — смерть, но смерть не так как мы привыкли ее видеть с косой, а просто остановка. Все когда-то останавливаются. И я вот с кубиком тоже остановился на 1 минуте и 20 секунд, но остановился потому, что потерял интерес. Продолжить и изучить другую методику скоростной сборки без мотивации для меня пока будет очень больно — жду попутного ветра. А есть и другая фишка — решать головоломку с закрытыми глазами. Но тоже будет побаливать. Владислав Максимчук, спасибо мне это приятно слышать. flyman, перефразируйте, пожалуйста. Кажется, я плохо понял.

  • Мой путь

    Denis Osetrov, спасибо. Вот как раз самое «больное» для меня было сделать ТДД привычкой. Любая привычка приходит за 20 дней. Завел пинарик и вперед. Когда привычка привилась — я обрадовался и вздохнул с облегчением. Сейчас «больно» бью себя по пальцам оттого, что иногда позволяю себе написать немного больше функционала, чем того требует тест. Приходится говорить себе «ээээ, чувак, так не пойдет», ремарить (а больнее когда просто удалять) избыточный (и чаще всего содержащий от 2 до 5 ошибок) код и подыскивать тест (тут уже тест, а не спецификацию), который бы выловил ту каку, которую я написал в реализации. Так в одной паре придумали игру. Очень мотивирует. По всем правилам парного программинга — один пишет минимум кода, чтобы тест заработал. Самого страшного и жуткого кода. Второй пытается с помощью тестов вывести его на чистую воду. Проигравает тестер, если ему больше нечего сказать или имплементатор, если тестер его заставил написать обговоренную изначально реализацию (достаточной для красивого коммита). А потом совместно делают рефакторинг того, что намудрили.Советую вам это делать в паре — так, подстегивая друг друга, 20 рабочих дней пройдет для вас двоих незаметно. А потом еще будет долго что вспомнить с напарником. Работает лучше любого тимбилдинга. Вспомнил как сказал Стив Макконнел: хорошего программиста (как и человека) делают таковым его привитые привычки. Ой! Чего-то я увлекся:) Успехов вам и мне!

  • ЗОМБИ-программисты

    Классная статья. Про жизнь, только в непривычном цвете от чего и критика. Мне кажется что настоящий self-super-pupper-motivated есть только в занятии над СВОИМ хобби. На меня часто вешали ярлык лентяй и в школе и в университете и еще где-то там. Лентяй и все тут. Но стоило мне самому поискать занятие по душе, так мало кто теперь скажет подобное. Согласен с тем, что менеджеры ленивые и зомбанутые — ихними руками (ввиду отсутстивия рук у программистов) из хорошего программиста делается зомби. Иногда зомби самородные бывают. Их можно разделять по половому признаку и расовой принадлежности... Но мне проще говорить человек не на своем месте и делает не то, а это уже забота его менеджера. Сегодня я супер пуппер, а завтра зомби. После завтра оп! и снова на волне... Всякое бывает. Думаю можно поиграться с термином «инкубационный период», раз уж мы заговорили про болячки. А еще иммунитет... Спасибо, cencio, за статью. Хорошая работа.

  • Об эффективных багрепортах

    Спасибо. Хорошая статья. Краткость сестра таланта.

    Поддержал: Евгений Кулинич
← Сtrl 123 Ctrl →