Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

​Контрактники...

1798  1 2 3 4 5 6 7 все
Murr патриот12.02.20 11:39
Murr
NEW 12.02.20 11:39 
в ответ Murr 12.02.20 11:37

Но то, На что Я ругаюсь выглядит следующим образом:

- что-то было переработано...

- какие-то тесты написаны...

И теперь контрактниками все похерено... безум

#61 
Программист коренной житель12.02.20 13:01
NEW 12.02.20 13:01 
в ответ Murr 12.02.20 11:37
Мне, вообще-то, платят не за то, что циферька есть, а за то, что она есть и что она правильная...

:) Ну вот, типичная проблема Murr'а :)

Только что ты говорил, что в поле просто что-то должно быть. Теперь тебе нужно, чтобы в поле было что-то правильное, но при этом никто не знает как это правильное получается. Ну ОК, значит любое число - правильное. Ни Патрик, ни кто-либо еще не может определить правильное это число или нет, значит правильное - любое число :)


Причем правильная ожидается даже в том случае если в оригинальном варианте она не правильная.

:) Ась? У тебя там еще какой-то "оригинальный вариант" появился? :) При таких скиллах формулирования задачи не приходится удивляться двум гигабайтайтам спагетти-кода :D


Вот сейчас в Р20 выяснилось, что данные по некоторым клиентам отсутствуют.
Ну да - нету ничего в клеточках...
Что именно чинить надо?
Напомню - два поля, кнопа и файл...

Очевидно, что кроме "двух полей, кнопки и файла" есть еще как минимум "данные по каким-то там клиентам" :)


Внутри - спагетти... которое должно работать с другой СУБД и базой другой структуры....

Ну очевидно, что проблема либо в спагетти, либо в данных.


Когда - сделал - всем точно наплевать КАК.
Ты мне расскажи что тестить и как фиксить когда он НЕ сделал...

Уже 100500 раз сказал.

Циферка есть? -->> сделал

Циферки нет? -->> не сделал, надо искать почему.

Циферка есть, но не та:

Какая циферка должна быть?

- не знаю, но эта циферка не правильная. -->> эта циферка правильнная. сделал.

- такая-то циферка, получается так-то -->> не сделал, надо искать почему.


Все остальное - твои фантазии.


Всегда упускаешь один фактор... ничего не важно - ни что есть в думпнутом ехецеле, ни как считалось... до тех пор пока станки не простаивают.
А для того чтобы они крутились - должна быть нужная Патрику цифирька...

Ну вот видишь. Значит чем больше будут простаивать станки, тем быстрее у тебя будет ответ "как получить нужную Патрику циферку" :) Все просто.

#62 
Murr патриот12.02.20 13:51
Murr
NEW 12.02.20 13:51 
в ответ Программист 12.02.20 13:01

Ну очевидно, что проблема либо в спагетти, либо в данных.

-----

Ну либо в системе и еще вспышки на солнце мешают.

Какую именно часть гамна месить для фиксинга? Гамна - много...


есть еще как минимум "данные по каким-то там клиентам"

-----

Нету.

Есть два поля, кнопа и файл. Все.

"Появление" всего остального - результат копания спагетти-кода...

Но это - долго...



-->> эта циферка правильнная.

-----

Правильная, однако, та циферька, при которой произведена заказанная продукция,

Других правильных цифирек не существует.

Что именно ты натестишь - без разницы, если на выхлопе "не то"...



Теперь тебе нужно, чтобы в поле было что-то правильное, но при этом никто не знает как это правильное получается.

-----

Не мне - заводикам, чтоб производилось что заказано... именно об этом ты все время забываешь...

В остальном - да, не знают. Умеют делать то чему обучены. Обычно - bез понимания сути выполняемой работы.

#63 
Программист коренной житель12.02.20 14:17
NEW 12.02.20 14:17 
в ответ Murr 12.02.20 13:51
Какую именно часть гамна месить для фиксинга? Гамна - много...

Ты понимаешь, что для того, чтобы пофиксить багу нужно для начала ее повторить. Если ты не можешь повторить багу, то ты не можешь гарантировать, что ты эту багу пофиксил.

Этот постулат понятен?


Нету.

Ну как всегда :)

Ты сам писал:

Вот сейчас в Р20 выяснилось, что данные по некоторым клиентам отсутствуют.


Есть два поля, кнопа и файл.
Все."Появление" всего остального - результат копания спагетти-кода...
Но это - долго...

Замени этот спагети код на генератор случайных чисел. Все равно всем наплевать, что там за числа и никто не знает как они появились. Заодно и код сократится с 2Гб до пары строк.


Не мне - заводикам, чтоб производилось что заказано... именно об этом ты все время забываешь...

Мммм... т.е. там еще что-то заказано... наверное еще и данные заказа где-то есть... хотя нет... какие данные?

Там только "два поля, кнопа" и файл на выходе! Генератора случайных чисел тебе за глаза хватит!

#64 
AlexNek патриот12.02.20 16:18
AlexNek
NEW 12.02.20 16:18 
в ответ Программист 12.02.20 09:06
Предположим есть 2 детали - А и Б

вообще то - это как бы абстрактное рассуждение, чтобы было проще в описании.

А так, идея в следующем - Пока новые хотелки укладываются в выбранный алгоритм/принцип работы, то все хорошо.

Но часто бывает так, что новые хотелки идут полностью вразрез с тем, что уже сделано.


Никто не будет переписывать систему до тех пор, пока сопровождение обходится дешевле, чем написание новой.

Во.... что значит будет с нашим старым спагетти кодом? Будем добавлять новое спагетти смущ

#65 
Программист коренной житель12.02.20 16:25
NEW 12.02.20 16:25 
в ответ AlexNek 12.02.20 16:18
Но часто бывает так, что новые хотелки идут полностью вразрез с тем, что уже сделано

И что? Ну бывает.


Во.... что значит будет с нашим старым спагетти кодом? Будем добавлять новое спагетти

Ну или будем постепенно менять спагети на нормальный код ;) Сей процесс входит в рефакторинг.

#66 
AlexNek патриот12.02.20 16:39
AlexNek
NEW 12.02.20 16:39 
в ответ Программист 12.02.20 09:10
Это больше похоже на крупный тест всей системы.

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


Для тестирования логики все это не нужно.

Ну покажите мне, что нужно тестировать в этой аналоговой системе? Где найти там логику?


Ну вот другой примерчик. Есть у меня цифровой выход:0 -шатун в положении А, 1-шатун в положении Б, есть два концевика на цифровые входы. Будет ли достаточно теста когда 0 на выходе то 1 на входе А, когда 1, то единичка на входе Б?

Вроде бы логика.

#67 
AlexNek патриот12.02.20 16:46
AlexNek
NEW 12.02.20 16:46 
в ответ Программист 12.02.20 16:25
Ну или будем постепенно менять спагети на нормальный код

Замечательно, давайте начнём.

Для начала хочется чтобы намеспейсы соответствовали именам подкаталогов и чтобы не было немецких названий классов.

Согласны?


#68 
Murr патриот12.02.20 17:31
Murr
NEW 12.02.20 17:31 
в ответ Программист 12.02.20 14:17

Этот постулат понятен?

-----

Разумеется.

Так же как и черный ящик из двух полей, кнопы и файла...

И, кстати, в данной системе все так и останется - Я не буду знать правильно ли Я починил код...

Но починить надо правильно...


Ты сам писал:

-----

Да, доковырялся.


Замени...

-----

...и запусти в производство.

Хорошо что тебе не надо отвечать рубликом за брак...



данные заказа где-то есть...

-----

... в базе, структуру которой Я не знаю...


Вот сегодня доковырялся...

Есть поле, куда пишется ИД клиента. Нормальное, целочисленное. Подставляется везде где надо.

А иногда оператору лениво делать поиск клиента и он оставляет поле незаполненным.

А вмеесто заполнения поля пишет какую-нибудь фигню в поле ПсевдоИДКлиента.

Потом заполняет другое поле куда вписывает Имя Клиента ассоциируемое с клиентом...

В Р20 как раз имена клиентов потребовались.

В процесс выяснилось... отсутствие имен у клиентов, которые полностью прописаны в базе...

Фича!!! Блин...

Оператор на память помнит клентские ИДшки и вместо поиска вбивает в псевдоИД, а поле с именем - не заполняет...

В результате в файлике имени клиента нету, а есть пустая клеточка...

Ну и как это протестить и пофиксить?

Да-да - оператора убивать нельзя... и проверку на вводе добавить нельзя - не наш код...

Пришлось извращаться... потому как контрактники до таких "мелочей" не докапывались - скл отработал - значит все ест'...


#69 
Программист коренной житель12.02.20 17:52
NEW 12.02.20 17:52 
в ответ AlexNek 12.02.20 16:39
Нужно чтобы софт можно было протестировать без наличия и включения всего оборудования.

Еще раз: полноценный системный тест - это долго и дорого. Да, системные тесты надо делать. Да, симуляция оборудования - дорогая и сложная задача (я видел шкаф, который симулирует автомобиль :) и это очень дорогой шкаф). Но это не тоже самое, что юнит-тесты. Юнит-тесты тестируют логику. Они должны быть быстрыми и должны исполняться после каждой сборки. Если после каждой сборки запускать системные тесты, то ты никогда ничего не выпустишь :) (у нас на предыдущей работе все автоматизированные системные тесты работали несколько дней!)

Я это все к тому, что надо отделять мух от котлет и не смешивать понятия.

Если ты так любишь аналогии с производства, то юнит-тест - это контроль качества отдельной детали по заранее известным метрикам (вес, длина, ширина, место положения отверстий, диаметр отверстий итд). Системный тест, это когда чувак открывает дверь, садится в машину, заводит двигатель и едет 300 метров. Если дверь не отвалилась и машина не заглохла, значит тест прошел успешно.

Если твоему шефу до лампочки, что именно он тестирует - деталь или всю конструкцию, то шеф суется в область, в которой он нихрена не понимает.


Ну покажите мне, что нужно тестировать в этой аналоговой системе? Где найти там логику?

От куда мне знать, где там логика? :) Я даже не представляю себе что за сферического коня в вакууме ты привел в качестве примера :)


Ну вот другой примерчик. Есть у меня цифровой выход:0 -шатун в положении А, 1-шатун в положении Б, есть два концевика на цифровые входы. Будет ли достаточно теста когда 0 на выходе то 1 на входе А, когда 1, то единичка на входе Б?Вроде бы логика.

Начнем с банального вопроса: что ты хочешь тут протестировать?


#70 
Программист коренной житель12.02.20 17:55
NEW 12.02.20 17:55 
в ответ AlexNek 12.02.20 16:46
Для начала хочется чтобы намеспейсы соответствовали именам подкаталогов и чтобы не было немецких названий классов.
Согласны?

Ну если хочется, то переименовывай. Сделай только code freeze чтобы потом с конфликтами не затрахаться.

#71 
Программист коренной житель12.02.20 18:12
NEW 12.02.20 18:12 
в ответ Murr 12.02.20 17:31
Разумеется.

Отлично.


Я не буду знать правильно ли Я починил код...
Но починить надо правильно...

Ну значит можно не чинить, а просто сказать, что код работает правильно и все :) Ведь проверить правильность кода все равно нельзя.


А иногда оператору лениво делать поиск клиента и он оставляет поле незаполненным.
А вмеесто заполнения поля пишет какую-нибудь фигню в поле ПсевдоИДКлиента.
Потом заполняет другое поле куда вписывает Имя Клиента ассоциируемое с клиентом...
Оператор на память помнит клентские ИДшки и вместо поиска вбивает в псевдоИД, а поле с именем - не заполняет...
Да-да - оператора убивать нельзя...

Ты же свистел, что Патрик обучен хаха


Пришлось извращаться... потому как контрактники до таких "мелочей" не докапывались

С какого ляда им докапываться до мелочей? У них есть простая задача - перевести SQL запросы. Все. Задачи "найти нестыковки в работе Патрика и требованием к системе" перед консалтерами не стоит.


скл отработал - значит все ест'...

так и есть.


У нас тут недавно история была. Приходит ко мне шеф и говорит, что мол соседняя команда взяла наш симулятор и обнаружила, что симулятор наш генерирует неправильные сообщения. Типа так нельзя и бла-бла-бла.

Я шефу и говорю, что этот симулятор - наша внутренняя программулинка, для использования вне нашей команды не заточена и генерирует все так, чтобы мы могли протестировать свой софт. Хотят использовать наше приложение - нет проблем, пусть рисуют запрос и раскрывают нам детали работы своего модуля, чтобы мы могли генерировать то, что надо. Нет запроса с деталями - мы не будем гадать что и как надо им там генерировать и пусть они все сроем идут на юххх.

И все, воплей о неправильных данных больше нет :) И мы ничего не меняли. Все спокойны и довольны :)

#72 
Murr патриот12.02.20 20:03
Murr
NEW 12.02.20 20:03 
в ответ Программист 12.02.20 18:12

Ведь проверить правильность кода все равно нельзя.

-----

Ну наконец-то начинает доходить, что спагетти надо разгребать и делать правильно работающий код...


Ты же свистел, что Патрик обучен

-----

Их на заводике под 600...

Какие-то - недоучены... какие-то - обучены... какие-то - переучены...

Видимо тот который вбивал - переучен...

И какого Патрика откуда брать, чему учить и куда сажать - не моя задача...


У них есть простая задача - перевести SQL запросы. Все.

-----

А что ты понимаешь под переводом скл?

Именно - чтобы был тот же результат выполнения.

А результата - нету... код синтаксически корректен, но получает данные из несуществующей таблички...



так и есть.

-----

Не-а... просто ошибку выполнения где-то внутри спагетти подавили... в тупую - тру-катч-игноре...

Есть простое требование - работать с базой через определенную библиотеку... она ОДНА на все приложения...

Но ее - похерили... и шлют ВБшный код - мы тут соединение лучше обрабатывать стали... когда соединение они не должны трогать...

Мне то с присланного кода что? Кроме головняка по необходимости поддерживать дополнительный код и отсутствия

стандартной обработки ошибок - ни-че-го...

А ведь вторую неделю пишу - верните код для Оракла и Мс СКЛ и начинайте пользоваться управляемым в ран-тайме

коннектом... и тесты прогоните.

Бестолку...



Все спокойны и довольны

------

Что именно у тебя останавливается если они не получили что им надо?

#73 
AlexNek патриот12.02.20 23:55
AlexNek
NEW 12.02.20 23:55 
в ответ Программист 12.02.20 17:52
Если ты так любишь аналогии с производства,

Не, я просто хотел остаться в муркиной среде смущ


Начнем с банального вопроса: что ты хочешь тут протестировать?

А ничего смущ потому как в данном конкретном случае нет в этом смысла.

Это же вроде Вы любите все, что движется тестировать, а все что не движется толкнуть и потом тестировать. спок

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

Интеграционные тесты тоже на ночь только запускались.


#74 
AlexNek патриот12.02.20 23:58
AlexNek
NEW 12.02.20 23:58 
в ответ Программист 12.02.20 17:55
Ну если хочется, то переименовывай.

То есть это у вас не первый шаг рефакторинга - соответствие code style guide?

#75 
Программист коренной житель13.02.20 09:53
NEW 13.02.20 09:53 
в ответ Murr 12.02.20 20:03
спагетти надо разгребать и делать правильно работающий код...

Зачем? Разгребать надо, когда есть понимание, что такое правильные результат и как он получился.

А у тебя никто правильного результата не знает и никто не знает, как этот правильный результат получить :) А если никто не знает правильного результата, значит правильный результат можно назначить самому. Например заявить, что текущий результат - правильный :) И пусть докажут, что это не так.


Какие-то - недоучены... какие-то - обучены... какие-то - переучены...
Видимо тот который вбивал - переучен...
И какого Патрика откуда брать, чему учить и куда сажать - не моя задача...

Да нет, просто у вас на заводе нет никаких требований к софту. А у тех, кто пишет софт нет яиц чтобы эти требования получить.


А что ты понимаешь под переводом скл?

Был SQL-запрос со спецификой оракла - стал со спецификой другой БД.


Именно - чтобы был тот же результат выполнения.
А результата - нету... код синтаксически корректен, но получает данные из несуществующей таблички...

Тот же результат показывают тесты. Берешь старый код и видишь, что все тесты зеленые. Потом берешь новый код и видишь, что все тесты зеленые - Результат выполнения не изменился, а значит работа выполнена. Если есть красные тесты, то просто не принимаешь работу до тех пор, пока тесты не станут зелеными.

Если у вас на заводе тестов нет, правильность написанного кода у вас проверяется компилятором, а работоспособность нового кода проверяется в боевых условиях, то вами управляют долбоёбы :( И консалтеры в этом не виноваты :)


Что именно у тебя останавливается если они не получили что им надо?

Эта программа эмулирует игровой зал казино. Если наш код не работает, то останавливается работа службы безопасности казино. Поэтому перед релизом все тестируется на тестовом стенде.

#76 
Программист коренной житель13.02.20 09:55
NEW 13.02.20 09:55 
в ответ AlexNek 12.02.20 23:55
А ничего смущ потому как в данном конкретном случае нет в этом смысла.

Если ты ничего не хочешь тестировать, то, очевидно, тест не нужен.


#77 
Программист коренной житель13.02.20 10:03
NEW 13.02.20 10:03 
в ответ AlexNek 12.02.20 23:58
То есть это у вас не первый шаг рефакторинга - соответствие code style guide?

Нет конечно.


1) если есть code style guide, то от куда взялись несоответствующие им имена?

2) понятно, что code style guide мог появиться уже после того, как часть кода была написана... но в этом случае code style guide относится к новому коду.

3) применять новые правила к старому коду - может обернуться очень большими затратами, поэтому нужны очень веские причины для того, чтобы начать приводить старый код в соответствие новым code style guide


#78 
Murr патриот13.02.20 10:30
Murr
NEW 13.02.20 10:30 
в ответ Программист 13.02.20 09:53

Разгребать надо, когда есть понимание

-----

А где его, понимание, взять?

600 Патриков, каждый умеет сделать работу на своем месте.

Что они делают - они не знают.

Откуда возьмешь понимание?


И пусть докажут, что это не так.

-----

Да элементарно - из станка вылезет что-то не такое как заказал заказчик.



Был SQL-запрос со спецификой оракла - стал со спецификой другой БД.

------

Повторюсь - поменялась не только СУБД, поменялась так же структура баз.

Т.е. есть развесистый на 2-3 страницы СКЛ в котором задействовано с пару десятков таблиц.

В лучшем случае в нем упоминаются 1-2 таблицы которых НЕТ в новой базе.

Где-то в спагетти коде ошибка выполнения данного запроса тру-катч-игнорится.

Об данной специфике ребятки были предупреждены.

Что будет результатом перевода?



Берешь старый код и видишь, что все тесты зеленые.

-----

Эээ... или Я чего-то не знаю, или где-то есть тестирующий код...

Блин, 15 лет лепили спагетти без тестов, а тут оказывается тесты есть...



то останавливается работа службы

-----

Т.е. не дав что нужно соседнему отделу вы таки остановили работу службы или всего предприятия?

И таки все были этим очень довольны и никих претензий?

Не ВЕРЮ, однако... (с) Станиславский, в исполнении чукчи...



то вами управляют долбоёбы

------

Угу... только вот оговоренную зарплату Я получаю в полном объеме и вовремя...

И это... не долбоебы, а Патрики... и между собой они нормально ладят...



#79 
Программист коренной житель13.02.20 11:19
NEW 13.02.20 11:19 
в ответ Murr 13.02.20 10:30
600 Патриков, каждый умеет сделать работу на своем месте.
Что они делают - они не знают.
Откуда возьмешь понимание?

Где-то должен быть Патрик-ПМ, который говорит остальным 598 Патрикам-Рабочис, куда и что надо вбивать. Этот один уникальный Патрик-ПМ знает, как получается значение Р20. Потому что именно этот уникальный Патрик-ПМ дал указание другому Патрику-программисту накалякать спагети-код, в котором ты теперь пытаешься разобраться. Вот этого уникального Патрика-ПМа тебе надо найти и все у него узнать. Ведь Патрик-программист не сам все это это придумал :)


Да элементарно - из станка вылезет что-то не такое как заказал заказчик.

Так никто ж не знает, что там заказал заказчик :) Значит он заказал то, что вылезло из станка.


Я уж не говорю о том, что проверять правильность кода на реальном станке - полнейший долбоебизм :)


Где-то в спагетти коде ошибка выполнения данного запроса тру-катч-игнорится.
Об данной специфике ребятки были предупреждены.

Если ты ожидаешь, что консалтеры в течении 2 месяцев должны были не только перевести SQL, но и разобраться в 2Гб твоего спагетти, которое создавалось 15 лет, то ты просто наивняк.

Я так понимаю, что критерием приема была успешная компиляция. Ну ты ее получил. Чего ты еще хочешь? К пуговицам претензии есть? А с твоим спагетти разбирайся сам. Ну или плати консалтерам за то, чтобы они разбирались.


Эээ... или Я чего-то не знаю, или где-то есть тестирующий код...
Блин, 15 лет лепили спагетти без тестов, а тут оказывается тесты есть...

Еще раз, для танкистов.

Как без тестов оценить качество перевода SQL запросов?

Процесс примерно такой:

1) найти консалтеров

2) дать им задание на перевод

3) получить сделанный код

4) подписать акт приема-передачи

5) заплатить консалтерам

6) выкатить изменения на реальный завод

Итак, на стадии 4 ты должен как-то измерить проделанную работу и либо подписать акт приема-передачи, либо потребовать исправления ошибок.

Рассказывай, как ты собираешься это делать.


Т.е. не дав что нужно соседнему отделу вы таки остановили работу службы или всего предприятия?

Написано же черным по белому - "служба безопасности". Казино работает всегда, даже если служба безопасности работать не может.

Когда не работает служба безопасности довольных нет и есть куча претензий. Поэтом мы никогда не тестируем в боевых условиях.


#80 
1 2 3 4 5 6 7 все