Какой проект был для тебя самым сложным?
В основном занимаюсь собственными проектами. Часто идеи приходят уже во время создания или даже после. Добавлять в проекты что-то новое бывает довольно сложно. Намного проще, когда есть узкое ТЗ или готовая схема проекта с расписанным необходимым функционалом. Из функций, генерация ЧПУ (и обратное считывание ЧПУ ссылки) совместить с изменением страницы без её перезагрузки – пришлось повозиться.
Были ли разочарования (ожидание и реальность)?
Конечно, когда проекты оказываются не востребованы.
Приходилось ли сталкиваться с прокрастинацией, выгоранием?
Всю жизнь. Связана ли веб-разработка с этим? Скорее, на данный момент больше помогает. Как способ переключиться от одной деятельности к другой.
Где черпал вдохновение?
Насколько мне известно, никто не знает ответа на этот вопрос, сколько бы ни искал. Само приходит: появилась идея, начал думать о ней, что-то фантазировать. Уже не можешь уснуть – и пошел делать.
Что бы ты посоветовал новичкам?
Да я сам новичок. Советую не «забивать» на свои проекты, даже если они сегодня не пользуются спросом. Лучше их развивать, дополнять чем-то иным.
А так, думаю, если нет предрасположенности к сфере «айти»: интереса понять, как что-то работает, желания иметь возможность на это повлиять, то не имеет смысла этим заниматься. Сегодня почти все профессии плюс-минус могут приносить хороший заработок. Лучше делать что-то в сфере, к которой есть максимальный интерес. Для тех, кому это скучно, вероятнее всего это и останется скучным. Мне в математике всегда нравились формулы, поиск решения и результат. И кайф от того, что нашёл (или сделал, если касается программирования) то, что работает.
5. Умный просто умеет «гуглить»
Именно то, как вы собираете, организуете и используете информацию, определяет, победите вы или проиграете.
Билл Гейтс
Я часто слышу от людей, далеких от «айти» (хотя и не от далеких тоже), следующее: чтобы стать программистом, надо быть в первую очередь очень умным, и якобы не всем это дано. Мол, надо в совершенстве знать алгебру и математику, владеть алгоритмическим и логическим мышлением, знать английский язык (а еще лучше множество языков) и иметь память как у слона (как известно, они славятся исключительной памятью), чтобы выучить, понять и запомнить огромное количество команд и функций (которых сотни или даже тысячи).
Возможно при решении каких-то задач (при написании драйверов устройств под операционную систему или разработки «физики» в RPG-игре) действительно всё вышеописанное нужно знать и всем перечисленным пользоваться. Но на практике для старта в профессии всё это совершенно не обязательно. А секрет в том, что просто нужно уметь пользоваться поиском в интернете, то есть «гуглить» – принцип «обучение во время работы» – по мере поступления задач.
Имея базовое понимания, как устроен язык программирования (об этом поговорим в следующих главах), будь то язык гипертекстовой разметки HTML или скриптовый язык общего назначения PHP, все остальное можно найти в «сети»: как справочник по командам, с описанием каждой команды и в частности искомой вами, так и множество примеров готовых блоков кода для решения конкретной задачи, написанных другими программистами (причем в нескольких вариантах).
Например, можете задать поисковый запрос: «php как округлить число» и тут же получить ответ, с примерами: «для округления чисел в php, есть функция round». Или задать такой поисковый запрос: «css как сделать подчеркивание у текста», и сразу выяснить ответ с примерами: «задайте свойство для элемента text-decoration: underline». Можно сформулировать и поискать решение по более сложному вопросу.
Удивительно, но среди желающих начать свой путь в «айти» много тех, кого останавливает страх перед большим объемом информации, который якобы необходимо знать наизусть. Это конечно неплохо, однако практически невозможно (особенно для новичка). Нет, друзья, гуглят все и постоянно. Я пишу код, и при этом история моего поиска в браузере пополняется десятками запросов, каждый день! Хотя с кодом я работаю большую часть жизни.
В навыке формулировать поисковый запрос и быстро находить нужную информацию и кроется секрет успеха успешного программиста: новичка или профессионала. К счастью, этот навык развивается гораздо проще и быстрее, чем обучение программированию. Профессионал лишь более четко формулирует, а затем «гуглит» решение задач, и уровень их, возможно, несколько сложнее, например: «как оптимизировать архитектуру высоконагруженной базы данных». В этом и кроется одно из его отличий от новичка.
Однако есть важный нюанс! Когда речь идет о поиске решения, не подразумевается, что это решение должно быть готовым, что называется, «под ключ». Совершенно нет! Программу вы пишете условно с нуля и каждую строку кода внимательно обдумываете, а к «всемирной паутине» обращаетесь именно за информацией по части команд или примеров готовых блоков кода. Они лишь могут являться частью проекта. Еще раз – «только команды и блоки кода». Разумеется, глупо было бы говорить о программисте, который вместо разработки проекта и написания кода постоянно ищет аналогичное решение уже кем-то реализованное. Нет, ни в коем случае!
«Поисковая строка» – это быстрый доступ к справочникам и всемирной базе знаний, а не панацея от всех бед. Логика работы программы должна быть всегда в вашей голове!
Вот пример списка поисковых запросов, которые могут быть актуальны при разработке, например, «формы обратной связи» на сайте, функционал которой следующий: «пользователь может указать в форме: тему, текст сообщения и e-mail для связи с ним, затем, нажав кнопку “отправить”, данные отправлялись бы администратору сайта в админпанель и на его e-mail».
Пример списка поисковых запросов:
● Пример HTML-формы для отправки запроса на сервер.
● HTML тег INPUT и его параметры.
● Что такое POST-запрос.
● PHP обработка POST-запроса.
● PHP подключение к базе данных MySQL.
● PHP подготовка данных для вставки в БД.
● PHP пример вставки строки в таблицу MySQL.
● PHP отправка сообщения на E-Mail.
● PHP параметры функции mail ().
● CSS для оформления блока «спасибо за сообщение».
Вы спросите: «Откуда же мне знать заранее, еще до написания программы и вообще не имея опыта, что искать в сети? Вот откуда на начальном этапе мне знать про какую-то там команду mail (), чтобы искать про нее информацию?».
На самом деле все просто. Вам не нужно формулировать сразу весь список вопросов для поиска. Надо лишь сформулировать первый. Просто подумайте, с чего начинается ваша программа? С HTML-формы, куда пользователь будет вводить сообщение. Вот и поищите информацию о ней. Изучая найденный HTML-код, вы увидите в нём теги INPUT, изучите их, также найдя про них информацию. Затем подумайте, что должна делать форма? Верно, отправлять данные на сервер. Поищите информацию, как это сделать, отправить и принять данные. Вы встретите упоминания о POST-запросе – отлично, «погуглите» про него. И так дальше, шаг за шагом, по мере продвижения вашей работы.
Ваша программа готова! Таким образом, просто понимая, какую функцию должна выполнять программа, можно разбить ее алгоритм на последовательность действий, а затем «загуглить», как реализовать каждое из полученного списка. Конечно же найденные результаты требуют осмысления и могут нуждаться в доработке, но именно так реализуется подход «обучение во время работы».