Разработка программного обеспечения
Разработка программного обеспечения — это производство программ для вычислительных устройств как продуктов полностью готовых к использованию. Могут предназначаться для внутреннего использования или для внешнего заказчика, для перепродажи или для бесплатного распространения.
Объясните простыми словами, пожалуйста
Почему программистов называют разработчиками? 🤔
Это слова часто используют вместе, но это не совсем одно и то же. В разработке современных качественных приложений только программирования недостаточно. Это сложный процесс и со стороны выглядит упрощенно так: несколько человек собираются вместе, начинают спорить и ругаться, а в перерывах стучат по клавиатурам. Это может длиться месяцами и годами. И в результате всего этого компьютеры начинают делать то, что раньше не делали, или начинают делать что-то лучше.
Название для этого странного процесса искали долго и по всему миру. В итоге нашлось хорошее, изначально французское слово «разворот», давно позаимствованное в английский и дополненное смыслами. Development — это рост и развитие, раскрытие потенциала. В русском языке слово девелопмент уже заняли за собой строители, поэтому довольствуемся скромным «разработка» 🤷
Разработка программного обеспечения похожа на издательство, читатели продукции которого не люди, а привередливые компьютеры. Некоторые издательства выпускают регулярные журналы по определенному графику. Некоторые выпускают редко, но большие издания. Недостаточно только грамотно писать (программировать), чтобы работать в такой компании. Профессиональный писатель (программист) в таком издательстве — это журналист (разработчик), готовый написать текст на любую сложную и незнакомую тему, погрузившись в неё с головой.
Что объединяет журналистов и разработчиков программ?
- ⚒️ Они должны использовать профессиональные инструменты индивидуальной и командной работы.
- 🚯 Они должны соблюдать производственные стандарты.
- 👪 Они должны эффективно работать в команде по правилам (методологиям).
- 📅 Они должны понимать, что делает и зачем. Работать на результат и соблюдать сроки.
- 💎 Они должны писать качественно, простым понятным языком.
- 🚑 Они должны помогать коллегам.
- 🫡 Они должны выполнять требования редактора (руководителя проекта).
Разработка больших и важных приложений требует участия большого количество людей и не все они заняты только программированием. Менеджеры, дизайнеры, аналитики, тестировщики, системные администраторы и другие специалисты вносят огромный вклад в конечный результат. К сожалению, про них часто и несправедливо забывают, называя разработчиками только программистов 😞
А если серьезно
Из чего состоит разработка ПО
Программирование — только одна из составляющих частей процесса разработки ПО, наряду со сбором требований, проектированием, тестированием, документированием и сопровождением.
- Идея — с чего всё начинается. Обычно это предложение по решению конкретной проблемы.
- Продуктовый анализ — это проверка идеи на адекватность: анализ конкурентов, опросы пользователей, оценка экономических показателей (затраты, прибыль и т.п.).
- Системный анализ — сбор требований и их документирование в виде технического задания.
- Проектирование — один из важнейших этапов, здесь происходит выбор технологий и инструментов. Прорабатываются модели процессов и модели данных.
- Планирование — оценка трудозатрат и календарных сроков.
- Программирование — написание исходного кода программ на определенных языках программирования.
- Код-ревью (code review) — проверка исходного кода программы другим более опытным разработчиком.
- Тестирование — проверка, что программа удовлетворяет требованиям. В крупных компаниях, тестирование является частью отдельного направления контроля качества (QA)
- Документирование — состоит из документирования исходного кода, документирования API (описания того как программа будет взаимодействовать с другими программами), подготовки документации для пользователей
- Релиз (release) — «запуск в печать». Доставка приложения или результатов его работы конечным пользователям.
- Сопровождение — исправление багов и доработки.
Как стать разработчиком
В разработку ПО могут быть вовлечены различные специалисты, не выполняющие работу с исходным кодом: менеджеры, дизайнеры, аналитики, тестировщики, другие инженеры. Но название «разработчик» закрепилось за специалистами, основная (но не единственная) задача которых — программирование.
Для того, чтобы стать разработчиком необходимо:
- Проверьте, что вам нравится программировать. Начать можно с компьютерных игр про программирование. Ищете, выбирайте, пробуйте. Если вам это интересно и это «затягивает», можно двигаться дальше.
- Выберите интересное для вас направление. Для новичков без IT образования подойдут мобильная разработка и разработка веб-приложений (frontend или backend). Не торопитесь на данном этапе, изучите каждое из трех направлений и выберите подходящее.
- Выберите один язык программирования по интересующему направлению. Рекомендуется JavaScript для фронтенд направления, Python для бэкенд, Kotlin / Swift для мобильной разработки.
- Начните изучение с бесплатных материалов и недорогих курсов. Если понимаете — «это оно», можно продолжать. Если идет «через силу», надо пробовать другие варианты.
- Изучите выбранный язык программирования, на уровне решения простых задач. Важно писать код алгоритмов самостоятельно «без копирования готовых решения из гугла».
- Освойте профессиональные инструменты работы. Минимальный набор — это инструменты работы с исходным кодом: git и IDE. Плюс у каждого направления разработки есть свои дополнительные.
- Выполните минимум один pet-проект (учебный проект) и выложите его код в открытый доступ.
- Разместите резюме и откликайтесь на вакансии стажера (подойдут бесплатное обучение или работа за минимальную зарплату). Остерегайтесь мошенников, обещающих высокие зарплаты без опыта работы.
- Пройдите собеседование и устройтесь на стажировку.
- Продолжайте искать работу, откликайтесь на вакансии младших (junior) разработчиков.
Важно! Если вам не интересно программировать, посмотрите в сторону других профессий в IT. Для начального уровня подойдут направления: тестировщики, аналитики, сотрудники технической поддержки.
Что вас ожидает дальше
Если вы стали разработчиком, вам придется продолжать всё время учиться для профессионального роста.
Название | Стажер | Junior | Middle | Senior |
---|---|---|---|---|
Высшее IT образование | Не требуется | Не требуется | Желательно | Очень желательно |
Как оценивает свои знания и навыки | Недооценивает | Часто переоценивает себя | Оценивает себя правильно | Недооценивает себя |
Опыт работы разработчиком | Нет | От 0 до 2х лет | Обычно больше 2х лет | Обычно больше 5 лет |
Самообучение | Учится постоянно | Учится постоянно | Учится постоянно | Учится постоянно |
Учит других | Нет | Обычно нет | Учит стажеров и младших разработчиков | Учит всех |
Ключевой софт-скилл | Обучаемость и инициативность | Работа в команде | Работа на результат | Ответственность |
Выполненные проекты | Небольшие учебные проекты | Небольшие проекты для себя | Небольшие бизнес проекты | Есть опыт запуска крупных проектов |
Участие в Open Source | Активное (имитация) | Нет времени | Нет времени | Нет времени, но надо |
Системный анализ (сбор требований) | Что это? | Нет | Обучение | Может принимать участие |
Участие в проектировании | Что это? | Нет | Обучение | Активная работа |
Сколько языков программирования знает | 0 | Один, но в резюме указывает больше | Обычно один хорошо и несколько хуже. Честно об этом говорит. | Понимает, что знает мало языков программирования. |
Знание языков программирования | Обучение | Знает и умеет писать код самостоятельно | Знает особенности и подводные камни | Следит за развитием языков программирования |
Программирование | Учебные задачи | Простые бизнес задачи | Все задачи | Может решать сложные задачи оптимальным способом |
Качество | Нет | Много багов | Мало багов | Мало багов |
Фреймворки | Обучение | Знает в теории | Активно использует | Экспертный уровень |
Шаблоны проектирования | Не понимает | Знает теорию | Умеет применять | Активно применяет |
Парадигмы программирования | Что это? | Нет | Обучение | Знает и понимает |
Методологии разработки | Что это? | Обучение | Соблюдает | Внедряет |
Автотесты | Что это? | Обучение | Умеет писать | Понимает почему надо писать |
Код-ревью | Что это? | Нет | Да, но немного | Перепроверяет чужого кода больше, чем пишет сам |
Документирование кода | Нет | Да | Да | Да |
Поддержка выпущенных продуктов | Нет | Простые багфиксы и доработки | Сложные багфиксы и доработки | Задачи по оптимизации, устранение технического долга |
Отношение к информационной безопасности | Нет | Зачем это всё? | Обучение на ошибках | Считает очень важным |
Отношение с проектными менеджерами | Кто это? | Обычно негативное | Нейтральное | Командная работа |