Чтение онлайн

на главную - закладки

Жанры

Карьера в IT. Как найти работу, прокачать навыки и стать крутым разработчиком
Шрифт:

Чтобы стать хорошим разработчиком, нужно знать одну простую, но очень важную истину:

Прежде чем что-то автоматизировать, нужно научиться делать это «что-то» вручную.

Понимание проблемы

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

вы, дорогие читатели, решились открыть эту книгу, то, скорее всего, ваш уровень притязаний находится уже выше простого «клепания кода».

Процесс разработки ПО всегда начинается с констатирования проблемы, которую будет решать ваша будущая программа. Задайте себе вопрос: «А что я, собственно говоря, автоматизирую?»

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

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

Проектирование

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

Такой подход применим при решении проблем как маленького масштаба, так и большого. Некоторые адепты методологии Agile (о ней мы поговорим в следующих главах) считают, что можно обойтись и без плана, главное – начать писать код. Несмотря на то что Agile не требует слишком тщательного предварительного проектирования, полная импровизациявсе еще не лучший выбор. Вы не сможете построить дом, если будете наобум забивать гвозди в бревна.

Собственно, само программирование

Разобравшись с видением работы будущей программы, вы можете либо написать несколько тестов, которые позволяют понять, что будет делать приложение (такой подход также известен как TDD, или «разработка через тестирование»), либо приступить непосредственно к программированию. В следующих главах мы вернемся к обсуждению TDD.

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

Первая книга называется «Совершенный код. Практическое руководство по разработке программного обеспечения» [5] , ее автором является Стив Макконнелл. Это классический труд, который должен прочитать каждый разработчик.

Вторая – «Чистый код. Создание, анализ и рефакторинг» [6] за авторством Роберта Мартина. Это тоже классика, которая научит вас писать более качественный код.

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

5

Издавалась на русском языке. Русская редакция, 2019 г. – Прим. ред.

6

Издавалась на русском языке. Питер, 2018 г. – Прим. ред.

Тестирование и развертывание

Итак, код готов. Значит ли это, что программа готова к выпуску?

Нет! Сначала код нужно протестировать. Повторюсь, различные методологии разработки предлагают разные подходы. А в общем, просто помните, что перед передачей программы заказчику ее надо проверить.

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

После того как тестировщики дают «добро» на выпуск кода, наступает этап развертывания, который представляет собой отдельный процесс.

Вы, наверное, уже обратили внимание на то, что я лишь вскользь упомянул о данном этапе создания ПО, – потому что этой теме в книге посвящена целая глава. Развертывание – это процесс установки готового ПО на сервер, загрузки в магазин приложений (типа App Store или Google Play) или предоставления доступа к программе конечным пользователям любым другим способом. (Этот процесс может быть довольно сложным.) Попутно код

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

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

Многие команды разработчиков используют ту или иную форму непрерывной интеграции, чтобы код собирался автоматически, когда разработчики «присылают» свои части программы.

Разработка – это не просто набор кода

И, наконец, не забывайте про отлов багов (отладку). Бoльшая часть вашей работы в качестве разработчика ПО будет заключаться в том, чтобы понять, почему ваш (или чей-то еще) код не работает. Как я уже говорил ранее, разработка ПО включает в себя немного больше, чем просто написание кода.

Я считаю, что вы должны осознать этот нюанс еще до того, как устроитесь на работу. А лучше всего будет, если вы заранее обзаведетесь опытом во всех вышеперечисленных вещах.

Поделиться:
Популярные книги

Камень Книга седьмая

Минин Станислав
7. Камень
Фантастика:
фэнтези
боевая фантастика
6.22
рейтинг книги
Камень Книга седьмая

Барон диктует правила

Ренгач Евгений
4. Закон сильного
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Барон диктует правила

Ты не мой BOY

Рам Янка
5. Самбисты
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Ты не мой BOY

Дворянская кровь

Седой Василий
1. Дворянская кровь
Фантастика:
попаданцы
альтернативная история
7.00
рейтинг книги
Дворянская кровь

Неверный

Тоцка Тала
Любовные романы:
современные любовные романы
5.50
рейтинг книги
Неверный

Не грози Дубровскому! Том V

Панарин Антон
5. РОС: Не грози Дубровскому!
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Не грози Дубровскому! Том V

Сердце Дракона. Том 19. Часть 1

Клеванский Кирилл Сергеевич
19. Сердце дракона
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
7.52
рейтинг книги
Сердце Дракона. Том 19. Часть 1

Мама для дракончика или Жена к вылуплению

Максонова Мария
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Мама для дракончика или Жена к вылуплению

Ваше Сиятельство 3

Моури Эрли
3. Ваше Сиятельство
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Ваше Сиятельство 3

Снегурка для опера Морозова

Бигси Анна
4. Опасная работа
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Снегурка для опера Морозова

Архил...?

Кожевников Павел
1. Архил...?
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Архил...?

Идеальный мир для Социопата 2

Сапфир Олег
2. Социопат
Фантастика:
боевая фантастика
рпг
6.11
рейтинг книги
Идеальный мир для Социопата 2

Внешняя Зона

Жгулёв Пётр Николаевич
8. Real-Rpg
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Внешняя Зона

Идеальный мир для Лекаря 16

Сапфир Олег
16. Лекарь
Фантастика:
боевая фантастика
юмористическая фантастика
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 16