Разработка программного обеспечения

Материал из Изи Вики

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

Объясните простыми словами, пожалуйста

Разработчики выкатывают приложение в продакшн

Почему программистов называют разработчиками? 🤔

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

Название для этого странного процесса искали долго и по всему миру. В итоге нашлось хорошее, изначально французское слово «разворот», давно позаимствованное в английский и дополненное смыслами. Development — это рост и развитие, раскрытие потенциала. В русском языке слово девелопмент уже заняли за собой строители, поэтому довольствуемся скромным «разработка» 🤷

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

Что объединяет журналистов и разработчиков программ?

  • ⚒️ Они должны использовать профессиональные инструменты индивидуальной и командной работы.
  • 🚯 Они должны соблюдать производственные стандарты.
  • 👪 Они должны эффективно работать в команде по правилам (методологиям).
  • 📅 Они должны понимать, что делает и зачем. Работать на результат и соблюдать сроки.
  • 💎 Они должны писать качественно, простым понятным языком.
  • 🚑 Они должны помогать коллегам.
  • 🫡 Они должны выполнять требования редактора (руководителя проекта).

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

А если серьезно

Из чего состоит разработка ПО

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

  • Идея — с чего всё начинается. Обычно это предложение по решению конкретной проблемы.
  • Продуктовый анализ — это проверка идеи на адекватность: анализ конкурентов, опросы пользователей, оценка экономических показателей (затраты, прибыль и т.п.).
  • Системный анализ — сбор требований и их документирование в виде технического задания.
  • Проектирование — один из важнейших этапов, здесь происходит выбор технологий и инструментов. Прорабатываются модели процессов и модели данных.
  • Планирование — оценка трудозатрат и календарных сроков.
  • Программирование — написание исходного кода программ на определенных языках программирования.
  • Код-ревью (code review) — проверка исходного кода программы другим более опытным разработчиком.
  • Тестирование — проверка, что программа удовлетворяет требованиям. В крупных компаниях, тестирование является частью отдельного направления контроля качества (QA)
  • Документирование — состоит из документирования исходного кода, документирования API (описания того как программа будет взаимодействовать с другими программами), подготовки документации для пользователей
  • Релиз (release) — «запуск в печать». Доставка приложения или результатов его работы конечным пользователям.
  • Сопровождение — исправление багов и доработки.

Как стать разработчиком

В разработку ПО могут быть вовлечены различные специалисты, не выполняющие работу с исходным кодом: менеджеры, дизайнеры, аналитики, тестировщики, другие инженеры. Но название «разработчик» закрепилось за специалистами, основная (но не единственная) задача которых — программирование.

Для того, чтобы стать разработчиком необходимо:

  1. Проверьте, что вам нравится программировать. Начать можно с компьютерных игр про программирование. Ищете, выбирайте, пробуйте. Если вам это интересно и это «затягивает», можно двигаться дальше.
  2. Выберите интересное для вас направление. Для новичков без IT образования подойдут мобильная разработка и разработка веб-приложений (frontend или backend). Не торопитесь на данном этапе, изучите каждое из трех направлений и выберите подходящее.
  3. Выберите один язык программирования по интересующему направлению. Рекомендуется JavaScript для фронтенд направления, Python для бэкенд, Kotlin / Swift для мобильной разработки.
  4. Начните изучение с бесплатных материалов и недорогих курсов. Если понимаете — «это оно», можно продолжать. Если идет «через силу», надо пробовать другие варианты.
  5. Изучите выбранный язык программирования, на уровне решения простых задач. Важно писать код алгоритмов самостоятельно «без копирования готовых решения из гугла».
  6. Освойте профессиональные инструменты работы. Минимальный набор — это инструменты работы с исходным кодом: git и IDE. Плюс у каждого направления разработки есть свои дополнительные.
  7. Выполните минимум один pet-проект (учебный проект) и выложите его код в открытый доступ.
  8. Разместите резюме и откликайтесь на вакансии стажера (подойдут бесплатное обучение или работа за минимальную зарплату). Остерегайтесь мошенников, обещающих высокие зарплаты без опыта работы.
  9. Пройдите собеседование и устройтесь на стажировку.
  10. Продолжайте искать работу, откликайтесь на вакансии младших (junior) разработчиков.

Важно! Если вам не интересно программировать, посмотрите в сторону других профессий в IT. Для начального уровня подойдут направления: тестировщики, аналитики, сотрудники технической поддержки.

Что вас ожидает дальше

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

Профессиональные уровни разработчиков (грейды)
Название Стажер Junior Middle Senior
Высшее IT образование Не требуется Не требуется Желательно Очень желательно
Как оценивает свои знания и навыки Недооценивает Часто переоценивает себя Оценивает себя правильно Недооценивает себя
Опыт работы разработчиком Нет От 0 до 2х лет Обычно больше 2х лет Обычно больше 5 лет
Самообучение Учится постоянно Учится постоянно Учится постоянно Учится постоянно
Учит других Нет Обычно нет Учит стажеров и младших разработчиков Учит всех
Ключевой софт-скилл Обучаемость и инициативность Работа в команде Работа на результат Ответственность
Выполненные проекты Небольшие учебные проекты Небольшие проекты для себя Небольшие бизнес проекты Есть опыт запуска крупных проектов
Участие в Open Source Активное (имитация) Нет времени Нет времени Нет времени, но надо
Системный анализ (сбор требований) Что это? Нет Обучение Может принимать участие
Участие в проектировании Что это? Нет Обучение Активная работа
Сколько языков программирования знает 0 Один, но в резюме указывает больше Обычно один хорошо и несколько хуже. Честно об этом говорит. Понимает, что знает мало языков программирования.
Знание языков программирования Обучение Знает и умеет писать код самостоятельно Знает особенности и подводные камни Следит за развитием языков программирования
Программирование Учебные задачи Простые бизнес задачи Все задачи Может решать сложные задачи оптимальным способом
Качество Нет Много багов Мало багов Мало багов
Фреймворки Обучение Знает в теории Активно использует Экспертный уровень
Шаблоны проектирования Не понимает Знает теорию Умеет применять Активно применяет
Парадигмы программирования Что это? Нет Обучение Знает и понимает
Методологии разработки Что это? Обучение Соблюдает Внедряет
Автотесты Что это? Обучение Умеет писать Понимает почему надо писать
Код-ревью Что это? Нет Да, но немного Перепроверяет чужого кода больше, чем пишет сам
Документирование кода Нет Да Да Да
Поддержка выпущенных продуктов Нет Простые багфиксы и доработки Сложные багфиксы и доработки Задачи по оптимизации, устранение технического долга
Отношение к информационной безопасности Нет Зачем это всё? Обучение на ошибках Считает очень важным
Отношение с проектными менеджерами Кто это? Обычно негативное Нейтральное Командная работа