Итак, мы все слышали о Билле о правах программистов, и у XP схожая концепция.
В наши дни часто жалуются на то, что мы много слышим о правах людей, но не столько об их обязанностях, сколько о том, что должно быть в списке обязанностей программистов. Это то, что они должны делать, что они могут найти неприятным, но то, что отделяет программистов, действующих профессионально и ответственно, от тех, кто этого не делает.
Меня в первую очередь интересуют неприятные и те, которые не случаются. Это то, что программисты склонны избегать и избегать, а не те, которые на самом деле хотят сделать 90% программистов (такие как всегда рефакторинг и использование контроля версий).
Итак, что должно быть в Билле об ответственности программистов?
development-process
Джон Хопкинс
источник
источник
Ответы:
Программист обязан отбросить плохие требования, а не слепо их реализовывать. Это включает в себя информирование клиентов о том, что то, что они хотят, дороже, чем другие варианты, или имеет определенный набор рисков. Это также включает в себя передачу плохих новостей на профессиональном уровне - не кричать, не называть людей глупыми, подразумевая, что они глупы или ведут себя по-детски. Если он отодвигается назад, у него должен быть ряд причин (более чем «я не люблю SQL Server и не буду его использовать») и альтернативный план для представления.
Тем не менее, программист также несет ответственность за принятие решений и использование инструментов или конструкций, которые им могут не понравиться, если их откат не был принят. Если отчет был запрошен в SSRS, его доставка в Crystal Reports (который может отсутствовать у клиента) недопустима. Если требуется решение .net, доставка его на Haskell недопустима. Если никто в команде не использует инструмент или язык, который вы хотите использовать, использовать его непрофессионально, если руководство не согласится с тем, что это лучший инструмент для конкретной работы.
Программист обязан проверить свою работу. (Это не должно быть единственным тестом, но ни один профессиональный программист не должен отправлять код, который он не тестировал.) Это включает в себя тестирование даже тех ветвей кода, которые вы не ожидаете получить очень часто. Если у вас есть набор вложенных IF, протестируйте все возможные маршруты.
Программист обязан изящно обрабатывать ошибки и исключения и писать сообщения об ошибках, которые увидит пользователь, которые являются профессиональными и нейтральными, а не шутками или оскорблениями.
Программист несет ответственность за защиту личных данных, защиту проприетарного кода, который он пишет для компании, и за защиту пользователей от катастрофы (даже самопроизвольной катастрофы) от использования ими приложения.
Программист обязан убедиться, что его код поддерживается и находится под контролем исходного кода.
Программист обязан координировать свои действия с другими, чтобы убедиться, что его изменения не влияют отрицательно на то, что они делают.
Программист обязан рекомендовать клиенту лучший выбор инструментов или языков на этапе проектирования, а не инструмент / язык, с которым он хочет играть и изучать.
Программист несет ответственность за работу со всем соответствующим персоналом для проекта, включая те, которые ему не нравятся. Это не ваша работа - любить людей, это ваша работа - работать с ними и быть вежливыми.
Программист несет ответственность за создание продукта, который выполняет то, что было указано в разумные сроки. Если сроки не будут соблюдены, он или она обязаны информировать руководство об этом, как только это станет известно.
Программист обязан сообщить руководству проекта о препятствиях выполнению работы. Они не могут исправить то, о чем они не знают.
Программист несет ответственность за выполнение всей задачи, а не только забавных, интересных частей. У каждой работы есть свои скучные части, их еще нужно сделать. Это включает в себя такие вещи, как расписания и добавление элементов обсуждения в программное обеспечение для управления проектами. Он включает в себя такие вещи, как документация, проверка кода и т. Д.
Программист несет ответственность за изучение сферы бизнеса, которую он поддерживает, а не только концепции программирования.
Программист обязан поддерживать свои навыки в актуальном состоянии.
Когда программист ошибается, он обязан сделать все возможное, чтобы решить проблемы как можно скорее. Это может включать передачу плохих новостей руководству, а не пытаться скрыть, что вы только что удалили критическую таблицу из рабочей базы данных.
На программиста возлагаются те же обязанности, что и на любого другого работника, - приходить вовремя, работать по контракту, заранее запрашивать время отпуска, отвечать на телефонные и электронные письма (читай их электронные письма), заполнять необходимые формы для HR и др.
источник
Каждый программист должен сделать свой код читаемым для других.
источник
Программист несет ответственность за конфиденциальность и безопасность всех предоставленных пользователем данных. Особенно пароли, номера кредитных карт, адреса электронной почты и физическое местоположение.
источник
Не заставляйте пользователя терять свою работу.
Это сложнее, чем кажется ... работа - это больше, чем просто "данные в файле" ... это любое время, которое пользователь провел с вашим программным обеспечением.
Например, если пользователь заполнил вашу форму из 30 полей с 29 действительными элементами и 1 недействительным, не удаляйте все свои действительные данные, чтобы жаловаться на 1 недействительный (черт, даже не удаляйте недопустимый). . возможно, это долго и просто требует незначительной коррекции, или пользователь не вспомнит, что было раньше, если вы очистите его)
Неочевидным, но важным примером является то, что Windows и практически все остальные программы «файлового менеджера» ошибаются .... если я потратил полчаса, тщательно Ctrl-Click'ing, чтобы выбрать набор файлов, и я случайно нажал вместо Ctrl-Click, он не должен очистить все мои ранее выбранные файлы, заставляя меня начать все сначала.
Еще одно, что они ошиблись ... если я случайно нажму Ctrl-A (вместо Ctrl-S по соседству), он не должен потерять свое место в файле и поставить курсор в начало .... Я вызываю поиск нужное место в файле «работа», который программа «потеряла».
Еще одно: диалог "фиксации" TortoiseSVN содержит длинный список файлов. Прежде чем нажать «Подтвердить», вы можете просмотреть список файлов, дважды щелкнув по каждому из них, чтобы увидеть его изменения во втором диалоге. Чтобы сделать это быстро, я иногда использую только клавиатуру, нажимая,
<Esc>
чтобы закрыть второе диалоговое окно и вернуться к первому. Если я случайно нажму<Esc>
два раза, он также закроет 1-й диалог, в результате чего я забуду, какой файл у меня был.источник
Программист обязан уважать систему, на которой будет работать его программа. После завершения разработки и тестирования программа будет развернута для использования по прямому назначению, и обычно к ней подключаются другие люди, работающие на своих компьютерах. Программист должен помнить об этом: его программа работает на чужой собственности , а не на их собственном, и должна вести себя как гость в их доме, а не врываться, как будто она владеет этим местом.
Например, его программа не должна:
источник
Из Манифеста для Software Craftsman :
источник
Взгляните в зеркало и, возможно, узнайте в себе худшие качества программиста. Затем работайте над их устранением каждый день.
источник
Часть из этого относится к обязанностям "Программной компании ".
источник
Особенно, когда программист приходит с другой платформы / языка. Страшно найти программиста, который борется за то, что обеспечивает базовая библиотека, или неправильно использует преимущество платформы из-за невежества.
Очень важно иметь документированный код для использования другими, но когда дело доходит до удобства обслуживания, самодокументированный код может буквально сэкономить часы и часы разочарования.
Например, сравните:
в
источник
Программирование - это профессия, а не навык. Это означает, что программист несет ответственность за то, чтобы быть в курсе своей работы с новейшими инструментами, методами и технологиями.
Это может означать подталкивание менеджеров к тому, чтобы дать время для непрерывного обучения и обучения, или делать это в свое свободное время.
источник
1) Четко объясните, что решение любой проблемы будет иметь компромисс между производительностью, стоимостью, временем и качеством.
2) Заполните соответствующую документацию, будь то заметки или планы испытаний. (документация зависит от типа и размера компании)
3) Запросить правильные инструменты для своей работы (многие просто стонут об этом, но никогда не обращаются к своему боссу с разумным аргументом для получения того, что им нужно)
... Другие без сомнения, чтобы следовать.
источник
Вопрос к чему-либо. Программист должен нести ответственность за то, чтобы узнать, что может потребовать или сделать система. Это может включать вопрос о том, что пользователи могут посчитать глупыми вопросами, поскольку существуют различные сайты, посвященные тому, чтобы показать, на что способны пользователи. Ежедневные WTF и SharkTank - пара примеров, хотя я уверен, что есть и другие.
источник
Вот почему менеджеры должны убедиться, что у них есть все для их цели.
источник
Вот мое предложение.
(Под «программистом» я имею в виду «программиста», а не «хакера выходного дня», поэтому подразумевается все стандартное, что должен делать программист.)
источник
5 заповедей гильдии программистов
1.) Проверяйте свой код еженедельно и в праздничные дни.
2.) Обеспечить потребности сообщества программистов.
3.) читать хотя бы одну книгу по программированию в год.
4.) посещать как минимум одну конференцию по программированию в год.
5.) Признайте свои ошибки.
источник
Я добавлю «всегда документировать любые сделанные предположения» в список. :-)
источник
Программист не должен делать или реализовывать что-либо, что является неэтичным или незаконным, например, писать вирусы или взламывать системы других (если только это не для того, чтобы обнаружить дыры в безопасности, а затем сообщить жертве об этом и о том, что он или она может сделать, чтобы избежать этого эксплуатируется любыми злонамеренными хакерами).
источник