Кодекс чести OpenCart-разработчика

30.03.2018 10:41 (119 просмотров)

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

Следующий кодекс чести от сайта OpenCart-Guide.com не является исчерпывающим, а скорее вторичным по сравнению с Кодексом этики и профессиональной деятельности в области программной инженерии, разработанным международной Ассоциацией вычислительной техники (англ. Association for Computing Machinery, ACM) совсестно с компьюетрным сообществом Институт Инженеров по Электротехнике и Электронике (англ. Institute of Electrical and Electronics Engineers Computer Society, IEEE-CS).

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

1. Общие принципы

1.1. Профессиональный программист (в том числе web-разработчик) — специалист, занимающийся разработкой программного обеспечения, которое, в первую очередь, решает задачи пользователей и облегчает человеческий труд за счет автоматизации сложных или рутинных процессов, принося таким образом социальную пользу.

1.2. В профессиональной деятельности, направленной исключительно на создание общественно полезных программ, программист руководствуется своей совестью, принципами настоящего кодекса, а также законами в сфере информационной деятельности, среди которых закон "Об информации, информационных технологиях и о защите информации", закон "Об авторском праве и смежных правах", закон "О персональных данных" ('О защите персональных данных') и др.

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

1.4. Программист, как никто другой, должен быть осведомлен о нормах компьютерной этики. Среди них необходимо выделить следующие принципы:

  • 1.4.1. Не использовать компьютер с целью навредить другим людям;
  • 1.4.2. Не создавать помех и не вмешиваться в работу других пользователей компьютерных сетей;
  • 1.4.3. Не пользоваться файлами, не предназначенными для свободного использования;
  • 1.4.4. Не использовать компьютер для воровства;
  • 1.4.5. Не использовать компьютер для распространения ложной информации;
  • 1.4.6. Не использовать ворованное программное обеспечение;
  • 1.4.7. Не присваивать чужую интеллектуальную собственность;
  • 1.4.8. Не использовать компьютерное оборудование или сетевые ресурсы без разрешения или соответствующей компенсации;
  • 1.4.9. Думать о возможных общественных последствиях программ, которые Вы пишете, или систем, которые Вы разрабатываете;
  • 1.4.10. Использовать компьютер с самоограничениями, которые показывают Вашу предупредительность и уважение к другим людям.

 

2. Качество разрабатываемого продукта

2.1. Говоря о качестве продукта, следует подразумевать не только рабоспособность кода, но и опыт пользователя в общении с программой, а также деловые качества построения отношений с клиентами и (или) пользователями. Техническое воплощение информационной системы само по себе ничего не будет значить, если не учтена роль человека, для которого предназначена производимая информация и без которого невозможно ее получение и представление 1. Исходя из этого:

  • 2.1.1. Код — это не продукт
  • 2.1.2. Хороший код не рождает хороший продукт 2
  • 2.1.3. Клиент платит за решение задачи, а не за кол-во строк кода. Поэтому сосредоточьтесь на том, как программа будет использоваться и подходят ли для этого готовые решения, а не на том, как много кода напишите вы лично собственными руками
  • 2.1.4. Способы реализации задачи в значительной степени зависят от сроков и бюджета клиента. Зачастую использование готового продукта наиболее подходяий вариант, который позволит решить задачу достаточно хорошо и, главное, вовремя. Ведь клиенту не нужен самый надежный сайт с идеально чистым html-кодом, ему нужны продажи, за счет которых в дальнейшем можно совершенствовать неидеальную готовую CMS
  • 2.1.5. Наличие Декларативного описания программы, в котором описано, как имеено программа будет использоваться и какие конкретные задачи решает, обязательно для нормальной работы программиста. Писать бюрократические полотна с ТЗ по шаблонному варианту из интернета для этого вовсе не требуется. Достаточно перечислить весь необходимый функционал "своими словами"

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

  • 2.2.1. Избегайте написания "велосипедов", отдавая предпочтение ПО, которое смогут обслуживать другие разработчики
  • 2.2.2. При желании написать оригинальный код, сосредоточьтесь на написании полезных расширений для готовой работающей системы
  • 2.2.3. Соблюдайте концепцию программирования и стиль оформления кода, принятый в данной среде разработке
  • 2.2.4. Пишите понятный читаемый код, в котором легко разберется следующий разработчик
  • 2.2.5. При необходимости пишите пояснения в комментариях в коде

 

3. Моральный облик профессии

3.1. Занимаясь созданием небольших интернет-магазинов на OpenCart, программист часто является и менеджером проекта. В таком случае он также должен изучить деловой этикет общения с клиентами, чтобы не производить дурное впечатление о программистах. Профессионал старается работать так, чтобы после общения с ним у людей не оставалось впечатление о нем как о жулике, некомпетентном фрилансере и тп.

  • 3.1.1. Профессиональный программист должен четко ограничить круг своей компетентности, чтобы не разочаровывать клиента конечным результатом. К примеру, веб-разработчик не берется за смежные задачи, наподобие SEO-анализа, который будет выполнен программистом наверняка хуже, чем SEO-специалистом.
  • 3.1.2. Профессионал также често признает, что с определенной областью задач он не справится, и для их реализации нужна покупка стороннего ПО или обращение к другому специалисту (к примеру, для подключения opencart-магазина к 1С нужен в том числе специалист по 1С)
  • 3.1.3. Профессионал никогда не обещает сделать дополнительные задачи (поступившие после утверждения ТЗ) в оговоренный раннее срок, чтобы не создавать впечатление, что раннее он работал в полсилы и чтобы, элементарно, не срывать сроков 3.
  • 3.1.4. Профессонал принимает ответственность за обнаружение, исправление и оповещение об ошибках в программном обеспечении и связанной с ним документации, над которыми он работает

3.2. Не используйте программное обеспечение, полученное либо заведомо нелегальным, либо неэтичным путем. В сфере OpenCart это касается использования варезных модулей. Помните, что вы уйдете из проекта, и клиенту может понадобиться поддержка автора модуля. И тогда обнаружится, что вы его не покупали. В лучшем случае это испортит вашу личную репутацию, а в худшем повлечет за собой жалобу автора модуля в Google с просьбой наказать сайт, использующий нелицензионный модуль.

3.3. Пользуйтесь собственностью клиента или работодателя только надлежащим образом и с их ведома. Сюда относитя правило не копировать данные клиентов того интернет-магазина, куда Вам предоставили доступ.

3.4. Профессиональный программист является частью программистского сообщества и участвует в его развитии

  • 3.4.1. Проявляйте терпимость к новичками и помощь в профессиональном росте. Профессионал никогда не грубит новичкам и не пытается их демотивировать. Он либо не отвечает на вопросы, либо отвечает на них в вежливом тоне. Если вопрос не понятен, то используется фраза наподобие "Уточните свой вопрос, так чтобы со стороны было понятно, о чем идет речь". Даже если некоторые вопросы кажутся глупыми с точки зрения опыта, образования или "звезданутости", не допустимо указывать новичкам на их некомпетентность, необразованность или тугодумие. Ведь все мы когда-то не умели ходить, пытались и спотыкались, а потом все-таки научились. Поэтому лучше всего объяснить на пальцах, в чем именно заблуждается новичок и в каком именно мануале по-вашему стоит прочитать об этом подробнее, нежели сказать "Учите азы"
  • 3.4.2. Призывайте коллег придерживаться норм Кодекса этики и профессиональной деятельности в области программной инженерии и упоминайте его везде, где это уместо
  • 3.4.3. Профессиональный программист принимает участие в развитии продукта, с которым он работает (будь то CMS или фреймворк). Наряду с платными, создает бесплатные расширения, оповещает о багах или публикует информацию о способах их устранения, чтобы не приходилось "решать проблему дважды" 4.
  • 3.4.4. Профессиональный программист не участвует в религиозных войнах (ООП или Процедурный подход, пробелы или табуляции, Какой язык лучше, Какая CMS лучше и тд). Вместо того, чтобы читать подобные рассуждения и плодить их, он разбирается в поднимаемом вопросе и осмысливает его в той мере, чтобы принять собственное решение. Приняв какую-либо концепцию, программист не производит флуда в интернете по этим темам, и не участвует в запутывании новичков.

 

 

 

1 По Информатика: Учебник / Под ред. проф. Н.В. Макаровой - М.: Финансы и статистика -2006. - 768 с. www.stu.ru/inform/
 
 
3 По Мартин Р. Идеальный программист. Как стать профессионалом разработки ПО. — СПб.: Питер, 2012. — 224 с.: ил.
 
4. По  статье Эрика Рэймонда, "Как стать хакером"