За последний год 5 разных друзей обратились ко мне с предложением перейти от своей нынешней карьеры к новой в качестве «кодировщика», «программиста», «разработчика программного обеспечения» и/или «обезьяны-кодировщика». Вот что бы я им сказал.
Хорошо! Вы делаете смелый выбор. Преимущества работы инженером-программистом безграничны. Отрасли по всей планете требуют людей, обладающих этими навыками. Карьера обычно хорошо оплачивается. Должности старшего уровня обычно оплачиваются очень, очень хорошо. (Заинтересованы в переезде в Сан-Франциско?). Устроиться на работу можно практически в каждом крупном городе, а в некоторых компаниях даже можно работать из дома.
Небольшое примечание: термины "кодер", "программист", "разработчик программного обеспечения" и "инженер" означают примерно одно и то же. Я также признаю, что не все согласятся. С этого момента я буду использовать термин «инженер», чтобы быть последовательным.
Как я узнаю, смогу ли я это сделать?
Есть несколько основных качеств, которыми обладал каждый действительно хороший инженер, с которым я когда-либо работал. Возможно, они были благословлены ими от природы или развились с течением времени, но все они обладают этими качествами.
Уверенность
Ты можешь это сделать. Разработка программного обеспечения может быть для вас неестественной, но вы можете это сделать. Другие люди могут делать это лучше благодаря опыту или одаренности, но вы тоже можете это сделать. Поверьте мне. Если я могу зарабатывать на жизнь написанием программного обеспечения, сможете и вы. Уверенный инженер говорит:
«Я не знаю, как я это сделаю, но я все равно это сделаю».
Видеть? Гензель понял:
Упорство
Как легко вы отказываетесь от решения проблемы? Если вы не можете придерживаться этого достаточно долго, чтобы найти решение или обходной путь, у вас ничего не получится. Баги будут беспокоить вас днями, а иногда и неделями, и если вы не найдёте в себе желания продолжать их рубить, вы не выживете. Программная инженерия — это решение проблем. Доводя их до конца, вы обретаете уверенность и опыт.
Любопытство
Глядя на что-то с удивлением, а не со страхом, вы сильно меняет свой повседневный взгляд инженера-программиста. Любопытство открывает ваш разум для решений, которые в противном случае никогда бы не представились. Более того: размышления о коде и программных системах в конечном итоге облегчат бремя поиска или изобретения собственных решений проблем. Любознательные инженеры говорят: Интересно, что делает этот код? Может быть, я потрачу несколько минут и прочитаю это. Они также говорят что-то вроде: Что произойдет, если я нажму на это? или Что, если я просто удалю этот кусок кода? или Я никогда не слышал о «Raspberry Pi, может быть, я прочитаю об этом». Любознательные инженеры не боятся пробовать что-то новое, и, как говорит Гензель:
«Я был не таким, как все дети… Меня всегда больше интересовало, из чего сделана кора дерева».
Знаток кода
Вы будете тратить больше времени на чтение кода, чем на что-либо еще, будучи инженером-программистом, и поэтому вы должны оттачивать этот навык как можно быстрее. Читайте код так, как будто от этого зависит ваша жизнь. Читайте чужой код. Прочтите свой старый код и бегите куда подальше. Читайте множество различных видов кода, таких как JavaScript, Swift, Haskell, Fortran, Assembly. Попытайтесь понять, что делает код и почему он делает то, что делает. Пример: Отладка резиновой уточки — это чтение кода вслух. В самом начале своей карьеры я быстро понял, что если я не могу прочитать код, над которым работал, и объяснить проблему, с которой столкнулся, то просто не понимаю, что происходит. Я все еще борюсь с этим сегодня, и самый быстрый способ избавиться от застревания — это остановиться и перечитать мой код.
Таким образом, вам нужно быть уверенным в себе, настойчивым, любопытным и готовым читать много кода. Научиться быть инженером-программистом — все равно, что съесть кита. Как ты это делаешь? По одному маленькому кусочку за раз.