Как решить, когда писать что-то, а не делать это вручную? - PullRequest
1 голос
/ 29 октября 2009

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

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

Какие-либо предложения по эмпирическим правилам, которые помогут мне до начала какого-либо повторного процесса решить, стоит ли тратить время на написание сценария для его автоматизации?

Для пояснения: я говорю о вещах типа sysadmin, таких как перемещение файлов, переименование вещей и т. Д., И о вещах типа DBA, таких как запуск сценария SQL для импорта определенных данных (это то, что я делал сегодня). Обратите внимание, что я разработчик, а не системный администратор или администратор.

Ответы [ 11 ]

8 голосов
/ 29 октября 2009

Я фанат правила " Три удара и ты автоматизируешь ", как описано по этой ссылке.

4 голосов
/ 29 октября 2009

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

Сделано правильно, автоматизированный процесс должен минимизировать вероятность ошибки. Это может привести к автоматизации, даже если это не приведет к экономии времени.

Конечно, обратная сторона: если процесс запускается автоматически, обязательно следите за ним, чтобы убедиться, что он не вышел из строя.

4 голосов
/ 29 октября 2009

Причины для сценариев включают в себя

Когда:

  • вы делаете это во второй раз

  • становится более одного шага

  • легко ошибиться

  • легко забыть, как это сделать вручную

2 голосов
/ 30 октября 2009

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

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

1 голос
/ 30 октября 2009

Мое эмпирическое правило:

  • Если вам скучно, потратьте немного времени на размышления о том, как вы могли бы автоматизировать это, сколько работы и сколько труда это может спасти.
  • Если автоматизировать очень просто или, очевидно, сэкономить много работы, начните автоматизировать прямо сейчас
  • Если вы решили не автоматизировать, и делать это вручную становится мучительно утомительным, или если вы решили автоматизировать, но столкнулись с трудностями, подумайте еще раз, на этот раз дольше.
1 голос
/ 30 октября 2009

Это сайт для разработчиков.

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

В следующий раз проведите рефакторинг и улучшите его, но только немного. Помни ЯГНИ.

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

И, надеюсь, вы используете не сценарии оболочки, а реальный язык сценариев, такой как Python, где вы можете настраивать код и улучшать его каждый раз, когда вы его используете, до тех пор, пока он не станет полноценной средой автоматизации, способной работать удаленно и управлять тысячи серверов за один вызов.

1 голос
/ 29 октября 2009

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

Когда я начал работать с одним из моих проектов (asp.net) пару лет назад, у меня был процесс ручного выпуска, который охватывал 3 письменные страницы. Шаг за шагом я перенес эту работу в пакетный файл сборки (с параметрами командной строки и т. Д., Чтобы выбрать отдельные операции или все).

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

А иногда писать сценарий просто весело;)

1 голос
/ 29 октября 2009

Если есть одна системная администрация трюизм, это так: нет простого сисадмина задание веселее более чем в два раза. если ты поймать себя на том, что выполняешь простую скучную задачу более двух раз, автоматизируйте это.

- http://www.ibm.com/developerworks/linux/library/l-punix.html

0 голосов
/ 30 октября 2009

Мое правило таково: создавайте сценарий, когда он становится чем-то, о чем вам больше не нужно думать. Если вы все еще делаете это осознанно, все еще изучаете что-то о процессе или все еще особенно заинтересованы в результатах, не пишите сценарий. Но если это стало чем-то, что вам просто нужно сделать, чтобы что-то сделать, и делать это - рутина, черт побери.

0 голосов
/ 30 октября 2009

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

...