Рабочий процесс для научных исследовательских проектов, одноэтапных сборок и теста Джоэля

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

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

Тем не менее, я считаю, что эти шаги еще важны для академических исследований:

  • Используете ли вы контроль источника?
  • Можете ли вы сделать сборку за один шаг?
  • У вас есть современное расписание?
  • Есть ли у вас спецификация?

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

Один шаг сборки. http://up.stevetjoa.com/onestepbuild.jpg

Другими словами, у меня есть один script, build.py, который принимает коды Python, данные и TeX в качестве входных данных. Результатами являются результаты, цифры и документ со всеми заполненными результатами. (Да, я знаю, что "сборка", вероятно, не является точным в этом контексте, но вы получаете эту идею.) Объединив много небольших шагов в один, я не отступать столько, сколько я использовал.

... но я уверен, что еще есть возможности для улучшения.

Вопрос. Для исследовательских проектов, какие шаги теста Joel вы по-прежнему цените? У вас есть одноэтапная сборка? Если да, то в чем состоит ваша состоит, т.е. Какие входные данные она принимает, и какой результат она генерирует?

Ответ 1

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

С этой преамбулой, вот мои ответы на тест Джоэла:

Используете ли вы контроль источника?

Всегда. Даже для бумаг. Новые инструменты, такие как git и darcs, упростили сравнение с плохими старыми днями CVS и RCS.

Последний проект, для которого у меня не было исходного управления с самого начала, был noweb, который я начал в качестве первого года в 1989 году. Он не импортировался в исходный контроль до 1991 года. Он заложил основу для одной научной статьи.

Можете ли вы сделать сборку за один шаг?

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

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

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

Делаете ли вы ежедневные сборки?

Нет. Один проект, который я возглавлял, который делал ежедневные сборки, был Quick C--. Ежедневный сервер сборки скончался два года назад, и мы никогда не находили достаточной ценности для него, чтобы его стоило заменить.

Я бы сделал ежедневную сборку только для большого проекта с реальными пользователями. В этот момент это вряд ли будет "одиноким волком".

У вас есть база данных ошибок?

Обычно нет. Было несколько исключений, но нам было трудно найти базу данных ошибок, которая соответствует нашим потребностям в качестве пользователей Linux. Мы скоро попробуем с http://community.haskell.org.

Исправлены ошибки перед написанием нового кода?

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

У вас есть современное расписание?

Никогда. (Если вы не посчитаете следующий срок подачи документов.)

Есть ли у вас спецификация?

Никогда.

У программистов у студентов-выпускников есть спокойные условия работы?

Да.

Используете ли вы лучшие инструменты, которые могут купить деньги?

Нет. К сожалению, это решение не сильно влияет на нас, потому что отличные инструменты для Haskell или Lua или ML обычно не предлагаются для продажи. Но когда я работал на компиляторах C в качестве исследователя, мы не могли позволить себе купить набор тестов Plum-Hall.

Есть ли у вас тестеры?

Нет.

Записывают ли новые кандидаты код во время интервью?

Нет. Студенты-выпускники нанимаются на основе исследовательского потенциала. Postdocs нанимаются на основе результатов исследований.

Вы проводите тестирование удобства пользования прихожей?

Не достаточно. Но трудно схватить кого-то в зале и заставить их попробовать свой новый язык или ваш новый генератор кода: -)