Комментарии 172
С утверждением про пытливость ума согласен, но при чем тут "чтобы пацанам не стыдно показать"?
Показать что? Пытливый ум? Процесс поиска?
Это своего рода цель для пытливости ума — знать, что тебе не стыдно показать, что ты не вполсилы работал, не «лишь бы заработало», не «лишь бы отстали».
Кхм, а бизнесу это точно надо?
О, "пиши код, б**ть"-и пожаловали...
Каждая сделанная "на отвали" правка закапывает бизнес в долги (если только цель этого бизнеса не выпустить одноразовое по). Вам так никогда не казалось?
Ну почему сразу "на отвали"?
В бизнесе множество градаций, разные задачи и разные решения.
Давать полгода на написание нового метода сортировки — это уже не бизнес, а благотворительность.
Поясню на сравнении:
1) делаешь продукт, отдаешь заказчику, он рад. Через время возвращается с хотелками. Ты что-то прикостыливаешь, отдаешь. Он снова рад (может быть). Далее ещё несколько итераций, но с каждым заходом тебе все тяжелее и затрат все больше, а выручка все меньше. В итоге, ты бросаешь этого клиента.
2) все так же, но ты в каждой итерации "делаешь хорошо". И с каждой итерацией тебе выходит делать проще и меньше. Заказчик платит столько же, сколько и в п.1, но выручка твоя гораздо больше, фрустраций твоих — меньше. И "пацанам не стыдно показать".
все так же, но ты в каждой итерации «делаешь хорошо»
… на второй-третьей итерации заказчик отваливается со словами «я вам за фичи платил, а не за рефакторинг». Или «а тут другие сделали лучше, а вы чёт долго возитесь».
И с каждой итерацией тебе выходит делать проще и меньше.
Э нет. Как максимум с каждой итерацией у тебя не добавляется время на разгребание прошлых костылей, однако само по себе «сделать хорошо» как правило занимает больше времени, чем добавление костыля, пока этих костылей не накопилась критическая масса.
… на второй-третьей итерации заказчик отваливается со словами «я вам за фичи платил, а не за рефакторинг». Или «а тут другие сделали лучше, а вы чёт долго возитесь».
А мы ему говорим в таких случаях — «дешевое — дорого, дорогое и долгое — дешево».
А мы ему говорим в таких случаях — «дешевое — дорого, дорогое и долгое — дешево».
А свобода — это рабство, да?
А кратко это все формулируется именно так — дешевое — дорого. А вот то, что делалось долго и дорого может в итоге быть вообще бесплатным и необслуживаемым.
Просто надо быть готовым к тому что заказчик всё равно скажет: делайте дешёво :)
P.S. Более того некоторые при этом даже вполне себе понимают что они делают и чем это может быть чревато. Хотя большинство конечно только думают что понимают.
Да я вроде бы и не говорил что такие заказчики обязательно являются плохими. Это их деньги и их риски. Если ему объяснили чем это чревато и он готов рискнуть, то хозяин-барин.
В том то и дело что это не всегда означает "делать плохо". Вот у нас недавно был случай когда заказчику нужно было временное решение для тестирование его какой-то внутренней ерунды, которое отработает 2-3 месяца, а потом его 100% заменят другоим решением на другой технологии. И ему ни документацию не надо, ни возможность что-то добавлять. Ему нужно чем быстреетем лучше и даже можно с багами. И где он неправ?
а дорогое и долгое всё ещё будет актуальным к моменту завершения?
… на второй-третьей итерации заказчик отваливается со словами «я вам за фичи платил, а не за рефакторинг». Или «а тут другие сделали лучше, а вы чёт долго возитесь».Да, может и так быть. Но вам не будет стыдно перед людьми, которые будут после вас работать. Даже, если они всё испортят. Но это их история.
Делай что должен, и будь что будет.
Да, может и так быть. Но вам не будет стыдно перед людьми, которые будут после вас работать. Даже, если они всё испортят. Но это их история.
— Папа, что мы будем сегодня кушать?
— Ничего, зато мне не стыдно за свои действия.
И вот относительно «кода за который не стыдно» реальность такова, что за такой код не платят. Ну не волнует покупателя софта никогда, что код такой, за который кому-то там не стыдно. Его волнуют совсем другие вещи — главным образом, что этот код делает, и насколько хорошо он это делает.
А так же насколько легко его сопровождать и добавлять новый функционал. Если всегда бежать "быстрее и дешевле", то рано или поздно становится "очень медленно и дорого".
А вообще везде надо искать золотую середину — реальность такова, что всегда делать "очень хорошо" просто невозможно.
Да, но при втором подходе необходимо документацию не писать)
Какие далекоидушие выводы, я в восторге.
Чаще всего я встречал, что бизнесу (мой вариант — это кровавый ынтырпрайз) не нужно копание в проблеме "от и до" в большинстве случаев, нужно компромиссное решение за вменяемое время.
Раскрывать еще более детально, надеюсь, не нужно.
И что в разных компаниях к техдолгу относятся по-разному: кто-то выделяет ресурсы на рефакторинг, а где-то команда меняется целиком раз в 2-3 года, это тоже я знаю и даже ощущал на себе.
Меня лично интересует мнение автора, что его побудило рассмотреть данный вопрос в отрыве от основной нити повествования решения проблем бизнеса.
Если я вам наступил на больную мозоль — искренне раскаиваюсь и впредь обещаю так больше не делать могу предложить огнетушитель для тушения тлеющего стула.
имхо, это худшее, что может случиться с продуктом. искренне недоумеваю, зачем доводить до этого?
> для тушения тлеющего стула
не переживайте за мебель, я давно асбест подкладываю! жгите еще! :-D
Надеюсь проект меняется вместе с командой иначе от смены команды тех долго не убавится
А я собственными глазами видел команду, работающую над проектом 15 лет. И именно потому, что времени на рефакторинг не выделялось.
95 процентов написанного по не используется. Фича не нужна или редко кем используется, стартап не взлетел и т. д. У меня вот достаточно пытливо думаю, чтоб допытать до этой стадии.
1. Получаем бизнес требования
2. Проводим первичную разработку занимая технический долг при необходимости, попутно собирая требования к будущей архитектуре
3. Проводим рефакторинг
Как показывает практика, при хоть сколь-либо грамотном управлении техническим долгом убыток от его обслуживания на шаге 3 во много раз меньше, чем ущерб от формирования архитектуры с пока еще малопонятными требованиями и её дальнейшей поддержки. Хотя пацанам, конечно, такое и действительно не покажешь.
Но потом у этого же бизнеса начнутся вопросы, а почему ты не знаешь этот фрэймворк, почему ты не используешь эту технологию, и тд
Показать всё — и процесс, и результат.
Talk is cheap. Show me the code.©Linus Benedict Torvalds
Ерунда. В мире вокруг полно́ примеров людей, самореализовавшихся и вполне состоятельных в личностном плане, живущих на грани нищеты (ну, Перельман, чтобы далеко за примерами не ходить).
Деньги помогают самореализации только если жизненная цель — заработать денег. Она далеко не у всех такова, что предыдущий оратор и подметил.
«Пытливый ум» это хорошо примерно как сытый конь в сферическом вакууме: взрослые люди любят говорить на презентациях «МЫ делаем Мир лучше», однако только одарёные дополнительными хромосомами не понимают что это лож. Современный Мир это лож.
Всем мы (ну минимум 98% из нас) каждый день ходим на работу не ради крутых алгоритмов и классных приложений, а ради ДЕНЕГ, чтобы не сдохнуть от холода/голода/дерессии и т.д.
И нет ничего хуже, чем ковыряться в чужом
А всё почему? Потому что деньги у тупых недалёких людей, которые платят за «здесь и сейчас, да так же как у всех», а не за элегантные и эффективные решения (в том числе будущих) задач.
Психологи говорят, что если работа вас угнетает — надо с неё уходить. А куда? Проблема-то не в отдельно взятых людях, а сложившимся обществе — обществе, которое выросло в гонке за звёздами, плевать что там под ногами/позади/вокруг — азарт он таков, отключает критическое мышление. Каждый хочешь жить быть владельцем IBM/Apple/MS. Каждый живёт только ради себя, никого не волнуют остальные… и колесо сансары (в философском смысле, а не религиозном) в его узкую точку зрения просто не помещается.
Сорян за лирику — накипело, но суть, надеюсь, сможете уловить.
Добра всем.
Одним "пацанам" не стыдно показать как раз красивый код, который легко читать.
Конечно, если "пацаны" правильные.
Есть и другая категория "пацанов" — им нужны какие-то трюки, магия, необязательно даже рабочая.
А есть третьи "пацаны", котроры хотят/требуют, чтобы работало и даже в код не смотрят.
Короче, много "пацанов", всем не угодить.
Паца́н — жаргонизм, обозначающий мальчика или молодого мужчину «с ярко выраженной сниженной окраской». Слово также характеризуется как стилистически нейтральное просторечие и может обозначать рядового члена организованной преступной группы.
Этимология: М. Т. Дьячок и И. Г. Добродомов предлагают вывод из «поц» (половой член на идише, в переносном смысле «глупец»). В Этимологическом словаре русского языка Макса Фасмера слово выводится из южнорусского «пацюк» (поросёнок, крыса).
Так о каких «пацанах» речь, уважаемый программист?
Думаю, лучше всего оценят усилия пацаны беспристрастные, то есть на gitHub.
В этом и смысл. Все боятся показать, что делают, потому что… Ну вот всё, что вы перечислили. Так рождается, развивается и самооправдывается говнокод.
Разумеется это актуально только при случае «все работает стабильно месяцами-годами».
P.S. Однажды на своем опыте даже залез в именно такой код, что писал сам же (только года три назад) и абсолютно не мог понять «почему сделано так топорно-криво».
Залез случайно, нужды не было. И «починил»… сломав конечно же работу итоговую, хотя общий смысл кода был идентичен, еще и стал куда понятнее.
Короче, предпочитаю не трогать «наследие богов».
Как это вообще возможно? Ну, я имею ввиду программировать с уровнем понимания "хз как, но работает"? Прямо какая-то невероятная отвага нужна, чтобы такой код в продакшн отправить.
Ну так работает же? У меня бывает, прямо таки магия какая-то. Хотел бы я объяснить, как. ¯_(ツ)_/¯
Не страшно? Я не знаю что именно вы там пишете, но представив себе, что моё приложение для онлайн-банкинга или софт для робомобилей разрабатывают так, мне становится немного не по себе
Это самое страшное, потому что тебя потом попросит доработать, а ты не знаешь что делать. Берешь и начинаешь после этого случайные строчки писать. Надо ли говорить, что не выходит аленький цветочек.
У меня как-то на проекте с кучей легаси и неявных взаимосвязей было. В дрожь бросает как вспомню.
Некоторые вещи и я могу делать "наугад". Например просто от балды угадать значение флага, или просто угадать со значением параметра. Однако я не помню ни раза, чтобы после того, как всё заработало/перестало работать, я не задался вопросом "а почему так?". Если заработал код который мне доступен я его изучаю, если это сторонняя либа, я читаю документацию до посинения и если не нахожу ответ, пишу баг-репорт.
Не представляю как можно оставить после себя код который работает "как-то".
Единственный вариант "хз как так вышло", который мне понятен — это случай, когда тебя спрашивают "как ты сделал такое круто API", а ты хз что ответить. Херачил на коленке и просто повезло угадать будущие изменения. Однако это обычно просто сказывается опыт.
почему я именно такой код написал
В таком случае да, стыдно. Рандомнокодинг редко бывает качественным, но видно это, зачастую, уже позже.
Конечно. Нужно и самому понимать сделанное, и чтоб другим оно понятно было.
А дальше развивается синергия. Если постоянно тренируешься делать так, чтобы пацанам было не стыдно показать, то постепенно это входит в привычку, и продуктово/менеджерская часть работы программиста тоже выходит на высокий уровень.
И другие «пацаны» — те, что на стороне заказчика — тем более.
Вот эта мотивация "чтобы не стыдно" и порождает основной конфликт между разработчиками и всем окружающим миром. Именно поэтому мы всеми правдами и неправдами пытаемся не ударит в грязь лицом в мелочах и лажаем по крупному в вещах глобальных и излишне абстрактных на наш взгляд. А потом пишем исповеди про то, как все несправедливо устроено. Мы пишем код так, будто его задача быть выставленным на выставке в красивой рамочке, а должны решать задачи, как ни странно, вне наших формальных обязанностей. Если мы пишем финансовое приложение, мы должны быть финансистами. Если медицинское — то докторами. И мы не должны бояться писать "говнокод" из "стыда перед пацанами", просто потому, что в коде ради кода мало чести и смысла если он не станет частью чего-то большего. Не стоит тратить время на полировку одного алгоритма, если все наши "бутылочные горлышки" находятся в других местах, а порой и вообще вне кода. А вот умение видеть общую картину — и есть самый ценный скилл, который стоит развивать. ИМХО.
И мы не должны бояться писать "говнокод" из "стыда перед пацанами", просто потому, что в коде ради кода мало чести и смысла если он не станет частью чего-то большего.
Говнокод — это код, который плохо моделирует предметную область и плохо работает. По каким причинам ему может отдаваться предпочтение при прочих равных — не представляю.
Не стоит тратить время на полировку одного алгоритма, если все наши "бутылочные горлышки" находятся в других местах, а порой и вообще вне кода.
"Хороший код" это не заоптимизированные до непонятной субстанции функции вызываемые 1 раз на старте программы. Всем понятны трейдофы. И вот трейдоф "сэкономлю сейчас час чтобы через полгода мы потратили на техдолг неделю" это плохо трейдоф, имхо. Конечно мне на это любят возражать про дедлайн, что вот этот час непременно приведет к провалу на рынке, и другой парень с говнокодом выедет, но почему-то на практике по моему опыту происходит иначе.
Говнокод — это код, который плохо моделирует предметную область и плохо работает.
Совсем не обязательно. Это может быть прекрасно моделирующая предметную область, и в момент запуска прекрасно работающая, лапша.
Говнокод — это код, в который трудно вплоть до невозможности вносить правки и расширять. Если разработчик не думает на одну абстракцию вперед — получается говнокод. (Если думает сразу на две абстракции вперед — тоже, впрочем.)
Совсем не обязательно. Это может быть прекрасно моделирующая предметную область, и в момент запуска прекрасно работающая, лапша.
Это оксюморон. Я не зря сказал "хорошо моделирующий предметную область и работающий". Не всякий работающий код — хороший код. Ну и неработающий, но моделирующий — тоже. Когда и то и то — тогда да.
Собственно, когда предметная область хорошо смоделирована, то расширения её функциональности происходят естественным образом как и эволюция самой предметной области. Говоря формально, есть функтор из категории предметных областей в категорию программ, и по свойствам функтора сохраняющих оригинальные формизмы добавление новых (доработка функциональности) естественным образом отображается в программе.
Говоря формально, есть функтор из категории предметных областей в категорию программ, и по свойствам функтора сохраняющих оригинальные формизмы добавление новых (доработка функциональности) естественным образом отображается в программе.
Так условие на "предметная область хорошо смоделирована" говорит лишь о том, что задано хорошее отображение на объектах. Это не означает, что отображение стрелках не будет существенно нетривиальным. Т.е. стрелка в предметной области будет "простой" (несущественная доработка), а стрелка в программах — сложной (для данной доработки не будет существовать идеоматической конструкции в используемом ЯП).
Ну смысл категории как раз в том, чтобы отразить стрелки точно так же, всё что с ними разрешено случаться — сжимать разные объекты в один, но тогда доработка — разделение этих объектов и восстановление стрелок между ними должно быть сравнительно тривиально.
Ну смысл категории как раз в том, чтобы отразить стрелки точно так же, всё что с ними разрешено случаться — сжимать разные объекты в один
Ну так они и будут так отражаться. Но у тебя функтор-то не из категории программ, а, наоборот, в нее, по-этому тебе никто не гарантирует, что "простая" стрелка из категории предметки будет "простой" в категории программ.
Т.е. у тебя в категории программ есть какие-то "простые" стрелки, которые соответствуют некоторым простым, идеоматическим изменениям твоей программы. Самый удобный способ выразить какую-то "сложную" стрелку — это собрать ее как композицию простых, можно сказать, что такие простые стрелки образуют некую естественную систему образующих.
В случае, если твой функтор из категории предметной области в категорию программ не сюръективен (а в общем он почти никогда не будет сюръективен) ты собирать сложные стрелки из простых не сможешь, т.к. простые стрелки просто не будут соответствовать каким-то осмысленным вещам в предметной области.
Под стрелками я имею ввиду не какие-то изменения программы, а операции в доменной области.
Например есть некоторые объекты А и Б, и некоторве бизнес-процессы между ними Hom-set f. Тогда у тебя соответственно в программе есть FA, FB и Ff. Тогда простые изменения в A, B или F естественным образом приводят к простым изменениям в FA, FB или Ff.
Да, и не забывайте, о каких пацанах идет речь. Это не ваш сосед по парте, не ваш менеджер, не ваш клиент. Это – весь мир программистов.Вот как-то я недоверяю «всему миру программистов». Я там таких персонажей видел, что сам бы не поверил, если бы мне кто-то рассказал.
Для меня «пацаны» — это достаточно узкий круг людей, с которыми мы периодически пересекаемся на ICFP Programming Contest, и мнению которых я доверяю.
Вторым «пацаном» еще являются мои напарники по проекту, с которыми мы кроссревьювимся, и которым я передаю сделанный код — им его потом саппортить.Так что код, как минимум, должен быть ими понят и принят.
И все.
Все остальное — умножается на вежливость: вежливое и конструктивное мнение принимается к рассмотрению (но не гарантируется к реакции), а любое невежливое — шагает в кучку к спаму.
Чтобы пацанам было не стыдно показать
Идея, в теории верная, но на практике… Кто эти "пацаны", чтобы доверять им судить ваш код? Те, которые спорят на темы "пробелы или табуляция", "ФП или ООП", "SQL или NoSQL"? Какой код ни напиши — обосрут. В достаточно разнообразном обществе всегда найдётся часть, которая будет категорически недовольна вашим решением, а если вы примете иное решение — недовольна будет другая часть.
Имхо, важнейший критерий годноты кода — решает ли код поставленную задачу правильно и в срок. Это объективный критерий, отражающий соответствие вашего кода цели его написания. Остальное (понятность, расширяемость кода, соответствие паттернам) вторично, и это может быть отдельной (важной или нет) задачей. И лишь потом должно следовать мнение всяких "пацанов", как наиболее субъективный и противоречивый фактор, возможно даже не имеющий отношения к истине.
Для обучения, конечно, может быть полезно показывать ваш код толковым "пацанам", чтобы узнать различные мнения. Но испытывать стыд или руководствоваться стыдом при этом точно излишне.
«Не стыдно показать поцанам» — это чистой воды романтика. Романтика времен Томпсона и Торвальдса. Ещё не забытая, но сильно размытая бизнесом и армией зарабатывателей денег. И пацаны не обязательно настоящие (хотя иногда с такими везет), нужно чтобы тебе лично не было стыдно перед твоим образом «пацанов».
При этом как и любая романтика — это только дополнение, которое не должно мешать основной деятельности — твой код должен работать. Но при этом эта вроде бы не особо нужная романтика делает (у некоторых) жизнь веселее, заставляет думать чуть больше, делать чуть больше, становится чуть лучше.
+100500
Во времена студенчества, я со своим преподавателем поднимали вопрос про пытливый ум и про гордость. Мол что на первых порах гордость душит взять готовый алгоритм и всеми силами пытаешься написать свой. Да еще и "красивый". Но через некоторое время понимаешь, что так не то что "далеко", а даже и "близко" не уедешь. Как бы не было интересно, но дедлайн не ждет.
Мне кажется, что комментаторы слишком буквальнее восприняли этих "пацанов" и срочно начали их искать.
Самый главный пацан — ты сам.
Или по-другому — некий виртуальный сферический пацан в вакууме, с которым ты материшься дискутируешь, когда лепишь костыли выбираешь оптимальное решение.
Это как и другие области в жизни… взять к примеру Win95. Или первый iPhone. С позиции «сегодня» — оба продукта г… но.
Но оба для своего времени были прорывом. И за них не стыдно (ну почти не стыдно)
Так что… для хотя бы приближения к корректной оценке надо делать привязку ко времени (другие не только опыт, но и инфраструктура, средства разработки-отладки, возможности языков (да и сами языки)).
Ну, во-первых, автору огромное спасибо. И за пытливый ум, и за тот код, который не стыдно показать "пацанам". Теперь на вот этом все и держится. Во-вторых, сдается мне, что не такой уж вы и старый и совсем не глуп. Это времена сейчас такие. Что ни пытливый ум, ни код, который не стыдно… Не надо это. Надо гуглить. Ибо, как настаивают работодатели и "владельцы" интернатур: "Все уже давно написано до вас. Надо уметь найти только."
Ребята, научите меня жить! Пожалуйста. Сижу и плАчу. Не прошла собеседование на интернатуру, написали мне в отказном письме, что баллов не хватило. Не буду жевать сопли, но если кратко, то из того олдскульного поколения я, как и автор, узнаю нас. Университетская прикладная математика, программирование на Паскале и Си. Мы ориентированы были на численные методы и оптимизацию. Мозг работает, и ту самую пытливость ума привили, и сборщиков мусора тогда не было, заботиться надо было. Обстоятельства так сложились, что пришлось на военную службу отвлечься на целых 20 лет. Уволилась, пошла на курсы Java core, QA, QAavto. Ну соскучилась, решила взглянуть, что тут у нас, чем дышит отрасль. А там… Смузи, героскутеры и полная фривольность Джавы, приятно, но хотелось бы порядка. Наследование, интерфейсы тоже хорошо, но есть вопросы. Мне показалось, что беспорядок там, где как раз все должно быть в строгом порядке и логике. Ладно, надо так надо, освою. Работать хочу. Ан нет! Без опыта работы низя. Где опыт? Интернатура. Это надо сдать тесты, проучится месяц-другой, чтобы потом бесплатно поработать с полгодика, за опыт. И попробуй попади на такую интернатуру с пытливым умом. Ладно тесты онлайн, английский и общие технические вопросы. а 4 задачки на листике, там, где как раз надо написать так, чтоб не стыдно было показать. Но на листике. И не надо решать, главное найти решение, потому что все написано до нас, а времени на думать у нас нет… Я не соглашаюсь называться тупой и старой, но думаю, что как раз этой пытливости ума и олдскульной ответственности сильно не достает современным компаниям. Креативность. Это по фиг знает как написанным требованиям, фиг знает как скреативить продукт. И ПО такое сейчас, что продавать его стыдно, не работает оно как надо. Где я неправа? А автору респект.
20 лет перерыва, просто засомневалась
Не нужно сомневаться, все получится, у меня перед глазами несколько примеров с 20 годами перерыва и очень удачным вторым входом в реку.
Удачи в любом случае!
А я бы вам советовал новый язык программирования. За такой большой срок все ваши прежние знания наверно можно просто взять и вынести на свалку. А все новые на той же джаве, если вы уже ее знали, но 20 лет назад, будут очень тяжело ложиться. Почему? Потому что у вас уже есть в голове какие то шаблоны и вы будите пытаться все на них натянуть даже если это в корне неверно. Почему так происходит? Потому что мозг так устроен. Он оказывается до 25 лет набирается знаний а потом их использует, максимально стараясь не вникать во что-то новое, а использовать готовые шаблоны. Поэтому, мой вам совет, начните изучать новый ЯП: go, rust, javascript (react, angular, vue). Если вы раньше с такими языками не работали вашему мозгу просто не откуда будет брать старые шаблоны и ему придется вникать и запоминать новую информацию.
Page object и TestNJ
Аж поперхнулся и пошел гуглить, нет, ничего не пропустил… TestNG смею все же заметить.
Но что могу сказать на счет него? Это «теха» которая крайне помогает когда нет навыков совсем.
Зато потом только палки в колеса вставляет. Очень уж больно грубый-примитивный инструмент с тотальным огораживанием «как надо делать».
Так что вовремя переходите на велосипеды свои, не засиживайтесь на TestNG.
Аж поперхнулся и пошел гуглить
Не-не, вы, пожалуйста, аккуратно. :))) Ничего не пропустили. Извините, досадная опечатка.
Так что вовремя переходите на велосипеды свои, не засиживайтесь на TestNG.
Ну конечно нет навыков. Совсем. Только курсы. Вы сейчас скажете, что самому надо работать. Это все понятно, но курсами я сэкономила кучу времени. Еще тот интенсив. Сделала перерыв немного, чтобы улеглось. Оно все доработается, понятное дело. Мне не совсем понятны наезды на тесты Нью Дженерейшн. Чего, они вполне читабельные, порядочек там. Все на классы разбито. Если что в локаторах меняется или элементы какие добавляются/не используются, то хоть не надо лопатить все, в нескольких местах поправить только. Фабрики если подключить, вполне себе гармонично выглядит. Подозреваю, что это еще и от самих проектов зависит. Как команда решит, так и автоматизируют. Но я не претендую, просто такой вот неопытный взгляд на вещи.
Ну и раз уж я только учусь… На какой велосипед посоветуете пересесть? Хоть в каком направлении, вы видите, все это движется?
Мне не совсем понятны наезды на тесты Нью Дженерейшн. Чего, они вполне читабельные, порядочек там
Этот инструмент задуман-разработан в 00-х. Если быть точнее, в 2004 он уже был.
За это время сменились целые пласты эпох. К примеру, еще не было jQ, а теперь его "уже нет" (условно нет конечно).
Поэтому… если мы говорим о тестировании фронтенда, то… следущим правильным шагом будет снятие древних оков и путь свободного плаванья.
Не стеснять себя навязанными рамками.
Берем веб-драйвер и вперед, в путь. Делаем свою точку входа (а не магию от TestNG), используем тот логировщик, что нам понравится (хоть готовый, хоть велосипед), сами решаем «как параллелить» тесты.
*Уже 7 лет варюсь в автоматизации тестирования. Сам с TestNG начинал.
Сейчас ПО представляет из себя коллекцию сервисов на SpringBoot. С тоннами всевозможных обвесов (как готовых, так и своих)
Если есть какие-то вопросы — пишите в ЛС, подскажу чем смогу.
Делаем свою точку входа (а не магию от TestNG)
Да-да-да, магия подействовала, что оно так красиво видится. :)
На самом деле, я так себе полагаю (самоуверенно), что с тем пониманием и знаниями, которые у меня сейчас есть, уже бы куда-то работать, и уже на проекте ориентироваться и качественно этот проект тестировать. Потому как обучаться можно бесконечно, даже вот вы акцентировали:
К примеру, еще не было jQ, а теперь его «уже нет» (условно нет конечно).. Я же не претендую на должности. Хотя бы стажировка.
Если есть какие-то вопросы — пишите в ЛС, подскажу чем смогу.За это отдельное спасибо. Я буду знать, что могу обратиться.
и статейка интересная и комментарии занимательные
Что бы вы ни делали, помните – делайте так, чтобы пацанам было не стыдно показать. Самураи учили так: если ты пишешь письмо, считай, что получатель повесит его на стену. Из этого и исхода.
Какую бы статью вы ни писали, не забудьте проверить опечатки. Завсегдатаи сети учили так: если выкладываешь что-то в интернете, помни, что это будут читать твои подписчики, а еще тысячи других людей и пытливые роботы.
С самой же идеей из статьи согласен.
Это был тот еще опыт, я потом сам себе так и не смог ответить — верни меня к моменту «строить самому, или купить готовый конструктор» решился-бы я все делать сам.
Так или иначе, пока строил, вывел аналогичное правило, но назвал его немного по другому «делать надо так, чтобы гордиться собой». Это куда как более эгоцентричная позиция, чем с «пацанами», и как мне кажется — более рабочая.
У меня есть прогон на эту тему, скопирую со своей темы на FH, там и других лайфхаков немало )
Думаю понимаете, подвид «баран рукожопый» это очень гремучая смесь. Этот подвид не только эти ваши долбаные ворота таранит и бодает, этот гад по ходу сего увлекательного процесса изобретает способы эти ворота взорвать, аннигилировать, трансмутировать и отправить в космос.
Но даже перед самым стойким бараном, рано или поздно, ребром встаёт вопрос мотивации. Особенно остро этот вопрос встаёт тогда, когда за бодание ворот не платят зарплату. А постоянное осознание, что за честь пободать новые ворота еще и самому надо отвалить котлету дензнаков, в определенный момент вгоняют мозг барана в конвульсивно-фруструированное состояние. Мозг барана от такой DDos-атаки впадает в кому и перестает отвечать на запросы рукожопых конечностей. А как известно – баран без мозга и конечностей это почти шашлык. Как по уровню мозговой деятельности, так и по уровню КПД. То есть не только пользы не приносит, но если долго на одном месте пролежит, то еще и вонять начинает.
На этом, философский ликбез о мироздании баранов предлагаю прекратить и перейти непосредственно к мотивации.
Приблизительно миллион начатых и незавершенных мной затей дают мне основание с гордостью заявлять, что я лучший эксперт по незавершенным делам в мире! Best of the best так сказать.
Вообще, делать, или говорить о чем-либо, именно что с гордостью – моё любимое занятие. Но я забегаю вперед, давайте по порядку…
Любую более-менее длительную затею, а таковой мы признаем все что требует более пары месяцев на реализацию, условно можно разделить на следующие стадии:
«ПришёлУвиделПобедил!» – период максимального задора, когда в руках все спорится и горит, когда ты фонтанируешь идеями, работаешь от восхода и до заката и наоборот, когда ты настолько болеешь затеей, что без обдумывания, а как оно будет, когда всё будет сделано, не обходится ни послеобеденный сон, ни разговор за кружкой пива. Все мысли, да и разговоры, понятное дело, только о светлом будущем, когда задумка будет реализована и будет всем щастье даром.
Самый кайфовый и самый, сцуко, опасный период. Кайф, понятное дело, от ощущения «ща горы сверну», и «тля, какой-же я умный и пряморукий…». Опасность этого периода ровно в том-же – от ложного чувства «всё могу» — по ходу реализации задумка трансформируется, изменяются размеры, добавляются новые функции, изменяются требования к эстетике изделия и тому подобная ботва, каждый из листиков которой фатально изменяют бюджет и сроки реализации затеи. А как-же – ведь на этом этапе «рукожоп» пребывает в задорном дурмане, и горы ему по плечо, и лужи по колено.
И очень, очень важно на этом этапе, оставить хотя бы процент трезвости в сознании, или на коротком поводке иметь невовлеченную в процесс жену со скалкой в руке, которая в строго выверенный момент отправит рукожопа в кратковременный отрезвляющий нокаут. Ибо нех. Задумал на старте план. Вот его, гад, и реализуй. И только когда закончишь – начинай улучшать. А то блин пуговицы ему перламутровые уже на старте подавай…
Верьте мне, я – эксперт, где-то половина из миллиона моих неоконченных затей, неокончились как раз к завершению этапа «ПришёлУвиделПобедил!» когда запас задора истощился, а дело сделано, в лучшем случае, процентов на двадцать.
Именно тогда наступает следующая стадия – «СовсемНемногоОсталось». Очень опасный этап. Ведь кое-какие результаты уже есть. Возможно даже прототип удалось сбацать, очертаниями напоминающий формы конечного изделия. Но всё это, как ложный белый гриб – промежуточные результаты работы кажутся очень красивыми, но если все остановить именно сейчас, то как минимум будет понос, а иногда и «я сказал в морг, значит в морг…». То есть все ранее потраченное время и материалы – в помойку. Именно мозг, отрезвевший от задора (или скалки жены) начинает здесь свою подрывную деятельность, шепчет, где-то там в глубине «отложи… отдохни… и через месяц… или через два… вернешься и доделаешь…»
Хрень! Не верьте мозгу на этом этапе. Не вернетесь! Не доделаете. Мозгу ведь что важно? Мозгу важны победы. Быстрые, скорые блиц-криги, в духе Чингис-Хана, и чем больше на единицу времени таких побед, тем лучше мозгу. А тут… долгострой. Вот мозг и заскучал, и подсказывает своему хозяину-рукожопу «…да брось ты эту хню, начни новую, она интереснее…».
Знаете что, именно из-за такой вот особенности работы головного мозга в современном мире так популярны компьютерные игры. Ведь поражение в них ничего не стоит. А вот победа – приносит эндорфины и удовольствие. Мужчина, ну то есть человек, неважно рукожоп он или нет, исторически создан победителем. Вся эволюция его, от размеров куличика в песочнице, до вопросов увеличения длинны полового члена и чей автомобиль круче – это история побед и поражений. Мужчине важно побеждать. Так много раз, как это возможно.
Давным-давно, я придумал костыль, чтобы успешно преодолевать этап «СовсемНемногоОсталось». Имя этому костылю – лестница. Я использую любую, вообще любую возможность подняться по лестнице наверх. В подъезде многоэтажного дома. Подняться на еще одну ступень. На эскалаторе в метро не стоять, а вверх идти. Ведь каждая ступень – моя победа. Над гравитацией, как минимум. Я каждый день питаю мозг победами. Над «не хочу и не могу» — победа. Забудь про лифт! И за ступенкою – ступень. Победа всегда с тобой. Победа надо мной. Внутри победа.
Простите за патетику. Но без нее нельзя. Приблизительно треть из миллиона моих незавершенных затей бесславно сгинули именно на этапе «СовсемНемногоОсталось» как раз из-за отсутствия краткосрочных побед. А лестница – помогает. И для коленей полезно.
Следующий этап – «КакСабакаУстал» — самый страшный и, одновременно, самый продуктивный. Именно на этом этапе делается самый большой объем работ, именно в это время ты уже воочию видишь результаты своей работы. В зависимости от упёртости и упоротости – работать иной раз приходится на износ, крепко сжав челюсти. Стараясь не вспоминать о том кому именно эта светлая идея пришла в голову, и что надо сделать с этим человеком. Это очень и очень опасный период, когда многие работы, если не все подряд, из-за усталости, частичной потери интереса и иных причин, могут выполняться по принципу «и так сойдёт». И если на старте, под напором задора, иная деталь без раздумий переделывалась, из-за пустяковой придирки, то на этом этапе часто не переделываются даже жуткие косяки.
Этот этап – рубикон всей затеи. Из-за гигантского объема работ здесь особенно важно не косячить, наоборот, поднять планку требований к результатам еще выше, чем на первой стадии работ. Для того чтобы не косячить, когда максимально всё обрыдло и устал, есть замечательный костыль – надо гордиться собой.
Вообще, это целая проблема поколений с советским прошлым – неумение и стеснение в проявлениях гордости. Вот кем мы привыкли гордиться? Ветеранами ВОВ, тут без вопросов. Необъятными просторами, реками, полями и военно-промышленным комплексом – тоже вопросов нет. Родители гордятся своими детьми, но это к логике никакого отношения не имеет, сплошные феромоны. За наше с вами правительство только даун будет гордиться, поэтому мимо. И что получается? Ветераны и просторы. Первыми гордимся по инерции, а вторым не гордиться нельзя, потому что наши просторы действительно самые просторные, факт. Я это к тому, что не приучили нас в свое время гордиться не чем-то древним, или эфемерным, а вполне осязаемым… например собой.
Именно на этом этапе нам изо всех сил надо научиться и начать гордиться собой. И это будет наш волшебный пендель, который лишит нас косяков на самом сложном этапе.
Знаете что… я очень стеснительный, ну реально. В последнее время стало модно — особое отношение к интровертам, спецкурсы для преодоления внутренней зажатости и прочая ботва. Знаете как стыдно мне было в первый раз сказать вслух самому себе – «Я сделал эту штуку Хорошо и Я горжусь собой!» Я много раз повторил это в уме. Но это не работает, если не сказать вслух. Чтоб и сам услышал, и мир вокруг.
Вот. Знаете, мужики, хватит делать одноразовую мишуру. Отчего почти весь мир вокруг вдруг стал жить на горизонте в пять-десять лет? Одноразовая посуда, картонные домики, машины из фольги, арматура из стекловолокна, мебель из опилок, электроинструмент со сроком службы максимум в год, лопаты и грабли из миллиметровой стали – я сгибаю их пальцами одной рукиблять!
Будто вся наша жизнь вдруг пластиковая стала, сомнешь-сломаешь, и новую в магазине купишь.
Я сделал это. Это очень красиво. Это крепко. Это сделано настолько хорошо, что будут пользовать мои внуки. Это очень крепко. Это действительно ХОРОШО. Именно Я сделал ЭТО. Мать вашу. Да я горд собой! Я – молодец.
Время от времени, когда я особенно устал, когда я заканчиваю какую-либо работу, узел, или этап, когда я окидываю глазом сделанное, когда сделано действительно отлично, я точно это знаю, ведь именно я трудился, когда я сначала мысленно произношу «я горжусь собой…?» и не встретив никакого внутреннего дискомфорта, то я могу в самый полный голос, на всю вселенную проорать – «ДА! Я горжусь собой» — и именно это помогает, со скрипом суставов, крошками металла на зубах, исцарапанными руками, искусанный слепнями и комарами, встать и начать делать следующий, самый крайний этап.
И завершающий — «ПапаМожетВсё» — очень приятный и, одновременно, очень опасный этап. Главное – не спиться нахрен. На этом этапе уже можно показать всем подряд и самым близким результаты своего многомесячного труда, если они по каким-то причинам не видели их до сих пор.
Очень важно на этом этапе записывать все замечания к функционалу или эстетике, поступающие от зрителей, потому что взгляд создателя нафиг замылен и для него полученные результаты идеальны априори. Важно именно записывать, потому что мозг, сцуко, ленивый, не запомнит что там бормочут какие-то левые человеки, не фига не понимающие как все это строилось.
А потом, протрезвев, эти записи надо внимательно изучить, и вот он – план улучшений, который, впрочем, вполне можно отложить, до лучших времен.
И уже тут, совсем неважно – наступят те самые лучшие времена доделок, или ленивый мозг будет откладывать этот этап бесконечно.
Ведь главное дело — главный конструктив — то ради чего все затевалось — УЖЕ ПОСТРОЕНО.
И именно это греет душу более всего.
И спасибо. Я прямо сейчас взял и сделал пару небольших шагов по своей «лестнице».
И думаю правильнее было бы сказать не: «пацанам не стыдно показать», а «дорога возникает под ногами идущего»
А в целом сложившаяся ситуация является легким бредом… Да, надо чтобы понимали и осознавали с чем работают и как это работает. Но, почему бы и не рассказать сразу людям подводных камнях? нарисовать «дорожную карту»… И пусть потом каждый своим пытливым умом доходит до кондиции работы в компании…
Пытливый ум – это не врожденное, а вполне себе приобретаемое качество. До работы программистом у меня, например, его отродясь не было.Пытливый ум свойственен детям. Со взрослением он пропадает. Годам к 20-25 примерно.
Например, я прекрасно слышал про Биткоин с самого его начала. Слышал много лет. Сначала смотрел на курс и думал что это очередная «система зароботка для школьников». Потом, когда курс подрос — «да ну, это не серьезно тратить на это время». Дальше было — «ну да, интересно, но вот-вот обвалится». Помню, когда курс был уже $200 за 1BTC мне знакомый говорил что хочет попробовать собрать свою ферму. Я ему с деловым видом ответил — «та не лезь туда, да, тема хорошая, но поезд уже ушел, поздно». Помню потом как курс перевалил за $5000… Ладно, это хоть не я продал 10000BTC за $25 и купил за них пиццу.
И я точно знаю, будь мне до 20 лет когда он появлялся — точно попробовал бы. Раньше в IT пробовал все. Например, когда дошел уже до WEB — это были и дорвеи, серое, белое СЕО; писал движки сайтов на Perl, ASP.NET, Python, Ruby, PHP; пробовал разные проекты, и веб-студию создавал, и контентные, публичные сервисы, SAAS; под Россию, Украину, Европу, Америку, развивающиеся рынки Африки без конкуренции, но с европейскими деньгами. Та что там говорить, как все нормальные «пацаны» в поиске себя.
Вот мы подошли к главному. Выше я говорил о пытливости ума как таковой. Автор же говорит о пытливости ума в своем деле. Мне кажется, нет смысла пытаться развивать пытливость ума в своем деле. Она должна появиться сама собой (а ко всему остальному — при этом пропадает). Если у человека нет пытливости ума к своему делу — он просто находится не на своем месте.
И еще немного тревожно за подрастающее поколение. Все в гаджетах и интернетах. На всем готовом. Не надо ни думать, ни фантазировать — за тебя все сделали, разжевали и уже практически перевалили. Сиди и втыкай. Как бы не вылезло это все потом боком, в серую и ни чем не заинтересованную массу.
Уверен, есть и какие-то генетические предпосылки к уровню любознательности, как и средовые, культурные, тысячи их!
И еще хотел добавить. Есть понятие низкой фрустрационной толерантности:
Люди с низкой фрустрационной толерантностью не терпят дискомфорт, неудачи, затруднения и проблемы. Они гневятся и обижаются, если что-то задерживает осуществление их желаний, испытывают стресс из за внешних и внутренних преград, они склонны сдаваться, бросать начатое, при трудностях.
ТЗ, где всё разжёвано, по полочкам разложено
А какое тз должно быть? Где все расплывчато и потом переделывать по 33 раза? И где тут связь с пытливостью ума?
Ты что читаешь? «7 навыков высокоэффективных людей»? Дурак что ли читать эту ахинею?
Они же:
Экзальтированно лайкают высеры nmvian
Эм, а как связана "пытливость ума" и "красивый код, который не стыдно показать"? Человек может быть пытливым, но не пишет Unit-тесты. Знаете, почему? Потому что когда есть пытливый ум — не нужны Unit-тесты :) Это все смешочки, конечно, но очень часто я вижу "пытливые умы", которые пишут нетестируемый код.
В свою очередь, часто бывают и другие (хотя таких меньше), которые пишут хороший код, тестируют его, оформляют для пацанов, не забывают про CI/CD, следуют процессам, но решать сложные задачи у них не получается, не хватает "пытливости ума".
Это я все к чему. "Пытливый ум" — это хорошо, но чтобы быть хорошим инженером — нужно еще и следовать процессам и соблюдать подходы в программировании.
Пытливый ум это желание разобраться как оно устроено. Кто в детстве получал ремня от отца за разобранную новую машинку или робота, тот меня поймёт.
Настоящим ученым не интересно, какое практическое применение имеет решаемая ими задача. Большое количество разделов используемой сейчас повсеместно математики было создано людьми, которые о практическом применении своих трудов как-то и не задумывались. Натянуть в гильбертовом пространстве сову на глобус — что может быть прекраснее? И пацанам с Оксфорда показать не стыдно. Ученые инвестируют в свою голову. Всю жизнь (не считая времени на защиту ученых степеней). Так же, как инвестирует в свою голову автор статьи.
У бизнеса же задача принципиально другая. На качество кода ему плевать. Бизнесу важно иметь соотношение затраты-прибыль лучше, чем у конкурентов. Иначе бизнес сожрут другие бизнесы. И если индус за доллар в час пишет говнокод, который как-то работает и выполняет свою задачу — отлично. Главное для бизнеса — найти ту оптимальную точку, когда затраты на поддержку говнокода пока еще ниже, чем на зарплаты не-говнокодерам. В этом факте — вся суть современных софтверных корпораций. Не надо забывать еще и о том, что корпорации за поддержку говнокода заставляют платить пользователя, это называется Support Plan. И это не бизнес такой плохой, это реалии современного мира. Компании, которые им не следуют — разоряются, или их покупают и новый владелец начинает следовать этим принципам.
Но светлая изнанка состоит в том, что противоречия между этими двумя мирами, по большому счету, и нет. Люди, подобные автору — крайне редки. И бизнес вынужден содержать их, платя им большие зарплаты — на случай, если в каком-то месте говонокод уже становится неприемлем, например, в архитектуре. Бизнесу так спокойнее, и деньги на это найдутся.
А вот остальные 99% программистов — да, ситуация сложная. С одной стороны, им убедительно ездят по мозгам, говоря, что идеальное качество кода не нужно, и доказывают это с цифрами на руках. С другой — как-то грустно в некоторый момент осознать, что потратил лучшую половину жизни на написание и поддержку говонокода. Понимать, что в большинстве случаев надо было инвестировать в себя — в свою голову, в знание алгоритмов, в привычку копать вглубь (жутко трудно прививаемая штука, кстати), а не в свое резюме для бизнеса, изучая модные фреймворки, и не в квартиру в центре города.
Не пытайся угодить пацану, просто пойми правду. Правда в том что
Возможно выражение "пытливый ум" можно заменить словом "любопытство". Пример с коллегой из текста как раз подходит: вам стало любопытно как стажер пытается решить задачу, а раз любопытно, значит вникаем. С возрастом любопытство притупляется, потому что мозг уже имеет большую собственную базу знаний и решений и ему просто лень вникать во что-то новое.
"Чтобы пацанам было не стыдно показать" — просто зачет!
Если делать для себя, то будешь ковырять, изучать и делать максимально хорошо и понятно, чтобы самому потом этим так же легко пользоваться.
Может быть поэтому и стал разработчиком)
Чтобы пацанам было не стыдно показать