Перевод статьи Ивана Нето “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, чтобы устроиться на работу. После я все-таки сумел получить очень хорошую должность, чему был очень рад, поскольку если бы я отказался, найти другую было бы нелегко. А работа моего друга была не такой хорошей, но он быстро ее сменил. Так что во всем есть свои плюсы и минусы.
Технологии
Все вышесказанное касается и технологий, но если вы ограничиваете свои знания какой-то областью, то какие бы технологии вы ни хотели изучать, они будут попадать в определенную категорию. Это такие группы технологий, как:
- Те, с которыми мы работаем.
- Имеющие отношение к тем, с которыми мы работаем.
- Дополняющие их.
- Те, с которыми просто хотим поиграться.
- Те, для изучения которых у нас есть возможности.
Как веб-разработчик я работал с языком Python, фреймворком Django как сопутствующей технологией и MySQL, PostgreSQL, Redis, Javascript в качестве дополняющих. В основном, это и был мой стек. Я возился со Swift, потому что хотел изучить iOS-разработку и имел хорошие возможности с Pyramid.
Возможности
Одно из самых важных качеств профессионала – его редкость. Технологии играют большую роль, если вы хотите быть специалистом, за которог борются компании, а не специалистом, который сам ищет работу.
Вокруг есть множество разработчиков на Python. Но с опытом работы с OpenCV и технологиями, связанными с OCR, их уже не так много.
Я всегда был склонен изучить что-то новое, если выпадал шанс, или заняться чем-то, от чего другие разработчики отказываются. Однажды я изучил legacy-сисему, которую поддерживал только один человек в компании, и когда он ушел в отпуск, я смог ею заняться. Понемножку я забрал у него роль «поддерживателя legacy-системы», так что он смог заняться более важными вещами, а я тоже стал необходим компании. Когда нам пришлось эту систему перестроить, я знал большую часть бизнес-правил компании.
Еще одна важная вещь, помогающая учиться быстрее, это ревью кода. Даже если вы джуниор, вам стоит делать ревью кода сеньоров. Просто задавайте вопросы о реализации, подходе или бизнес-правилах. Затем запустите код локально и поиграйте с изменениями. Проверьте модули, классы, возвраты функций. Это очень поможет вам как специалисту в вашем росте.
Рынок
Чтобы повысить свои шансы на получение больших возможностей и чтобы продолжать оставаться редким специалистом, полезно следить за тем, что происходит на рынке труда.
Если мы посмотрим на период с 2000-х до настоящего времени, мы увидим эволюцию веба. Легко заметить восхождение многих профессий, имеющих отношение к добавлению насыщенных приложений, аудио и видео. В этот период мы наблюдали приход эпохи смартфонов и специализации на разработке мобильных приложений. У нас также был фронтенд-бум со множеством возможностей для Javascript-фреймворков, чатов и домашней автоматизации, большими данными, наукой о данных. Из более недавнего – прогрессивные веб-приложения, криптовалюты и блокчейн.
Дополнительные вопросы
Стоит ли попробовать более научную карьеру?
Это зависит от вашего бэкграунда. Если у вас уже был опыт работы с бумагами, вам будет проще. Или, если вам нравится заниматься анализом данных, можно найти связанную с этим работу.
Что такое «ранг» разработчика?
Четкого определения нет. Следующие посты могут дать представление об этом:
- «7 рангов в разработке: кодер, программист, информатик, разработчик, инженер, архитектор».
- «Объяснение 19 типов разработчиков».
Корпорация или стартап?
Чтобы понять, что вам подходит, вам стоит попробовать и то, и другое. Я сначала попробовал стартап, потому что так у меня было больше свободы и работа в различных сферах, а в крупной компании таких возможностей у меня не было бы. Я общался с клиентами, проводил презентации, собирал требования, реализовывал решения, занимался развертыванием, работал даже с финансами компании.
Стоит ли попробовать удаленную работу?
Конечно. Я работал удаленно семь лет и еще четыре года — как часть Toptal, и могу сказать, что найти удаленную работу действительно легко. Даже нетехнические компании начинают нанимать удаленных сотрудников, и это неплохо работает. Кто-то нанимает удаленных специалистов на определенное время, у кого-то есть как удаленные сотрудники, так и работающие в офисе, а есть и полностью распределенные компании, где даже директор работает удаленно!
Если хотите попробовать работу такого рода, почитайте эту статью.
Вот список мест, где можно найти удаленную работу:
- Toptal – https://www.toptal.com/#book-tested-programmers
- Hackhands – https://hackhands.com/
- Vanhack – http://www.vanhack.com/
- Remote OK – https://remoteok.io/
- Upwork – https://www.upwork.com/
- BairesDev – https://www.bairesdev.com/
- AngelList – https://angel.co/
- Remote.com – https://remote.com/
- Codementor – https://www.codementor.io/
На этом всё
В этом посте много моих личных мнений и опыта, но надеюсь, он будет вам полезен. Если с чем-то несогласны или хотите дополнить — блок комментариев к вашим услугам!
[customscript]techrocks_custom_after_post_html[/customscript]
[customscript]techrocks_custom_script[/customscript]