I. Общие положения
1.1. Настоящая должностная инструкция разработана на основе профессионального стандарта, регламентирующего трудовую деятельность в области разработки и сопровождения программного обеспечения.
1.2. Программист относится к категории специалистов.
1.3. Назначение на должность программиста и освобождение от нее производится приказом генерального директора организации по представлению непосредственного руководителя (начальника отдела, руководителя проекта).
1.4. На должность программиста назначается лицо, имеющее:
- Высшее профессиональное (техническое или IT-направление) образование либо среднее профессиональное образование с дополнительным профессиональным обучением по программам профессиональной переподготовки.
- Опыт работы по специальности не менее одного года.
- Допуск к работе осуществляется после прохождения в установленном порядке инструктажей по охране труда и пожарной безопасности.
1.5. Программист подчиняется непосредственно руководителю IT-отдела (руководителю проекта, начальнику разработки).
1.6. В своей деятельности программист руководствуется:
- Уставом организации;
- Приказами и распоряжениями руководства;
- Внутренними нормативными актами;
- Правилами трудового распорядка;
- Должностной инструкцией;
- Актуальными требованиями законодательства в сфере информационных технологий.
1.7. Программист должен знать:
- Основы алгоритмизации и проектирования программного обеспечения;
- Языки программирования, используемые в организации (например, Java, C#, Python, JavaScript и др.);
- Принципы объектно-ориентированного программирования;
- Методологии разработки (Agile, Scrum, Waterfall и т.п.);
- Системы управления версиями (Git, SVN);
- Принципы работы с реляционными и нереляционными базами данных (SQL, NoSQL);
- Основы сетевых технологий и протоколы взаимодействия (HTTP, REST, TCP/IP);
- Технологии и фреймворки, применяемые в проектах (Spring, .NET, React, Angular и др.);
- Основы обеспечения информационной безопасности при разработке;
- Принципы тестирования программного обеспечения (виды тестов, инструменты);
- Документационные стандарты и техническое задание;
- Основы операционных систем (Windows, Linux);
- Принципы непрерывной интеграции и доставки (CI/CD);
- Основы проектирования пользовательских интерфейсов и опыта взаимодействия (UI/UX).
1.8. Программист должен уметь:
- Писать чистый, поддерживаемый и эффективный код;
- Читать и анализировать чужой код;
- Работать с системами контроля версий;
- Проектировать архитектуру модулей и компонентов системы;
- Отлаживать и профилировать приложения для поиска узких мест;
- Писать и выполнять модульные, интеграционные и функциональные тесты;
- Работать с инструментами сборки и развертывания (Maven, Gradle, Docker и др.);
- Составлять и читать техническую документацию;
- Оптимизировать запросы к базам данных;
- Взаимодействовать с API сторонних сервисов.
II. Функции
2.1. Разработка и реализация программных модулей и компонентов.
2.2. Участие в проектировании архитектуры программного обеспечения.
2.3. Сопровождение, доработка и оптимизация существующего кода.
2.4. Тестирование разработанного функционала.
2.5. Интеграция с внешними системами и сервисами.
2.6. Участие в составлении технической документации.
2.7. Устранение ошибок (дефектов) в программном коде.
2.8. Взаимодействие с другими членами команды (аналитиками, тестировщиками, другими разработчиками).
2.9. Освоение новых технологий и инструментов, релевантных задачам проекта.
2.10. Обеспечение соблюдения стандартов кодирования и процессов разработки, принятых в организации.
2.11. Консультационная поддержка по вопросам разработанного функционала.
2.12. Перечень функций может быть дополнен или уточнен непосредственным руководителем в соответствии с задачами подразделения и организации.
III. Должностные обязанности
3.1. Анализировать технические задания и требования к функционалу.
3.2. Разрабатывать и реализовывать алгоритмы и структуры данных.
3.3. Писать исходный код программ, модулей и скриптов на утвержденных языках программирования.
3.4. Проводить код-ревью (проверку кода) других разработчиков.
3.5. Самостоятельно проводить модульное тестирование написанного кода.
3.6. Интегрировать программные модули в единую систему.
3.7. Оптимизировать производительность критических участков кода и запросов к базам данных.
3.8. Своевременно фиксировать изменения в системе управления версиями с комментариями.
3.9. Участвовать в планировании спринтов и оценке трудозатрат на задачи.
3.10. Соблюдать соглашения о кодировании и стандарты оформления кода, принятые в команде.
3.11. Оперативно исправлять выявленные ошибки и дефекты в соответствии с приоритетами.
3.12. Обновлять техническую документацию (комментарии в коде, readme-файлы, wiki) при внесении изменений.
3.13. Настраивать и использовать инструменты сборки, развертывания и непрерывной интеграции.
3.14. Консультировать сотрудников смежных отделов (техподдержки, тестирования) по работе программного обеспечения.
3.15. Осваивать и применять новые библиотеки, фреймворки и инструменты по требованию проекта.
3.16. Участвовать в ежедневных совещаниях команды (stand-up) и других agile-ритуалах.
3.17. Составлять отчеты о выполненной работе в установленной форме.
3.18. Обеспечивать резервное копирование значимых рабочих данных.
3.19. Проверять безопасность разрабатываемых решений на предмет уязвимостей.
3.20. Подготавливать и передавать результаты работы (билды, пакеты) для тестирования и эксплуатации.
3.21. Соблюдать правила внутреннего трудового распорядка, требования охраны труда и информационной безопасности.
3.22. Своевременно информировать руководство о возникших проблемах, рисках и угрозах срыва сроков.
IV. Права
4.1. Запрашивать и получать от сотрудников и руководителей информацию, необходимую для выполнения своих обязанностей.
4.2. Вносить предложения по совершенствованию процессов разработки, инструментов и технологий.
4.3. Участвовать в обсуждении проектов решений, касающихся его компетенции.
4.4. Требовать обеспечения организационно-технических условий, необходимых для исполнения должностных обязанностей.
4.5. Принимать решения в рамках своей компетенции и утвержденных технических заданий.
4.6. Повышать свою профессиональную квалификацию в установленном порядке.
4.7. Обращаться к руководству за содействием в выполнении своих должностных обязанностей и прав.
4.8. Знакомиться с проектами решений руководства, касающимися его деятельности.
4.9. Участвовать в профессиональных конференциях и мероприятиях с согласия руководства.
4.10. Получать служебную информацию в объеме, необходимом для решения поставленных задач.
4.11. Отклонять некорректно составленные или неполные технические задания, требую их доработки.
4.12. Инициировать проведение совещаний по вопросам, входящим в его функциональные обязанности.
4.13. Требовать соблюдения сроков предоставления информации и материалов от смежных специалистов.
4.14. Представлять интересы отдела в рамках поручений руководства.
V. Ответственность
5.1. За ненадлежащее исполнение или неисполнение своих должностных обязанностей, предусмотренных настоящей инструкцией.
5.2. За несоблюдение сроков выполнения работ, установленных планами и регламентами.
5.3. За нарушение правил внутреннего трудового распорядка, требований по охране труда и пожарной безопасности.
5.4. За причинение материального ущерба организации в пределах, определенных действующим трудовым и гражданским законодательством.
5.5. За разглашение коммерческой тайны и конфиденциальной информации.
5.6. За низкое качество разрабатываемого программного кода, приводящее к сбоям в работе систем.
5.7. За недостоверность предоставляемой отчетности и информации.
5.8. За несоблюдение стандартов кодирования и требований технического задания.
5.9. За утерю или повреждение служебной информации, доверенного оборудования и программного обеспечения.
С инструкцией ознакомлен:
_________________________________ /___________________________/
(подпись) (Фамилия И.О.)
«____» _______________ 20___ г.