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

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

Как стать разработчиком?Многие люди хотят заниматься веб-разработкой, создавать сайты, писать веб-приложения и зарабатывать этим на жизнь. Это понятно. Программист — одна из немногих профессий, которая обещает быть актуальной и захватывающей до конца времен :)

Вопрос “как стать веб-разработчиком?” не простой и заслуживает отдельного внимания, но в данном пункте я хочу сказать только об одной важной детали, без которой стать хорошим разработчиком почти невозможно.

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

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

Если у вас есть сильное желание создавать сайты и серьезные веб-приложения, а также готовность тратить очень много времени на самообучение, терпеть неудачи, практикуя и изучая язык программирования — то вы имеете самое главное для того, чтобы стать разработчиком!

2. Не занимайтесь веб-разработкой если вы чувствуете, что это не ваше

Я всегда был убежден, что каждый человек должен заниматься своим делом. У каждого человека есть Свыше какие-то дарования и таланты. Не занимайтесь веб-разработкой, если вы не чувствуете тягу к этому делу и вам это не интересно.

Эта профессия предполагает, что вам нравится, то что вы делаете. Ведь вам нужно будет держать “руку на пульсе” и постоянно:

  • смотреть на новые технологии
  • изучать что-то новое
  • интересоваться какие веб-технологии используются в новых стартапах
  • интересоваться трендами веб-разработки

Если вы готовы каждый день погружаться в эту пучину — то скорее всего это ваше!

3. Учитесь программировать на реальных задачах

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

Что я имею в виду под реальными задачами? Это задачи из реального мира, с настоящими бизнес требованиями.

Вы хотите заниматься веб-разработкой? Возьмите пресловутую задачу про “Блог и статьи”. Почему бы и нет?

Ведь когда вы возьметесь реализовывать эту задачу, перед вами сразу станет вопрос: “Как создать блог?”, “На чем писать блог?”, “Использовать просто стандартные возможности языка или обратить внимание на фреймворки?”.

Неважно, будете вы использовать фреймворки или нет, вам придется изучать: HTML и CSS. И на это нужно время.

А если вы коснетесь самого языка веб-разработки и выберете: PHP, Ruby или Python, вам надо будет понять:

  • как создавать базу данных
  • как добавлять новые записи в базу данных
  • как извлекать записи из базы данных
  • как отобразить новые статьи на главной странице

Таким образом, вы будете изучать именно то, что вам нужно для реализации, поставленной задачи. Это довольно, эффективный метод обучения.

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

4. Интересуйтесь какие навыки нужны работодателям и что происходит в сообществе разработчиков

Однажды я зашел на сайт одного известного IT блоггера, который занимается веб-разработкой в известной компании. На тот момент он уже был старшим разработчиком (Senior Developer).

В то время я варился в своем фрилансовом мирке и занимался разными задачами, в том числе разработкой на известных CMS системах: Joomla, Битрикс. По большой части, то что я делал можно было бы назвать gКодом. Мне и сейчас кажется что написать более менее нормальный код на CMS системе сложно.

Так вот, на сайте этого блоггера была статья типа “Требования к Junior-разработчику”.

Я посмотрел на эту статью и понял, что абсолютно не соответствую этим требованиям и не пригоден даже для позиции Junior. Хотя на тот момент я работал разработчиком уже около 2-3 лет.

Я был очень удивлен. Оказалось, что моя “квалификация” была ничтожной по сравнению с тем, что требовалось той компании. И это были требования к Junior, даже не к Middle.

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

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

Даже если вы не знаете большинства из требуемых технологий, то вы можете создать и даже запустить свой тестовый проект на котором попытаетесь внедрить требуемые технологии и приобрести какой-то опыт.

Что касается сообщества разработчиков: очень полезно смотреть что происходит в сообществах, выбранного вами языка. Это вам также поможет понимать какие технологии или фреймворки популярны на данный момент. Вы сможете двигаться в правильном направлении и не отставать от сообщества.

Например, если взять язык PHP и задаться вопросом “какой php фреймворк выбрать?” или “популярные php фреймворки” то вы заметите, что в топе сейчас Laravel, Symfony, Yii и Phalcon и если вы выберите один из них, то вы, как минимум, получите инструмент за которым стоит активное и большое сообщество разработчиков.

5. Фриланс: быть или не быть?

Фриланс: быть или не быть?Оглядываясь назад, мне конечно хотелось бы, как-то избежать фриланса и не искать предложений на фриланс-биржах, а сразу найти работу своей мечты. Но с другой стороны, мне сложно представить, чтобы начинающий разработчик как-то миновал стадию фриланса и сразу после самообучения устроился бы в компанию, которая занимается профессиональной веб-разработкой.

Как бы там ни было, у фриланса есть свои плюсы и минусы.

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

Однако, часто бывает человек устраивается на позицию Junior, минуя фриланс.

Например, первая работа, которая у меня была — это веб-студия, которая занималась типовыми сайтами, чаще на CMS-системе “Битрикс”. Платили, мне как джуниору, конечно, очень мало. Но я был очень рад этой работе и приобрел там хороший опыт.

Сейчас понимаю, что в этом вопросе “крутить носом” — не стоит. Если у вас совсем нет опыта работы и есть предложение придти на позицию джуниора — надо идти! Даже, если по-началу платить вам будут совсем мало.

Начать работать фрилансером — это неплохая идея, только советую тут не задерживаться, особенно, если вы php-разработчик. Почему? Читайте дальше.

6. Не дайте сайтам-визиткам погубить ваш профессиональный рост!

Не дайте сайтам-визиткам погубить ваш профессиональный рост!Как я уже упоминал выше, в моей первой веб-студии, мы занимались потоковыми, конвейерными сайтами.

Немного позже, я ушел на фриланс.

А еще позже, мой друг пригласил меня на удаленную работу в одну маленькую американскую компанию, которая разрабатывала и продавала свою CMS систему для управления каталогами ссылок. Тем не менее, это система была написана на низком уровне. Она была устаревшей. В той CMS не использовались современные фреймворки и она была далека от Best Practices PHP проектов.

Так сложилось, что долгое время я находился в плену у работодателей которые выпускали типовые сайты и сайты-визитки :)

Многие из вас спросят: “Ну и что? А в чем тут проблема?”, “Ведь и сейчас можно неплохо и стабильно зарабатывать, создавая такие сайтики и жить себе припеваючи?”

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

Например, представим программиста который долгое время работает с системой “Битрикс” или WordPress. В один прекрасный момент такой разработчик перестанет профессионально развиваться. Ведь ему не надо думать о каких-то методологиях или паттернах проектирования. У него есть конкретный API, который предоставляет CMS система и все что он делает это просто использует готовые фукнции или методы. Может быть иногда расширяет существующее API, которое, как правило, написано “так себе”.

Разработчик не может выйти за рамки этой системы и это откладывает большой отпечаток на его мышление. Например, такой человек не может себе позволить начать разрабатывать приложение, используя подход DDD (Domain Driven Design). Почти невозможно будет внедрить и автоматические тесты вместе с сервером непрерывной интеграции. Т.е. все самое лучшее, что накопилось в мире веб-разработки к CMS системе применить очень сложно.

В обычных сайтах-визитках почти невозможно встретить технологии которые используются на высоконагруженных проектах. Таким образом, вы не получите опыт который вы могли бы получить, работая на проекте с большими нагрузками.

7. Минусы языка PHP

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

Если бы у меня была возможность отмотать время назад, я не уверен на 100%, что выбрал бы PHP. Почему?

Ответ примерно в той же плоскости. На PHP гораздо легче написать код, от которого будут потом “плеваться” другие разработчики. Так уже устроен язык.

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

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

Если вы выберете Ruby или Python, тем более Java, то вы скорее всего будете работать с интересными и сложными проектами, которые не ограничиваются просто 5-ти страничным сайтом-визиткой какой-то компании.

Еще один немаловажный момент — это зарплата. Оплата труда Ruby, Python, а тем более Java программистов, будет на голову выше чем у пхпешников. Чтобы получать такую же зарплату как в Ruby и Python мире, PHP-разработчику придется накопить немалый опыт и уметь подтвердить свои навыки.

В конце скажем так: если вы присматриваетесь к PHP, не останавливайте свой выбор только на нем. Обратите внимание и на другие популярные языки программирования.

Если вы выбрали PHP — то старайтесь писать качественный код и ориентируйтесь на лучшие практики, принятые в нашем сообществе. Если Вас интересует тема качественного PHP кодинга, пишите в комментариях, я сориентирую вас, куда можно посмотреть и что почитать на эту тему. Давайте общими усилиями поднимать профессиональный уровень PHP-разработчиков!

8. Почему командная разработка лучше фриланса?

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

Командная разработка очень способствует профессиональному росту. Например, если вы джуниор, то дорасти до мидла вы сможете за короткое время. Если команда разработчиков толковая — то вам будут постоянно делать Code Review (обзор и критика кода). Если нужно, будут “бить линейкой по рукам” и говорить как делать не надо! Рядом с вами всегда будет человек опытнее вас, у которого всегда можно спросить совет.

Командная разработка поможет вам не варится в собственном соку и не придумывать велосипеды, которые уже давно созданы сообществом.

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

И именно на фрилансе чаще всего можно встретить “проекты”, которые не будут способствовать вашему профессиональному росту. Тут я имею в виду проекты типа “Сайт-визитка”, “доделать какой-то скрипт”, “поправить ссылку на странице” и т.д.

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

9. Умейте признавать свою некомпетентность

https://flic.kr/p/7NyVye

https://flic.kr/p/7NyVye

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

Человек не может знать и уметь всё. Это вполне нормально, если вы как специалист чего-то не знаете или не умеете.

Фокус в том, что часто нам стыдно признать свой недостаток, или незнание, или отсутствие опыта. И надо сказать — этот стыд ложный. Иногда, вместо того, чтобы сказать “видимо у меня недостаточно опыта в этом вопросе, нужно посоветоваться с более опытными людьми”, мы можем тянуть время и приносить вред своей компании.

Не так давно у нас была ситуация, когда мы взялись переписывать проект “Предание.ру” на фреймворке Symfony. Сайт работает на “Битриксе”, но один из сервисов уже запущен на новом фреймворке.

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

На этот счет мне в dou.ua сообществе дали замечательный совет:

“Не можешь найти решение сам — поговори с командой, хоть ты и супер-пупер синьёр тим/тех мега лид, ты — человек и не можешь знать всё. Команда не нашла ответ — не теряй время, обратись к экспертам/более опытным товарищам.”

Alexandr Sova

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

10. Не пренебрегайте книгами по программированию и разработке

Не пренебрегайте книгами по программированию и разработкеСейчас я жалею о том, что читал мало хороших книг по программированию и веб-разработке.

Зачем программисту, который “штампует” сайты на CMS системах знать о паттернах проектирования и современных подходах к веб-разработке?

В свое время я, к сожалению не мог задать себе такой вопрос потому что сам занимался больше “штамповкой” чем серьезной разработкой. Но все-таки осталось некоторое сожаление, что такие темы как:

  • паттерны проектирования
  • архитектура веб-приложений
  • современные подходы и методологии разработки
  • тестирование
  • сервер непрерывной интеграции
  • системы контроля версий

и многие другие вопросы очень долго не вставали передо мной (кстати, думаю, что эта проблема очень распространена в PHP мире).

Заинтересоваться этими темами нужно, особенно если вы находитесь на стадии “штамповки” сайтиков.

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

Заключение

10 лет работы разработчиком пролетели быстро. Это было очень интересное время. Время новых открытий, успехов и неудач.

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

Если у вас есть вопросы, мысли, замечания или желание продолжить этот список — жду вас в комментариях!

p.s. Если вам понравилась статья, пожалуйста, поделитесь ей с друзьями в соц. сетях!