Перевод статьи Района Вильямса «I Don’t Know».
Разработка программ это огромное поле деятельности. Есть люди, занимающиеся фронтендом и бэкендом, специалисты по базам данных, архитекторы и инженеры. У кого-то хорошие soft skills, и задача этих людей – общаться с инженерами. И есть множество других специалистов, количество которых просто ошеломляет. С учетом того как быстро развиваются технологии, становится достаточно сложно уследить за всем происходящим в вашей собственной сфере деятельности, не говоря уже об огромном мире вокруг вас.
Я написал этот пост, чтобы люди поняли: не знать чего-нибудь это совершенно нормально. И часто простое «Я не знаю» может сделать чью-то жизнь гораздо проще.
Почему вы не знаете?
Разработка ПО это невероятно обширная сфера деятельности, своего рода сеть. Встроенные системы, сети, фронтенд, бэкенд, машинное обучение, веб-сервисы, архитектура, CSS, мобильная разработка и многое другое являются ячейками этой сети.
Число ячеек безгранично, а на основе каждой из них вполне можно построить всю свою карьеру. Все они постоянно развиваются, в них появляются новые свойства, языки, парадигмы и шаблоны. Невозможно успевать за всем этим, нечего даже и мечтать.
Поэтому даже не пытайтесь.
Научитесь периодически говорить «Я не знаю». Думайте об этом не как о слабости, а как о силе и инструменте, с помощью которого можно сохранить свое время, силы и нервы.
Отставляя в сторону свою гордость и признавая, что можете чего-то не знать, вы немедленно становитесь на шаг ближе к решению своей проблемы.
Скажем, вы только что закончили университет. Вы были в числе первых учеников на вашем курсе, общаетесь «на ты» с людьми из топовых технических компаний страны и способны написать любой алгоритм и решить любую головоломку, связанную с программированием.
Пока все было легко, но, устроившись на первую работу в должности инженера, вы поняли, что знать что-либо еще не значит быть способным решать настоящие проблемы. Вы провели часы, отрабатывая оптимизацию красно-черных деревьев для прохождения собеседований с помощью белой доски. Но это умение совершенно бесполезно, когда вас просят «обновить CSS и решить проблему с z-index».
Вы можете списать свое незнание на то, что к такой теме вы не готовились и вообще только начинаете работать в этой сфере. Вы можете провести несколько часов, оттачивая свои знания z-indexes и в конечном итоге, разобравшись, почувствовать себя на вершине мира. И будете так себя чувствовать по крайней мере до следующего прилета «крученого мяча», когда подобная ситуация повторится.
Суть в том, что разработка ПО развивается слишком быстро и по слишком многим направлениям, чтобы вы могли за всем уследить. Так что и не пробуйте.
Почему вы думаете, что мне не нужны эти знания?
Изучение нового отнимает время и силы, требует определенной практики и экспериментирования. Построение программ, вопреки тому что показывают в кино, редко является результатом индивидуальных усилий.
Если вы занимаетесь разработкой на профессиональном уровне, вашим коллегам и работодателям, в общем-то, плевать на то, что вы знаете 100 языков программирования, можете вслепую написать алгоритм сортировки слиянием или точно знаете, для чего служит ключевое слово volatile в C#. Им просто нужен кто-то, способный делать следующее:
- решать проблемы;
- быть командным игроком;
- выполнять работу.
Я даже передать не могу, насколько эти способности важны в ежедневной работе разработчика. И хотя напрямую с технической частью связаны только две из них, третья – умение работать в команде – вероятно, является самой важной. Кроме того, этому не учат в университетах, на курсах или где-либо еще.
Технические способности играют большую роль в вашей карьере, но они даже отдаленно не столь важны, как умение загуглить что-то и хорошо сотрудничать с окружающими.
За время своей карьеры вы наверняка столкнетесь с совершенно потрясающими разработчиками, которые произведут на вас неизгладимое впечатление. Главным образом они стали такими хорошими специалистами потому, что «отметили галочками» все три пункта, упомянутые выше, а вовсе не потому, что вызубрили каждое ключевое слово вашего любимого языка программирования.
Задача разработчиков – создавать добавленную стоимость путем выполнения нужных работ. Иногда мы можем просто знать, как решается какая-то проблема. Но чаще мы просто открываем новую вкладку в браузере и ищем пост блога, страницу Stack Overflow или какую-нибудь ветку форума по нашей технологии, которые помогут нам разобраться.
Не пытайтесь удерживать всё в памяти, если вам не нужно по какой-то причине это делать. Вместо этого лучше сосредоточиться на изучении того, где в случае необходимости можно найти ответы.
Все остальные тоже не знают всего
Стоит помнить, что если вы не знаете всего, то и другие люди не знают тоже. Вы не одиноки, и вероятно, это касается не только конкретной проблемы, с которой у вас вышла загвоздка, но и большинства вещей.
Даже у самых лучших разработчиков бывают дни непродуктивного труда, с бессчетным количеством часов, зря потраченных на бесполезные поиски. Стоит заглянуть в Twitter и вы найдете инженеров самого крупного калибра, разглагольствующих о том, что забыли какое-то ключевое слово или команду, или о том, что они весь день убили на решение какой-то проблемы с CSS. Это случается со всеми нами, это просто обычная часть нашей работы по созданию программ.
Старайтесь научиться искать и находить решение проблем вместо того чтобы пытаться удержать все в памяти. Это сохранит ваше время, силы, умственную энергию и даже здоровье.
Не огорчайтесь, когда вам случается столкнуться с задачей, решения который вы не знаете заранее. Найдите утешение в том факте, что большинство других разработчиков, от джуниоров до сеньоров, тоже оказываются в подобных ситуациях. Они, как и вы, открывают свой любимый браузер и пытаются найти верное решение встретившейся им проблемы.
Просто знайте, что если вы не знаете ответ, то скорее всего большинство из нас тоже его не знает, и это совершенно нормально.
[customscript]techrocks_custom_after_post_html[/customscript]
[customscript]techrocks_custom_script[/customscript]