вторник, 22 марта 2022 г.

Поддержка IT-отрасли

Кто владеет информацией, тот владеет миром. Это аксиома современности. А технологии, собирающие и хранящие, анализирующие и обрабатывающие информацию, бессмысленны в случае ограниченности её потребителей.
Ну что толку в том, что вы один знаете таблицу умножения, если на рынке действует натуральный обмен без денежной прослойки? Зачем вам быстро считать монеты, если обмен происходит не в объёмном количестве, а по качественному признаку?
Или, например, зачем вам уметь читать или говорить на иностранном языке, если все закрылись у себя дома и не ездят в гости, не обмениваются новостями. Им всё равно, что происходит у вас, вам безразличны их достижения, потому что у вас всё по разному, уникально, точечно, логично и более приспособлено к собственной местности.
Развитие конкретики исходит из конкретных традиций. Да, по некоторым статьям в чём-то можно найти единообразие, допустим, появление радио. Но тот слой общества, который ставит превыше всего доходную составляющую, любую новинку стремится присвоить себе. С другой стороны, народы с широкой душой щедры не только хлебосольством, но и помыслами, мыслями, идеями. Россиянам не столь важен факт бюрократического подтверждения, сколь возможность поделиться способностями, возможностью помощи неимущим.
Одновременно общество, внедрившее юриспруденцию для защиты материальных интересов, к сегодняшнему дню устало соблюдать законы, которые они же сами и создали. Что это? Недальновидность в разработке законодательства? Ведь принятые к исполнению правила приходится соблюдать всем, даже тем, кто их придумал, а это вдруг стало невыгодно им самим. А может это психическая неуравновешенность? "Зачинатели демократии" вдруг перестали прислушиваться к мнению большинства, считая лишь себя исключением, элитой. Спешу напомнить исторические факты о тех, которые возомнив себя богом так и не добрались до солнца и заоблачных вершин.
И это тоже информация, которая была собрана историками для того, чтобы нашему поколению жилось легче, проще, а кому-то и выгоднее.
Какой-то век назвали "каменным", какой-то "железным". А текущий, наверно, назовут "информационным". Именно эти технологии сейчас правят миром. Начиная от газет и телевидения, учитывая базы данных всех горизонталей и вертикалей, присовокупить к этому списку фонды библиотек и архивов, а также не принижая значимость профсобраний, разговоров по душам в кафешке и подворотных слухов.
Информация сегодня - это дорогой продукт, особенно если он обёрнут в актуальную идею. Так к примеру слух, как сухой хворост для костра, разжигает ажиотаж вокруг какого-нибудь товара. Опечатка или оговорка в СМИ может исказить освещение события в точности наоборот. Искусственно подобранная статистика исказит стратегию и планирование. Киборги действительно поработят мир, если МОИРы (Мастера по Обучению Искусственного Разума) аккумулируют подобную задачу в автоматы.
Страшно. Но если предупреждён, то значит вооружён. А кто как ни радетель качества в состоянии предотвратить проблемы.
Да, я намекаю на нас - тестировщиков. Так нас называют в простонародье. Мы же себя именуем чаще инженерами по качеству. И государство в этом с 2014 года нас в этом поддерживает.
Но странны меры по поддержке отрасли. Они нацелены на молодых специалистов, которые не в состоянии поднять IT-производство на необходимый уровень из-за элементарного отсутствия опыта.
Не секрет, что в IT "войти" желают многие. Но не столько из-за интереса к профессии, сколько из низкого желания получать высокую оплату за кажущиеся на первый взгляд лёгкие работы. А сложностей в IT-профессиях предостаточно. Начиная от умения услышать заказчика и впоследствии убедить его, что он получил ровно то, что заказывал. На ком лежит ответственность за качество высокоточных приборов? Кто из создателей сложных систем спокойно спит, уверенный в работе их продукта без сбоев? Кто из кодировщиков хоть раз не отправлял программу заказчику с присказкой "авось пронесёт и юзер туда не полезет"? Разве что юниоры, не нюхавшие пороху. И на них надеется государство. Эти желторотики сделают прорыв? У меня за спиной несколько десятилетий стажа в IT-отрасли, глубокое знание внутренней "кухни" производства ПО, поэтому однозначно могу заявить, что эта молодая поросль скорее всего пойдёт по пути революций и сначала сотрёт, уничтожит всё до основания, а потом с нуля напишет ширпотреб, который моментально потеряет свою пригодность.
Полагаю, что предложения по господдержке формулировали эти самые юнцы, кто-то из депутатских сынков. Хочется спросить законодателей: почему у них не возникло мысли обратиться к тем, кто действительно знает все ступени создания и поддержки продуктов? Может они не знают, что мы есть? Почему "дедушка" российского качества молчит? Александр Александров, неужто ваша проактивность спит? Или вы не патриот?
Тем, кто действительно сейчас может принести пользу российским информационным технологиям, глубоко за 27 лет. И за счёт высокой оплаты у них нет жилищных проблем. А вот что действительно поможет поднять отрасль на должный уровень, так это ничего не стоит государству. О проблемах работы с госсектором говорено и обсуждено много в рамках конференций аналитиков и тестировщиков. Полный список докладов и капризов заказчиков доступен на сайтах "sqadays.com", "analystdays.ru" и в подборках Влада Орликова на портале "vimeo.com".
Почему российское ПО не пользуется спросом на мировом рынке? Сразу оговорю, альтернативы всем популярным порталам и мобильно-десктопным программам уже имеются. Их не надо создавать с нуля или придумывать нечто новое. Просто на международном рынке так заведено, что покупается ПО только с американским или европейским лицензированием. Запад приучил мир покупать только то, что юридически заверено.
К сожалению, приходится признать, что юридический сектор в России очень слаб. Нет, специалисты подкованы знаниями, но вот убеждать оппонента словом как-то не научились или не могут в силу широты души россейской. Наше добродушие и чистосердечность нас и губит. Бизнес и экономика никогда не будут добрыми, их прерогатива жёсткость, выгода, а порою и блеф до уровня лжи.
Чем действительно государство может помочь IT-сектору, так это прозрачностью и однозначностью законодательства. ПО и рацпредложения нуждаются в юридической поддержке, а не в обилии кодировщиков. Однозначность и единое понимание заказа и готового ПО, отсутствие несанкционированных запросов и изменений в техзадании являются источниками качественного продукта. Для этого нужны юридически подкованные специалисты каждой группе разработки. Дешевле снабдить компании юристами или обучить имеющихся аналитиков и внедренцев специализированным направлениям закона и права, чем раздавать всем айтишникам ипотеки и отсрочки от армии.
По-моему, если молодые специалисты пойдут в армию и там пройдут свои первые шаги в IT-отрасли, то это будет более эффективно для самого юниора и для всего производства в целом. Там его научат действительно работать, исполнять ровно то, что запрашивается, да и окружение уже служащих специалистов является наилучшей средой для передачи опыта.
В помощь информационным технологиям хорошо бы ускорить и упростить процедуру получения патента и лицензии. Но, чтобы они не стали фиктивными, их учёт должен быть прозрачным и доступным.
К сожалению, российский менталитет врядли когда-то допустит неукоснительное соблюдение всех законов и отстаивание прав через судебные инстанции вместо сегодняшнего землячества и родственных связей. Но всё равно, если Россия считается правовым государством, то всех жителей стоит приучать к этому с малолетства. Не знаю как это соединить с широкой душой, но в этом, думаю, помогут специалисты психологии. Может они сумеют без вреда нашему национальному менталитету, социально направленному, наложить на наши характеры неотвратимость соблюдения законов, нами же придуманных.
Нужна ли молодёжь в IT? С каждым годом всё меньше и меньше, потому что кодировщики и программисты скоро будут лишними, их заменят МОИРы. Даже тестировщиков можно будет отменить, если задания составлять так, чтобы все проверки проходили автоматически. А вот без аналитиков, постановщиков задач, внедренцев врядли когда-то сможем обойтись. Они как переводчики между людьми и машинами ещё долго будут нужны, как и яйцеклетки со сперматозоидами для продолжения и совершенствования рода человеческого.
Но вот вопрос: а что подразумевается под IT-отраслью? Только создание ПО или к информационным технологиям реально причисляют и СМИ, и всю электронную технику? Информацию распространяют Средства Массовой Информации: радио, телевидение, интернет каналы соцсетей и аудио-, видео-хостингов. Так значит господдержка должна распространяться и на блогеров, репортёров? А учителя и библиотекари разве не считаются распространителями информации? В их обязанности входит анализ и сортировка передаваемых в массы знаний. АСУТП-ишники, то есть электронщики, разве не считаются IT-ишниками? Абсолютно во всех сферах производства имеются должности так называемых "компьютерщиков", которые не создают, но поддерживают в рабочем состоянии уже внедрённые информационные технологии. Их тоже государство причисляет к тем, кому будет отсрочка от армии, ипотеки и низкие налоги? Не многовато ли категорий работников подпадает под IT-отрасль? Очевидно, что законодателям не хватает профессиональных тестировщиков документации, которые заранее выявят противоречивость, избыток и прочие недостатки требований. Ещё раз повторюсь, что всякому производству нужны профессионалы, а не дилетанты. Чтобы сразу после учебного заведения стать профессионалом нужна практика и передача ученикам актуальных знаний, либо максимально агрегированные базовые навыки.
Мой профессиональный взгляд на сегодняшнюю меру поддержки IT-отрасли однозначен: не эффективна для развития, а наоборот губительна. Покажу на примере. Допустим в какой-то группе разработки ПО возник форс-мажор - перед самым выпуском исчез (умер, уволился или ушёл в отпуск) работник, на котором держались основные задачи. Что в этом случае предпримет кадровик? Из любого безвыходного положения всегда есть три выхода, но тестировщик знает о трёх. Как QA предложу:
1) перепоручить работы имеющемуся персоналу, параллельно повышая его уровень курсами, то есть использовать внутренние резервы за счёт имеющихся, что является самым дешёвым вариантом (можно даже сэкономить на зарплатном фонде, добавив этому работнику лишь половину ставки ушедшего), но немного потратиться на дообучение, которое впоследствии принесёт ещё большую пользу. Никаких трат (денег и времени) в этом случае на введение стороннего члена команды не потребуется, стадия онбординга не замедлит разработку продукта и зарплатный фонд можно снизить, как и себестоимость продукта.
2) найти стороннего работника с аналогичным уровнем - задача для отдела кадров не только длительная, но и порой невыполнимая. Расходы на поиск и внедрение нового работника увеличат не только время разработки, но и себестоимость продукта. И ещё без какой-либо гарантии, что сотрудник подойдёт команде по уровню знаний, навыков и психологически.
3) взять на бирже труда пучок новичков, среди которых разделить все обязанности ушедшего. Новичков однозадачников набрать быстро, но каждому из них придётся выдавать полноценную зарплату, наше социальное государство не потерпит рабовладельчества. И не только поэтому считаю вариант наихудшим. Команда разработки страдает при добавлении одного новичка, а тут целая куча. Как бы это ни было странно, но любое дело замедляется по принципу геометрической прогрессии при добавлении рабочих рук и голов. Поговорка о двух головах, улучшающих одну, работает в противовес, потому что у каждого своя правда и каждая из рук, как лебедь, рак и щука тянут одеяло на себя, а не ровно в одну сторону к всеобщей цели. Если обязанности одного работника разделить на нескольких, то нет никакой гарантии, что один из этих новеньких в ответственный момент не станет тем же камнем преткновения, исчезнув из настроенного конвейера, и застопорит разработку.
Из этого примера вывод таков, что уже сейчас могу ответственно заявить, что выбранные меры поддержки IT-отрасли не помогут, а наоборот, скорее утопят её. Действенными же мерами были бы:
1) малограмотные дилетанты, не прошедшие опыт жизни в тесном коллективе, то есть отстранённые от службы в армии, никак не могут принести пользу. Это очевидно любому. Поэтому нужно повышать уровень знаний и приближать опыт на практических занятиях учебных заведений к актуальным реалиям. Для этого нужен прорыв в разрешённости и рекомендуемости учебных курсов и организаций. Для всех должностей в группе разработки в последние годы сформировалась предостаточная теоретическая база, это подтвердит наличие множества конференций и личных курсов, перешедших в высшие учебные заведения. Государству осталось помочь этим учебным заведениям формировать готовых специалистов, то есть обязать существующие производства стажировать студентов. А если задуматься о будущем, то нужно помочь составителям годичных планов этих курсов с актуализацией, то есть каждый год, а то и чаще, план обучения должен меняться. Технологии уходят вперёд, а абитуриентам приходится выбирать из курсов вчерашнего дня.
2) вместо налоговых и ипотечных льгот для весьма размытых по названию должностей повсеместная юридическая грамотность приведёт общество к привычке соблюдать законы. Если в обществе установлены и работают конкретные правила, то им просто управлять. Команды, строго придерживающиеся своих принятых правил, быстро достигают "бирюзового" уровня.
3) как одна из сторон юридической грамотности и для развития патриотизма уже имеющимся на рынке и только разрабатываемым продуктам нужна стабильная система лицензирования. Она поможет повысить доверие покупателей к продуктам и производителям, она защитит производителей от произвола пользователей.
Импортозамещение IT-отрасли в России, полагаю, должно пройти очень быстро, потому что наши создатели ПО по большей части составляли команды разработки всех популярных программ. При том, не только кодили (напомню: нашим программистам нет конкурентов на всех олимпиадах), но и знают изнутри эти системы, их связки и потенциальные уязвимости. Такая информация в головах теперь только наших специалистов недорого обойдётся государству, а прибыль может приносить обильную, когда начнёт конкурировать на мировом рынке.
И за это скажем спасибо санкциям. :) Русский мужик не перекрестится, пока гром не грянет. Но уж если возьмётся за дело, то супротив него некому выйти.

вторник, 5 октября 2021 г.

QA, QC или иначе

На примере отношений тестировщика с программистом хотелось бы уточнить разницу между должностями QA и QC. Соглашусь, что многие тестировщики в своих блогах касаются этой темы. Да и у меня уже была слабая попытка (читай - "Тестировщик или QA"). Ни в коей мере не хочу дублировать их или утверждать, что моё мнение по этому вопросу единственно верное и окончательное. Просто каждый из нас, тестировщиков, стремится разъяснить понятия и принципы работы ПО так, как это более доступно обеим сторонам производства ПО от точки проверки качества: вправо - программисту, влево - пользователю. Да, это профессиональная привычка - делать всё понятным и доступным. ;)
Капитан Врунгель, отправляясь в плавание, напевал: "Как вы лодку назовёте, так она и поплывёт.", а будущие специалисты, желающие внедриться в сферу информационных технологий, частенько встают в тупик при выборе вакансий. Какую должность искать? Что вбивать в строку поиска, кроме принадлежности к IT-сфере?
На мой взгляд войти в IT можно легко, если начинать с мелкого. Раньше, годах в 1980-90х, существовала специальность "оператор ПК", но когда компьютерной грамотностью овладело всё работоспособное население, то в этой должности отпала необходимость также, как и в машинистках. Нажимать на клавиши сегодня может любой, понимающий принцип хранения информации. А с приходом искусственного разума стало возможным преобразовывать звук в печатный текст, то есть даже по клавиатуре клацать уже не требуется. Этот факт, конечно, ускоряет процессы производства, но и лишает человека занятия мелкой моторикой, что в значительной мере напрямую влияет на мозговую деятельность, то есть замораживает мыслительные процессы через атрофирование нервных окончаний. Но, сегодня я не об этом.
Инженеры по тестированию программного обеспечения (должность в реестре России зарегистрирована с мая 2014 года), а в простонародье - тестировщики, бывают разные: ручники и автоматизаторы, безопасники и нагрузочники, исследователи и производственники, да ещё всякие разные. Поначалу, всех называли просто "тестировщиками", но не "тестерами", потому что второе имя означает прибор, например, - амперметр или индикаторная отвёртка, а не такое, более сложное существо, как - человек. Тестер-прибор показывает довольно быстро информацию о том, работает ли проверяемая конструкция правильно, то есть в ожидаемом режиме, к тому же в большинстве случаев даёт количественные показатели. Например, спиртометр указывает процент сахара и алкоголя в сусле при брожении будущих напитков, а вольтметр - наличие заряда в батарейке.
Исходя из истории возникновения профессии тестировщика (плата не отработала задумываемым образом из-за погибшего на ней мотылька) могу убедительно утверждать, что первейший принцип тестирования ПО - исследование причин, по которым ПО не работает ожидаемым путём. А это совершенно иное, нежели простое измерение величины или детекция наличия/отсутствия контакта, давления, электричества прибором, именуемым - тестер. Да, нашу работу тестировщиков постоянно хотят измерить количеством багов, затраченным временем или финансовыми сбережениями, но эти показатели совершенно иная сфера, нежели простые величины стрелок и шкал приборов-тестеров.
Ещё не так давно появилось разделение тестировщиков на QA и QC. Расшифруем, переведём и попытаемся найти меж ними отличия. Quality Assurance - обеспечение качества. Quality Check - проверка качества. Как видно из наименований, должности различны по своему предназначению. Тестировщики, только проверяющие качество (QC), наиболее схожи с сотрудниками отделов технического контроля (ОТК), которым на входе подают изделия и список требуемых соответствий определённому уровню качества. После того, как в ОТК заполнены чек-листы, проставлены в них положительные галочки, вычеркнуты отрицательные (негативные) несоответствия, заполнены параметры проверки (что проверялось, кто и когда проводил проверку, конкретизация продукта и вспомогательного оборудования), сотрудник ОТК передаёт такие ведомости в производство или сбыт для подтверждения качества, либо направляет претензии к поставщикам и промежуточным производителям в случае выявления несоответствий требуемому качеству. Если же тестировщик, кроме вышеперечисленного для QC (проверка по готовому чек-листу, подтверждение уровня качества, составление претензий о несоответствии уровню качества) сам определяет направления проверок, формулирует параметры качества, исследует весь цикл производства и внедряет дополнительные шаги, либо исключает лишние, для предотвращения проблем как в конечном продукте, так и в процессе производства, способствует внедрению наиболее совершенных практик для достижения качества продукта, то такого специалиста я со всей ответственностью могу назвать QA. Но вот уже чуть больше года в реестре вакансий мелькают такие названия, как DevOps и TestOps. Они расширяют полномочия QA до уровня всей команды разработки. Если путь от QC до QA считать вертикальным продвижением по карьерной лестнице, то от QA до TestOps (сокращение от "Testing + Operations", что в переводе - "тестирование + системное администрирование") - горизонтальным обогащением профессионализма на всех уровнях производства.
Наименования графикой
Визуально для меня QC представляется палочкой или латинской буквой "I". Её ассоциирую со словом "Inside", потому что QC зациклен лишь в тестировании, смотрит только в одном направлении. Он не точка, потому что в любом случае набирается и опытом, и знаниями. QA же специалист в моих глазах представляется буквой "T", где в вертикальной палочке накопились умения в области тестирования, а ответвления вправо и влево означают развитие в смежных областях: программирование, аналитика, внедрение ПО и поддержка юзера. Буквой "Т" начинается слово "Transform", то есть QA в состоянии менять себя и окружающие процессы. А TestOps видится мне буквой "E", с которой начинается слово "Extend". TestOps расширяет себя и всю группу разработки на всех ступенях, по краям и в центре, стремясь в одну сторону - к качеству.
Напомню, что такое "качество" с точки зрения пользователя, к которому в производственной цепочке ближе всех тестировщик. Понятие "Качество" определяется тремя составляющими: точность исполнения требуемого, получение желаемого в означенное время, денежные затраты. На все эти три направления и направлена работа тестировщика: зелёные чек-листы гарантируют полное соответствие требуемому, ускорение процессов разработки сокращают период от запроса юзера до поставки готового продукта, совершенствование процессов и пресекание проблем на корню снижает себестоимость конечного продукта.
Связь QA - QC - Dev
Отношения QA - QC - Dev
При движении продукта между программистом и тестировщиком его ореол состоит из вопросов программиста к тестировщику про состояние продукта. QA определяет круг вопросов и проблем, которые необходимо сверить с эталоном. QC исполняет намеченные проверки и выдаёт программисту весь перечень выявленных новых проблем и заключение о соответствии продукта техническим требованиям.
Для того, чтобы стать QC, достаточно знаний школьной программы. Для продвижения по служебной лестнице к QA необходимо расширять свои знания и умения не только в науке тестирования, но и глубоко постигать предметную область (например, экономику для создателей интернет-магазинов, географию для развития онлайн-туризма), а также новые способы сбора, обработки и хранения информации (программирование, аналитика и управление данными), чтобы в любой момент вы смогли стать TestOps, то есть на любом этапе разработки ПО быть в состоянии подменить аналитика, программиста, внедренца. Если QA отличается от QC лишь наличием более широких знаний, то TestOps лучше QA из-за его возможностей не только подсказать в нужный момент, но и самостоятельно внести в нужное время коррективы для производства более качественного продукта.
Все эти растолковывания приурочены к Дню Учителя. Именно с его деятельностью тесно связана наша - тестирование, когда нам приходится самим разбираться во всём том новом, что создали программисты, и затем подробно доносить полученные знания всем заинтересованным лицам (пользователю, руководителю проекта, кодеру и другим участникам разработки).
Надеюсь, после прочтения этой статьи у моих бывших сотрудников ёкнет сознание, если они припомнят, какими эпитетами обзывали группу тестирования вместо содействия и помощи. Возможно, хоть эти пояснения достучаться до их разума, и они поймут смысл моих просьб об уважении к нашему нелёгкому и столь полезному труду.

вторник, 14 сентября 2021 г.

С Днём профи-проггера!

Осенью 1986 года было моё первое погружение в IT через членство в клубе компьютерщиков при транспортном ВУЗ-е, а уже в феврале 1987 года результат моих  работ был представлен на внутривузовской конференции. На освоение компьютера и изучение языка ФОКАЛ мне понадобилось около двух месяцев. Да, чтобы начать программистскую деятельность нужны минимальные знания, а чтобы стать тестировщиком понадобится не только развитое логическое мышление, но и много разных навыков по всем стадиям разработки продукта. Официально в моей трудовой книжке запись о должности программиста появилась после двух классов школы и пяти лет института, а в тестировщики переход был только спустя девять лет программирования. В поэтическом плане роль тестировщика меня сподвигла на литературный выхлоп уже на третий месяц в деле, а вот программирование зрело долгие двенадцать лет. Ниже читайте о том, как мне работалось программистом в конце XX века.

Машина тоже чувствовать умеет.
Она с тобой болеет и сопереживает.
Не ладится судьба, - и у неё чой-то замыкает.
А если у тебя идёт всё гладко, тогда и ей не требуется отладка.
Моргнёт глазком зелёным, ритмично засверкает красным,
Засветится экран. И ты в строке, немногим ясной, но всё ж тебе во всём понятной,
Увидишь тот набор значков и закорючек, в которых смысл скрыт того, что он не глючит.
Но тут всё замолкает.
Клавиатура пискнет, принтер щёлкнет, и по модему огонёчки пробегают.
Для связи auto оставляю. И приложения постепенно запускаю:
Одно, второе. Это и вот это. У гороскопа* собственного спрошу совета.
Отмечу в хит-параде** все места, от "Ум за разум" - слово. И в дела!
На день рождения - акростих. Для друга - копию, чтоб от тоски не сник.
Так. На заказ на Delphi код в сто строк пишу лишь мышкой. И успею в срок.
Вот тут подправлю. Здесь чуть-чуть пошире, а остальное отрезаю. Пусть гниёт в корзине.
Пожалуй, всё готово. На проверку. 
Пример: один, второй, … , десятый. Для юзера дубового на этом хватит.
А для продвинутого? Стоит поубавить. Сюда не лезть, а здесь закрыть. Тут F1 - подсказка.
И кнопки ограничить. Не дам ему такую технику калечить.
Жать только эту лучшую - эскейп. Давно проверено - в ней горя нет. Ведь главное, что не Reset.
Экран мигает всеми красками, чтой-то заигралась я этими подсказками.
Пускай инструкцию читают. А у меня - обед. И компьютЭр об этом знает.
Тест для контроля сам запустит, для файла нового он копию создаст.
И напряжения скачков он не допустит. Комфорт делам и отдыху придаст.
А после перерыва - новый раунд. Я отключаю громогласный саунд.
Дела кипят, процессор пашет. И жёсткий диск головками трещит.
Он в память информацию вбирает, излишки и огрехи отсекает.
В принтер картридж новый вставляю, лощённой бумагой его заправляю.
Теперь он одет и наелся вдоволь. Со мною он не будет суровым.
Каждый пиксель пропечатает, надеюсь, листочек не съест.
Мои мысли в графике изображает, к заданиям сложным даёт совет.
Дела закончились, пора и расставаться.
С пожеланием добра он привык со мной прощаться.
Закрыты все программы. Осталось только выключить.
Спи сладко. Больше я тебя не буду мучить.
(октябрь 1998 года)

----------
*гороскоп - программа написана была дилетантски, для практического изучения языка программирования.
**хит-парад - компьютерная программа для музыкального радио "РИФМА" была разработана, написана и внедрена в рамках семилетнего статуса радио-критика на общественных началах.

четверг, 9 сентября 2021 г.

Профессионалы в процессе

В 2000-2003 годах офшорная компания RSC создавала и поддерживала программный комплекс "Практик-А", написанный на Oracle Forms (упоминаются актуальные горячие клавиши). Основатели компании в 2002 году отмечали юбилей и предложили всем сотрудникам творческий конкурс. На тот момент в мои обязанности входили тестирование и тех.поддержка (СТП - служба технической поддержки), но тестировщики всюду суют свой нос, поэтому рассказ получился более чем полный. Никакого приза моя работа не выиграла. К сегодняшнему Дню Тестировщика публикую свой опус. Может кого-то из вас он сподвигнет на что-то большее.

Как RSC создаёт "Практик-А".

Этап первичный. Все на старте. У аналитика разгон:
Собрать все нужные нюансы готов, бумажки собирает он.
То с шефом часик поболтает, то с рядовыми день иль два.
За все мучения награда ему - подробностей стопа.
И маркетолог потихоньку в контракте правит пункт "Права":
Для конкурентов нет лазейки, им предстоит всё сызнова.
А тестировщик пишет планы: с кого начать и что потом,
Чем протестировать экраны, чтоб не осталось за бортом
Предупрежденье: интерфейсы - не для слепых и старых дам,
И каждому объекту - место, чтобы не рыться по хелпам.
Этап второй - разгар событий. У каждого заданий тьма.
Тут время маленьких открытий. Без плана - хаос и кутерьма.
С завода аналитик едет в родные стены напрямки,
Где и в жару и в холод лютый рисует, как Малевич, уголки.
Для главного определяет он место в центре, а затем
Для "дочек" сущности вставляет, связуя их в контексте тем.
Пока что он один лишь знает, как будет выглядеть Проект,
Какие будут отношенья, с чем, сколько, видно или нет.
Он программёру составляет набросок действий, чтобы тот
Без промедленья и задержки составил правильнейший код.
Проектировщики в короткий срок набьют пакетов кучи строк.
Ошибки ввода ограничит "primary" или "unique" ключик.
Ну, а для верности значений есть "trigger", "view" и "value check".
Они - такие, они - шальные. И целый день глядят в экраны, как хмельные,
По клаве дробь стучат и мышку тискают, чтоб новый образ формы получить.
"Create"-ом и "insert" таблицу сляпают, а если что не так, то тут же "alter"-нут.
На ввод - "commit"-ы есть, не хочешь - "rollback". Готов проект, на тест несут.
Здесь тестировщицы - вреднюги. Заметят каждый баг и ляп.
Где хелп? И что за сокращенья? Симметрий нет! А выйти как?!
Бедняжка форма стонет, плачет под натиском таких задач,
Считая ввод запоминает и направляет на печать.
Сто раз поправят программёры, сто двадцать тестер скажет: "Нет".
Чтобы Проект стал идеален, не жалко им ни сил, ни лет.
Когда порядок полный на этапе, на все ошибки исправленья есть,
Тут техподдержка и рекламодатель в свою узду впрягают всех.
Новинки или дополненья описаны уже давно.
Вот начался этап внедренья. Для праздника время пришло.
И на заводе оживленье: команда к ним летит от нас.
Научат, сервер установят и юзерам покажут класс.
Горячих клавиш стройный ряд любой проблеме будет рад.
Что делать - "F1" нажмите, не ладится, тогда с "Shift"-ом.
А коль забыли "кто есть в кнопках", то - "Ctrl" с "F1". Всё в нём.
Чтоб сосчитать объёмы строк - с "Shift"-ом "F2". Ну, и потом
"F3" дублирует объект, а с "F4" проблем нет:
Всю предыдущую строку в пустую вставит, как свою.
Неверно? Есть "Shift+F4": очистит строчку, как и было.
Гулять в режимах и по окнам "F5" поможет, а с "Shift"-ом,
Мой друг, уж будь ты осторожен: всё пусто будет в блоке том.
Достопочтенная "F6". Нужна строка? Вот она есть!
Всё лишнее с "Shift"-ом "F6" как зверь голодный может съесть.
На пару кнопок честь возложена запросом базу фильтровать:
"F7", и вводишь всё искомое, "F8" не забудь нажать!
Когда же в форме всё не так - с "Shift"-ом "F7" - она пуста.
"Shift+F8". Сбросьте страх: через принтер - на листах.
Значенье подобрать из списка "F9" Вам поможет быстро,
Лишь с "Ctrl"-ом её нажмёте, иерархией пункт подберёте.
Пора запомнить измененья: "F10" - и итог мученьям.
"Tab" переходит по полям, "Shift+Tab" по ним же, но назад.
Вас "Ctrl+Tab" вперёд ведёт, а всё с "Shift"-ом в окно вернёт.
Не только "Esc"-ом отменяешь, есть "Ctrl+U" им очищаешь.
По окнам "Page Up Down" ходят, когда их с "Ctrl" наберёшь.
А стрелки по строкам поводят, при спешке их с "Shift"-ом нажмёшь.
Есть "Ctrl+E" для тех, кто хочет значенье в поле поменять.
И "Ctrl+Q" в Проекте пашет, чтобы закрыть иль отменять.
А пользователь не лыком шит, чуть что не так, и в СТП звонит.
Скрипты, скрипты… Им нет предела. Исправить то, добавить сё.
На СТП опять облава, успеть им надо пропатчить всё.
Домой вновь едет аналитик с заданьями, чтобы Проект
Шире и дальше развивался, добротно работал много лет.
Всё смогут наши программисты, когда у них есть за спиной
Hi-аналитики - специалисты. А SQL для них - родной.
Команда к трудностям готова, исполнит каждый Ваш каприз.
Для современных технологий есть "Практик-А". На цену не скупись.

P.S.
Коль слишком гладко, не кривитесь, ведь строчки сами легли в ряд.
Кому не любо, не гневитесь, e-mail мой примет всякий баг.
Свои рецензии оставьте. За труд прочтения себя поздравьте.
(июль 2002 года)

четверг, 8 июля 2021 г.

Безоглядное родительство

Давно подмечено, что мать истинно и глубоко любит лишь первого сына. Но когда это чувство заслоняет взгляд женщины на всех окружающих, то сначала страдают от этого близкие, а впоследствии сам объект обожания. 

Погода благоприятствует прогулкам, и на днях пред моими глазами на бульваре произошёл конфликт поколений. На скамейке отдыхала старушка и ела мороженое. Мимо шли мать с полугодовалой дочкой на руках и отец, одной рукой толкавший коляску, а другой держа за ручку двухгодовалого сынишку. Бульвар - место общественное и там постоянно проводят много свободного времени горожане. Конечно же, муниципальная собственность оборудована необходимыми социально полезными объектами: лавочки, спортивные снаряды и детские качели, санитарный уголок и продуктовые палатки с напитками и закусками. Семейство нагулялось и двигалось к парковке. Поравнявшись с вкушающей сладость старушкой, внимательная мамаша остановила своих родичей и стала допытывать сыночка: "Хочешь пи-пи? Давай, давай сейчас, а то до дома не дотерпишь." Уговорив дитя опорожниться, она обменялась с отцом детьми и сделала пару шагов до ближайшего деревца на газоне, снимая с малыша штанишки. 

Мамаша нарушила правила посещения общественного места, не воспользовалась санитарным местом и позволила любимому сыночку подпортить окружающую среду. Поскольку всё это происходило прямо напротив поедающей мороженое старушки, то её желудок отреагировал соответствующим образом и перестал благополучно принимать сладость. За поведение, не соответствующее общепринятым нормам, взрослая женщина осмелилась сделать замечание молодому семейству: "Молодые люди, вы плохо воспитываете своих детей. Опорожняетесь на газоне вместо специально отведённого места. Этим вы нарушаете экологию, да к тому же испортили мне аппетит и настроение." 

Думаете, родители извинились перед ней? Нет! Они нагло посмеялись над отрыжкой старушки: "Детская моча деревьям не помеха." Понятное дело, что любящая мамаша готова зад целовать своему сыну, но такое безоглядное чувство демонстрирует её ограниченность. Мало того, что подобное поведение наглого семейства оскорбляет окружающих, но дети, наблюдающие поведение своих родителей, станут копировать его и впоследствии, то есть лет через двадцать ситуация вполне может повториться. А на месте отдыхающей старушки может оказаться та самая мамаша или не остановивший её отец семейства. С медицинской же точки зрения мать подвергла сына опасности подцепить клеща с ветки дерева, не приучая его пользоваться санитарным местом для справления нужды. Полагаю, что отец в этой ситуации оказался более благовоспитанным, поскольку он не потащил сына до неподалёку стоявшего их автомобиля, чтобы помочить колесо, как это принято у настоящих мужиков. Но с другой стороны, он проявил слабость и показал себя подкаблучником, не отведя сам сына в кабинку биотуалета. Но это не удивительно, поскольку скорее всего его воспитывала такая же безумно любящая мамаша. 

Безоглядная родительская любовь и неотъемлемое желание исполнить всё, что пожелает дитятко, формирует поколение паразитов. Приживалы привыкают, что им всё предоставляется по первому требованию, безвозмездно. Они не приучены к тому, что цель и мечту надо достигать собственными усилиями и трудом, постигая науки и шлифуя навыки. Те, за кого родители решают все проблемы дома, не в состоянии противостоять маломальским преградам в иной социальной группе. Учитель в школе или руководитель кружка, потакающий прихотям учеников, оказывает им "медвежью услугу". Ребёнок ленится и выполняет только то, что ему легко даётся, а всё новое и сложное старается переложить на плечи взрослых, так и не осваивая лучшее, продвинутое. В детях тем самым вырабатывается устойчивая привычка жить за счёт других. 

Для группы разработчиков их ПО тоже становится столь же близким детищем спустя некоторое время. Они его поддерживают, совершенствуют. Но у некоторых эта забота приобретает эгоистический характер. Кто-то из производителей счастлив тем, что конечный пользователь получает качественный по всем параметрам продукт, а эти генерят код только лишь для самого факта наличия сложного кода. По сути он никому не нужен, но он есть, создан, функционирует зазря, даже при всей его сложности и вычурности. Немного об этом уже было сказано в статье "Программа или дитя" (https://tjupka.blogspot.com/2020/11/blog-post.html). Здесь же хочу затронуть ту губительную сторону дела, когда ПО пожирает команду.

У каждого старшего члена семьи существует свой взгляд на воспитание младшего поколения. Кто-то продолжает династию, иные вкладывают силы и средства в будущего гения, пытаясь воплотить в чаде свои несбывшиеся мечты. Также и в группе разработки, при отсутствии единой цели каждый тянет одеяло на себя. Инвестор спонсирует только то, что даст быструю и максимальную прибыль, словно случайный папаша, получивший девять месяцев назад пятиминутное удовольствие. Аналитик продвигает те идеи, которые на его взгляд станут единым универсальным решением на все случаи, как дедушка, воплощающий в жизнь идейные заветы. Да и нам, тестировщикам, важны лишь те задачи, что запросил конечный пользователь, аналогично безумным мамашам, что готовы в лепёшку расшибиться ради капризного дитяти. 

А когда семья распадается из-за разногласий или уходит кто-то один взрослый, то ребёнок и ПО становится однобоким. Очевидно, что команда, теряющая одного из членов, в перспективе даёт пинок продукту под горку и косит все усилия под ноль. Если же и вы привязываетесь к общему детищу, то весьма сложно при несчастном стечении обстоятельств оставлять его. В этом заключается внутренний конфликт производителя. С одной стороны, необходимо прилагать все усилия для улучшения ПО, но с другой - нельзя прикипать к нему душой, потому что в любой момент всё может закончится вне зависимости от вас. Родителям всегда стоит помнить, что когда-то их ребёнок должен будет от них уйти, чтобы создать свою семью. Так и производителям продукта нужно иметь ввиду грядущее расставание с шедевром, в который вложена душа. Не смотря ни на какие противоречия не могу советовать вам быть равнодушными к продукту. Такова уж участь предков - вырастить и воспитать, а потом отдать. В моменте дарения другим счастье прибывает вам.  

Ещё один подвох кроется в типе команды разработки. Многие шефы сейчас бравируют так называемыми "тёплыми, семейными" отношениями. Но никогда не раскрывают истинного стиля. И недаром лекторы Стратоплана настойчиво предупреждают избегать таких коллективов. Да, вас там будут "иметь и в хвост, и в гриву за просто так", без всякой благодарности и учтивости взвалят на вас всё самое муторное, как будто так и надо. Нет! На работе спать нельзя. В прямом и переносном смысле. Как только вы начнёте замечать благосклонность босса, то сразу постарайтесь выяснить напрямую причины и ожидаемые последствия таких перемен. Иначе вы внезапно окажетесь тем самым мальчиком для битья, виновным во всех проблемах. 

Для владельца продукта единственным любимым ребёнком, как для матери старший сын, является продукт, а любой работник-любимчик весьма вероятно со временем окажется в опале. Вы можете не заметить, как вся ваша работа станет отправляться в мусорную корзину, а взамен этого станут появляться дубликаты от имени шефа. Да, начальники - поколение барствующих и более иных подвержены зависти, все новинки должны по их мнению исходить только свыше, а подчинённый для них лишь муравьишка, постоянно обязанный тащить огромный груз для блага босса. Ну а разве это родительская забота, когда ваши семилетние круглосуточные усердия одномоментно выбрасываются без предупреждений и внятных объяснений? Это жестоко, и прощать такое невозможно. Подобные поступки порождают у здравомыслящих жёсткие взаимоотношения с более конструктивным взглядом на них.  Современные психологи в таком случае советуют отпустить ситуацию, то есть забыть. А это значит, что вы позволяете поступать аналогично и в следующий раз. Босс также и с другим сотрудником обойдётся: попользует до поры до времени, а как только заметит превосходство над своими знаниями и умениями, так и от него избавится. Такой негатив руководства ясно даёт понять, что вас стали отвергать и вытеснять из коллектива, особенно если звучат отговорки "я - начальник, я так хочу" или "вопрос закрыт", при этом никакого внятного пояснения нет. И как бы вы не защищали мнение конечного пользователя, победителем окажется тот, кто платит. Так что, забывать самодурство никогда не стоит. Его необходимо пресекать, чтобы команда не разрушилась. Есть поговорка "рыба гниёт с головы". Если родители не любили своего ребёнка, то и он не сможет подарить её кому-то. Если все члены группы разработки имеют единую цель - качественный продукт, то есть как лучшие родители любят одинаково своё дитя, то их труды не пропадут зря: полезное ПО нужно всякому юзеру, человек с достаточным объёмом семейной любви востребован в любом сообществе. 

Лелейте свой продукт, но не прикипайте к нему. Вкладывайте в него своё усердие, но помните о грядущей разлуке, чтобы не пришлось лить слёзы, как провожающей свою дочь замуж матери. Пусть ваше ПО растёт в заботе, но не чрезмерной опеке. В крайнем случае, всегда же есть техническая поддержка.