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

Я знаю, что IT-специалист должен обладать продвинутыми техническими умениями. Знаю я и то, что “гибкие навыки” имеют для него первостепенное значение. Вы работаете в команде, проводите спринты, выполняете привычные процедуры, узнаете больше о разрабатываемом продукте, который будет (или не будет) запущен в производство, применяете различные уровни тестируемости, решаете, какой шаблон проектирования лучше подходит для каждого отдельного случая, применяете конкретную технологию, исследуете потребности рынка… При этом каждая деталь кажется важной, и в то же время это не совсем так.

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

Без появления больших данных вы сейчас даже не могли бы прочитать о машинном и глубоком обучении. Без таких технологий, как 4g и 5g, развитие мобильной связи пошло бы в другом направлении. Подобных примеров можно привести великое множество. Существует невидимая цепь, которая соединяет события. Один шаг влечет за собой следующий, а некоторые шаги приводят к прыжкам.

А что насчет меня? У меня не так много времени  —  в моих сутках всего 24 часа. По какому пути мне следует идти, какие технологии использовать, какие области исследовать?

Объем знаний человечества растет в геометрической прогрессии. Я и мои коллеги только начинаем получать поверхностные представления о многих вещах. Мы  —  Википедии в миниатюре. Все тонко. Все поверхностно. Мы узнали достаточно, чтобы применить на практике только те небольшие порции знаний, которые нам нужны. Результат этого очевиден. Кто же мы? Мастера на все руки? Специалисты с ограниченными возможностями? Любители на дотациях?

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

Еще одна проблема  —  это динамика различных технологий, которые часто кажутся противоречащими друг другу. Могу ли я создавать технологии для человечества, не тратя при этом время на их изучение?

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

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

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

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

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

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

Вы, должно быть, знаете, что простота  —  это не значит упрощение до примитива. Чтобы знать, как сделать что-то простым, мы должны иметь глубокое понимание того, что мы делаем.

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

И поэтому я поступаю так, как считаю нужным. В процессе учебы стараюсь отвлекаться от всего, что может мне помешать. Стараюсь быть легким на подъем, всегда готов идти по самому продуктивному пути. Не испытываю страха, свободен от предубеждений, уважаю более опытных коллег и готов работать в команде, как будто бы это была моя семья.

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

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

Читайте также:

Читайте нас в TelegramVK и Яндекс.Дзен


Перевод статьи Josef Cruz: The Real Way to Become a Good Programmer

Предыдущая статья9 странностей Python для C++ программистов
Следующая статья19 лучших инструментов прототипирования для дизайнеров UX/UI