Веб-разработчик. Легкий вход в профессию
Роман Чернышов
Книга, которая позволит быстро вникнуть в суть профессии веб-разработчика, познакомиться с основами, узнать о возможных путях заработка, включая фриланс и собственные проекты, а также освоить технологии на практике, реализовав свой первый проект с последующим оформлением его в виде готового конечного продукта.Книга написана простым языком, каждая глава раскрывает определенную тему. Также присутствуют истории из личной практики и интервью с профессионалами из мира «айти».Обложка книги нарисована самостоятельно, исключительное право на изображение обложки и все ее элементы принадлежат автору книги.
Роман Чернышов
Веб-разработчик. Легкий вход в профессию
Посвящается моим родителям, Татьяне и Вячеславу,
которые вовремя увидели мои устремления и интересы,
и делали все, чтобы я мог свободно развиваться.
Аннотация
Книга, которая позволит быстро вникнуть в суть профессии веб-разработчика, познакомиться с основами, узнать о возможных путях заработка, включая фриланс и собственные проекты, а также освоить технологии на практике, реализовав свой первый проект с последующим оформлением его в виде готового конечного продукта.
Книга написана простым языком, каждая глава раскрывает определенную тему. Также присутствуют истории из личной практики и интервью с профессионалами из мира «айти».
Вступление
На протяжении многих лет я занимаюсь любимым делом – программированием, а если точнее, – веб-разработкой. Профессионально трудиться в этой сфере я начал в 2009 году – создавал простые сайты, писал скрипты или исправлял ошибки в существующих. При этом первую программу на «бейсике» написал в далеком 1998 году, еще будучи школьником. Первые заказы, за которые я получал оплату, приходили с фриланс-биржи. Затем я завел тематический блог о веб-разработке, и заказы уже пошли оттуда. Также за короткий срок мне удалось обзавестись постоянными клиентами, которые, к слову, неустанно продолжают приглашать меня в свои проекты по сей день. Параллельно с этим занимался разработкой собственных проектов, различных скриптов, утилит, нишевых CMS-систем, – некоторые из них со временем стали достаточно популярны. Так я основательно связал жизнь с веб-разработкой, что позволило мне за эти годы накопить много уникального опыта. Им я и хочу поделиться с вами в этой книге.
Бытует мнение, что быть программистом – достаточно сложная работа, а «фриланс» или свои проекты, как правило, денег не приносят. Я слышу подобное от читателей моего блога, знакомых, товарищей и друзей, которым очень хотелось бы войти в «айти», однако их всегда что-то останавливает. Как говорится, «и хочется и колется». Возможно, так и есть, чей-то профессиональный путь в «айти» закончился, не успев начаться, что подтверждают мои наблюдения: после окончания учебы на программиста, в профессии остается лишь 5–7% учащихся. Наверное, у каждого из вас есть знакомый, отучившийся на программиста, и сейчас работающий не по профессии? А кто-то всегда хотел погрузиться в «айти», но, испугавшись сложностей, просто прошел мимо. Профессиональных фрилансеров тоже не так уж и много. В итоге, со стороны складывается следующая картина: быть программистом, веб-разработчиком не каждому дано, и якобы для этого нужно обладать какими-то уникальными способностями.
Мой путь и опыт говорят об обратном! Порог входа, на самом деле, не так уж и высок, стать профессиональным веб-разработчиком, я уверен, способен каждый. Для этого нужно лишь немного желания и усидчивости. Да, возможно, путь до уровня «сеньор» займет годы, но первые хорошо оплачиваемые проекты вы сможете реализовать гораздо раньше.
Веб-разработчик – это не только создатель сайтов, как многие думают. Это специалист, которому подвластно гораздо больше. Сегодня, как никогда, технологии, использующиеся для разработки сайтов, применяются для разработки и мобильных приложений, и консольных программ для ПК, и специализированных утилит, и много чего еще. С помощью языков программирования, таких как HTML и CSS, которые ранее служили для оформления страниц сайтов, сегодня создаются профессиональные интерфейсы для различных устройств. А PHP, будучи языком гипертекстовой разметки, стал полноценным языком общего назначения, позволяющим создавать утилиты для работы с сетевыми протоколами или приложений, работающих в фоновом режиме («демоны») операционной системы Linux.
В этой книге я хочу рассказать вам о своей профессии, о том, как стать веб-разработчиком, какие у данной профессии преимущества и недостатки, поделиться общей философией, взглядом на различные, в том числе, жизненные аспекты. Возможно, что-то покажется забавным, а что-то даже абсурдным, и тем не менее, все, о чем я буду дальше писать, является моим пережитым опытом. Я уверен, он поможет и вам легко войти в профессию!
Кому подойдет эта книга? Всем, кто хочет познакомиться с профессией веб-разработчика и сделать первые шаги, независимо от возраста, будь то школьник или взрослый, реализовавшийся в другой профессии и желающий освоить что-то новое.
Книга разделена на три части. Первую я назвал «Перспектива». В ней речь пойдет о возможностях, которые открываются перед человеком, вставшим на путь веб-разработчика, о его преимуществах и недостатках, и немного о финансах – посчитать ведь все любят? Вторая часть – «Практика». В ней я предлагаю познакомиться с технологиями поближе, а также попробовать кое-что «написать». Цель – показать новичку, что веб-разработка – это не сложно, и 80% успеха заключается в достаточно «простых практиках». Третья часть – «Погружение», в ней я рассказываю о «буднях» веб-разработчика, делюсь полезными советами, рассказываю о сложностях, которые могут возникнуть, и как их преодолеть, и о том, что кроме компьютерных технологий включает в себя моя профессия.
Моя цель написания книги – помочь вам сделать первый шаг в мир веб-разработки, или немного больше, в мир бизнеса, основанного на веб-разработке. Показать, что это не сложно, и любой человек, независимо от возраста и пола, на любом этапе жизни может стать успешным программистом. Уверен у вас все получится, желаю вам приятного чтения!
1. Почему «айти» – это лучшее ремесло
Разве мы здесь не для того, чтобы
оставить след во Вселенной?
Стив Джобс
Вы, наверное, не раз слышали о преимуществах работы в сфере «айти»: и высокие зарплаты (конечно же, куда без них), и высокий спрос на специалистов в общем и веб-разработчиков в частности (среди именитых компаний), и соцпакет, и замечательные условия работы (все же были в офисах Google или Яндекс? Я нет, если что…), и возможность удаленной работы, и интересные задачи, и проекты, и новые передовые технологии, да и вообще работа не пыльная и достаточно престижная…
Прежде всего хочу сказать: всё, что я выше перечислил, возможно, и есть, но лично для меня это – чушь! Выбирать свой путь, свое ремесло, свое призвание из-за возможности удаленной работы? Или высокой (мифической) зарплаты? Или какого-то соцпакета? Предположим… Однако это не мой случай… Я последние полтора десятилетия, что называется, «работаю на себя», занимаясь разработкой собственных проектов, а также реализую проекты клиентов, пришедших ко мне по рекомендациям: из блога или с фриланс-биржи. То есть большинство всех «плюшек» я не видел, мне они неинтересны, и менять я ничего не собираюсь.
Дак что же такое работа в «айти» именно для меня? Работа с высокими технологиями может быть разной: можно быть системным администратором, можно писать высокоуровневый код на C++, можно быть дизайнером UI-интерфейсов. Я же являюсь веб-разработчиком: пишу код, работаю с базами данных, верстаю страницы, администрирую серверы и много чего еще. Но все это лишь инструменты в моих руках.
А работа для меня начинается там, где начинается творческий процесс! Там, где возникает идея, где она начинает обрастать все большим и большим количеством деталей, смыслов, функций в конце концов. Буря мыслей, эмоций, переживаний – и вот очередное озарение! Затем идея переносится в текст и формируется техническое задание. Потом подготовка, сбор информации, разработка архитектуры кода и баз данных, визуализация и – скорее, скорее к первому прототипу! И вот я уже пишу код днями и ночами – работа кипит.
Для меня работа в «айти» – это возможность реализовать свои идеи, дав им жизнь и подарив их людям! Вы представляете? Обладая знаниями и навыками программиста, можно из ничего, просто имея под рукой любой компьютер (хоть печатную машинку), находясь в любой точке планеты (хоть на дрейфующей льдине) взять и написать программу, которая будет тиражами (тиражами, друзья!) расходиться среди пользователей и делать их жизнь лучше, удобнее, комфортнее, приносить им прибыль в конце концов! Ваша программа продолжит жизнь без вас, у нее начнется свой путь… Вы же как автор будете поддерживать ее, давая лучшее (лучшие идеи, лучшие решения), и однажды отпустите в самостоятельное плавание в океане под названием «интернет».
Что это значит для меня? Я словно становлюсь отцом, отцом своего творения (которое размножается путем простого копирования), пусть и не всегда красивого, быстрого и всем понравившегося. Но именно так, методом проб и ошибок, я реализую собственные идеи, одна из которых, возможно, снова «выстрелит», позволив мне вершить свою миссию! А она, в свою очередь, заключается в том, чтобы делать с помощью разработанного мною программного обеспечения, жизнь окружающих людей, компаний, страны и – как бы это высоко не звучало – мира чуточку лучше!
А вознаграждение в виде признания или материальных благ, которое будет снова и снова вас находить, уже практически без вашего участия, – приятное дополнение ко всему вышесказанному (о денежных потоках мы еще поговорим в следующих главах). И всё это вместе превращает работу в «айти» в нечто перспективное, в некий шанс реализоваться в жизни, что называется, «на максимум», достигнув высот несколько более значимых чем «машина, квартира, хрен в пол аршина». Альтернатив этому (ремеслу) нет!
И если даже очередной мой проект, моя программа, разработка никому не пригодится, не зайдет, не выстрелит – я буду пробовать еще и еще. Буду прислушиваться к пользователям, оттачивать навыки разработчика, писать «чище» код, продумывать детальнее архитектуру и снова реализовывать проекты, давая им вполне реальную жизнь, делая жизнь пользователей чуточку лучше.
Это и есть основной и главный смысл для меня! Именно поэтому я выбираю путь «айти». И если вы горите тем же желанием, если хотите Творить, приносить пользу людям и быть за это вознаграждены, это лучшее ремесло для достижения ваших больших жизненных амбиций!
P.S. За все те годы работы, что я пишу код, мне уже сложно подсчитать количество проектов, которые я реализовал, но могу с уверенностью сказать: большая их часть были по-настоящему полезны людям, а некоторые очень даже хорошо «выстрелили».
2. И пусть весь мир подождет
Если мы хотим подсчитать количество строк кода,
следует воспринимать их не как написанные,
а как потраченные.
Эдсгер Дейкстра
Работа программиста, как в рекламе йогурта, где красивая девушка ест йогурт, и голос за кадром говорит: «И пусть весь мир подождет». К сожалению в нашем случае речь не о йогурте, а о сознании, которое загружено алгоритмами так, что «колени потеют». И пока мозг трудится, остальной мир существует без вас, ведь вам попросту не до него.
Среди программистов есть те, кто может работать за компьютером дни и ночи напролет, получая от этого гигантское удовольствие на протяжении многих лет. Возможно, они просто интроверты. У них любовь ко всему, что связано с компьютерами, как по части работы, так и развлечений. Что уж там, порой даже отдых и отношения происходят через экран монитора. В итоге формируется такой «особый» образ жизни, что зачастую позволяет человеку стать специалистом высокого уровня в сфере «айти». К сожалению, я так не могу, я больше экстраверт.
Мне для столь длительной работы за компьютером по сей день приходится тренировать в себе целый набор качеств: упорство, усидчивость, концентрацию. Кто-то скажет, что это замечательно, но что за этим кроется? Представьте, какой ценой вырабатывается концентрация, например длительное (порой несколько часов) удерживание в сознании множества факторов, влияющих на работу программы.
Кроме этой информации вы не допускаете в сознание больше никаких мыслей, совершенно. Ни о рабочем месте, ни о помещении, где находитесь, ни о состоянии тела и самочувствии, ни о настроении, ни о других людях или обстоятельствах, ни о чем – совершенно ни о чем, кроме того, с чем работаете. И так – часы и дни напролет.
Представьте, каким чудны?м может быть человек при переключении на другие задачи, когда вроде бы физически уже идет работа над новой задачей, например сходить в магазин за покупками, а мозг еще не отошел от предыдущей (где была максимальная концентрация). Та еще мука (или смех, смотря с какой стороны и чьими глазами смотреть)… Но никуда не деться. Других вариантов просто нет. Как-то оптимизировать или делегировать процесс не получится.
Работая с кодом, человеческий мозг порой можно сравнить с компьютерным процессором, – в зависимости от сложности задачи он начинает нагреваться, а тело с радиатором охлаждения пытается его охладить. Будучи максимально сконцентрированным, неизбежно начинаешь напрягаться и, как следствие, уставать. Концентрация – это напряжение! Да, со временем, с годами, она будет даваться легче, и напряжения будет меньше, однако первое время это просто неизбежно.
И пока вы работаете за компьютером, где ваши любимые, родные и близкие? Например, когда дворник выполняет свой тяжелый труд – метёт двор, – его близкие всегда с ним, в его голове! Понимаете, о чем я? Он может думать о них, может скучать, а если захочет, может просто позвонить, используя гарнитуру Hands Free, совершенно не отвлекаясь от рабочего процесса. Руки заняты одним делом, а мозг – другим: мыслями о близких, предстоящих делах или отдыхе. Его жизнь, со всеми близкими для него людьми и важными событиями, проходит здесь и сейчас. А жизнь программиста? Она там, в максимальной концентрации, в понимании архитектуры, в обдумывании алгоритмов, запоминании переменных. И так продолжается даже в нерабочее время, – сложно оставить работу на работе.
Самое страшное то, что этому нет конца (Испугались?). В отличие от множества других профессий, в «айти» практически невозможно выйти на уровень «всепознания» по одной простой причине – технологии развиваются такими темпами, что выученное сегодня уже завтра может оказаться устаревшим. То есть завтра нужно будет осваивать новую технологию, снова фокусироваться на обучении, максимально концентрироваться на коде и, как следствие, в очередной раз напрягаться. Только так достигается реализация проекта, запуск его «в жизнь» и получение всех связанных с этим «ништяков».
Допустим, с концентрацией у вас проблем нет, может, от природы вы быстро вникаете в суть любого проекта и налету схватываете логику любого алгоритма. А как у вас обстоят дела с усидчивостью? Умение сопротивляться всем внешним факторам, отказываться от мимолетных предложений, вроде устроить кофе-брейк или пойти прогуляться с другом (а может, с красивой девушкой?) в этот чудесный день с солнечной погодой, понимая: таких дней в году не так уж много. Иногда, усидчивость – очень больно…
Упорство, а именно умение «биться головой в стену» до победного. Увы, когда работаете над сложной задачи, шансы, что она будет решена с первого раза, крайне малы. Иногда приходится начинать снова и снова, а затем, после тестирования вроде бы уже полностью готового проекта, еще раз – начинаем снова. На этом этапе хочется просто сдаться, выкинуть компьютер в окно и уехать в горы (кстати, многие так и делают).
Однако программист не имеет права сдаться, алгоритм не может быть не завершен, а программа – написана наполовину. Придется сидеть, думать и снова писать код, лишь изредка ловя себя на мысли: «и пусть весь мир подождет».
3. Три пути разработчика