Советы опытного разработчика новичкам

Перевод статьи Ивана Нето “What I’d like to hear from an experienced developer when I was a beginner”.

Советы опытного разработчика: языки, технологии, работа

В студенческие годы мы задумываемся над будущей работой и задаемся вопросами:

  • Какой язык программирования выучить?
  • Стоит ли гнаться за научной карьерой?
  • Какие виды профессий связаны с технологией, с которой я хотел бы работать?
  • Куда пойти работать? В компанию какого рода?
  • Что изменилось в последнее время?
  • И многими другими…

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

Языки программирования

Этот вопрос, конечно, задается наиболее часто. Стоит мне изучать Java? Python? C? Ruby? Javascript? XYZ? А может, нужно учить все языки мира?

Имеет ли значение язык?

Короткий ответ: нет.

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

Пару лет назад я учил Python, а мой друг – Java. Он быстро нашел работу, а я нет. Мне нравился Python, а он выбрал Java, чтобы устроиться на работу. После я все-таки сумел получить очень хорошую должность, чему был очень рад, поскольку если бы я отказался, найти другую было бы нелегко. А работа моего друга была не такой хорошей, но он быстро ее сменил. Так что во всем есть свои плюсы и минусы.

Технологии

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

  1. Те, с которыми мы работаем.
  2. Имеющие отношение к тем, с которыми мы работаем.
  3. Дополняющие их.
  4. Те, с которыми просто хотим поиграться.
  5. Те, для изучения которых у нас есть возможности.

Как веб-разработчик я работал с языком Python, фреймворком Django как сопутствующей технологией и MySQL, PostgreSQL, Redis, Javascript в качестве дополняющих. В основном, это и был мой стек. Я возился со Swift, потому что хотел изучить iOS-разработку и имел хорошие возможности с Pyramid.

Возможности

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

Вокруг есть множество разработчиков на Python. Но с опытом работы с OpenCV и технологиями, связанными с OCR, их уже не так много.

Я всегда был склонен изучить что-то новое, если выпадал шанс, или заняться чем-то, от чего другие разработчики отказываются. Однажды я изучил legacy-сисему, которую поддерживал только один человек в компании, и когда он ушел в отпуск, я смог ею заняться. Понемножку я забрал у него роль «поддерживателя legacy-системы», так что он смог заняться более важными вещами, а я тоже стал необходим компании. Когда нам пришлось эту систему перестроить, я знал большую часть бизнес-правил компании.

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

Рынок

Чтобы повысить свои шансы на получение больших возможностей и чтобы продолжать оставаться редким специалистом, полезно следить за тем, что происходит на рынке труда.

Если мы посмотрим на период с 2000-х до настоящего времени, мы увидим эволюцию веба. Легко заметить восхождение многих профессий, имеющих отношение к добавлению насыщенных приложений, аудио и видео. В этот период мы наблюдали приход эпохи смартфонов и специализации на разработке мобильных приложений. У нас также был фронтенд-бум со множеством возможностей для Javascript-фреймворков, чатов и домашней автоматизации, большими данными, наукой о данных. Из более недавнего – прогрессивные веб-приложения, криптовалюты и блокчейн.

Дополнительные вопросы

Стоит ли попробовать более научную карьеру?

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

Что такое «ранг» разработчика?

Четкого определения нет. Следующие посты могут дать представление об этом:

Корпорация или стартап?

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

Стоит ли попробовать удаленную работу?

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

Если хотите попробовать работу такого рода, почитайте эту статью.

Вот список мест, где можно найти удаленную работу:

  1. Toptal — https://www.toptal.com/#book-tested-programmers
  2. Hackhands — https://hackhands.com/
  3. Vanhack — http://www.vanhack.com/
  4. Remote OK — https://remoteok.io/
  5. Upwork — https://www.upwork.com/
  6. BairesDev — https://www.bairesdev.com/
  7. AngelList — https://angel.co/
  8. Remote.com — https://remote.com/
  9. Codementor — https://www.codementor.io/

На этом всё

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


[customscript]techrocks_custom_after_post_html[/customscript]
[customscript]techrocks_custom_script[/customscript]

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх