Каким разработчиком лучше стать: Каким программистом стать — рассказываем о популярных направлениях

Содержание

Каким разработчиком мне стать?!. Перевод статьи WHAT KIND OF DEVELOPER… | by oldDeveloper

Перевод статьи WHAT KIND OF DEVELOPER SHOULD I BE?!

Вы задавали себе это вопрос? Я ТОЖЕ! Существует так много вариантов, и трудно понять, какой из них правильный? Должны вы стать мобильным разработчиком или веб-разработчиком? Как насчет Back-End или Front-End, а может быть Full Stack? Вопросы продолжают приходить! Так как же найти единственно верный ответ?

Во-первых, все с самого начала…

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

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

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

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

Почему это пустая трата времени?

Хорошо, подумай об этом так … Как часто твоя первая любовь становится любовью всей твоей жизни? Конечно, это может случиться, но такое случается редко. Романтика, прощай навек!

Та же самая логика применима и здесь.

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

Таким образом, по одному из возможных сценариев, вы начнете с намерений стать X, но через какое-то время передумаете и захотите быть Y. Это означает, что то время которое могло бы быть использовано для изучения и написания кода, вы потратите на поиски того, что на первом этапе не имеет смысла, а следовательно, время будет потрачено впустую.

Тем не менее, если у вас уже есть идея, отлично! Вперед! И не важно какой язык программирования вы выберите, так как язык это лишь инструмент. Весь смысл этого текста донести до вас, что вам не нужно знать все особенности выбранного вами языка от и до, вам просто нужно начать что-то делать с тем, что вы уже знаете.

Вам не нужно знать, собираетесь ли вы стать бэкенд-веб-разработчиком который специализируется на на node.js и занимается x, y, z… бла-бла-бла. Знание того, что вы хотите стать веб-разработчиком уже достаточно.

Но что, если я выберу не тот язык?

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

Честно говоря, самая сложная часть заключается не в изучении самого языка, а в изучении основ программирования и в том, как начать “мыслить как программист”.

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

Вернуться к ГЛАВНОМУ ВОПРОСУ

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

В любом случае, вернемся к ОБЩЕМУ ВОПРОСУ … откуда вы знаете, каким разработчиком вы хотите стать?

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

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

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

Итак … Как найти СТРАСТЬ вашей жизни?

Вы не найдете ее ни в интернете, ни в книгах, ни где либо еще. Это чувство придет в результате ваших экспериментов в тех или иных увлечениях и делах, только так вы найдете то, что вам действительно нравиться. Никогда не бойся идти на эксперимент!

Я сам сожалею, что не экспериментировал раньше. С самого начала у меня возникла идея, что я хочу изучать Java и сосредоточиться исключительно на разработке Android приложений. Настолько меня это захватило, что я не стал интересоваться чем-либо еще.

Оглядываясь назад, я понимаю, что такой подход закрыл меня от многих других, не менее интересных направлений в разработке. Когда первоначальный порыв утих, я стал искать что-то другое и теперь я действительно нашел то, что увлекло меня по настоящему, а не являлось скоротечный порывом, это React и JavaScript.

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

Кстати, я не жалею, что изучаю Java или занимаюсь разработкой под Android, потому что…

Несмотря на переход в веб, мне все равно нравится Java.

Это помогло мне сфокусироваться, понять структуру и начать что-то делать.

И самое главное … это помогло мне научиться программировать!

Тем не менее, оглядываясь назад, я, наверное, сказал бы самому себе, когда только-только я стал увлекаться программированием, что нужно быть более разносторонним и попробовать работать с другими языками программирования. * Здесь где-то есть мораль…

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

В эти первые дни имеет смысл попробовать несколько направлений, выяснить, что вам нравится, что вам не нравится, и что вам больше подходит.

Вам все равно желательно знать основы не одного языка программирования, а нескольких. И это не только мое мнение!

Гейл Лакманн, автор книги «Cracking the Coding Interview», пишет, что знание только одного или двух языков программирования указывает на то, что у вас либо проблемы с изучением новых технологий, либо в вашей практике не возникло проблем, где требовалось бы применение других инструментов разработки.

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

Где я сейчас??

Если вам интересно, где я сейчас, то позвольте мне рассказать об этом.

На данный момент я бы сказал, что я все еще нахожусь на стадии экспериментов. Мне нравится React и веб-разработка в целом и я планирую продолжать развиваться в том же направлении, чтобы в конечном итоге получить работу и по настоящему окунуться в веб-программирование.

Тем не менее, я планирую выучить еще несколько языков в этом году. Сейчас я выбираю между Ruby и Python, и я, если честно, склоняюсь к Ruby из-за Ruby on Rails. Но дай мне знать, что думаешь ты. Мне всегда интересно услышать мнение других людей.

Если обобщить путь в программирование, то я бы выделил три основных этапа

Три пути развития карьеры программиста

Вот то, что я считаю тремя основными этапами, которые помогут вам стать программистом:

Этап 1 — Введение:

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

Этап 2 — Эксперимент:

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

Этап 3 — Специализация:

Выбор технологии и дальнейшее обучение, чтобы стать экспертом в том, что вы выбрали на предыдущем шаге.

Стоит отметить, что ваше путешествие не должно останавливаться на этапе «Специализация». Дверь всегда открыта, чтобы экспериментировать с чем-то новым.

Резюме

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

Далее эксперимент! Узнайте, что вам нравится, а что нет. Это даст вам хорошую идею, куда идти дальше.

Наконец, практикуйтесь, но помните, что никогда не повредит изучать что-то новое.

Итак, вы решили стать программистом

Недавно мне пришло одно интересное письмо, — пишет автор блога «Записки программиста».

Photo by Austin Distel on Unsplash

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

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

Программирование это решение задач

Бытует мнение, что программирование — это своего рода искусство. Дескать, программисты подобны художникам, скульпторам и другого рода творческим личностям. В последнее время я не склонен так считать. Программирование — это в первую очередь решение задач, и только потом все остальное. Соответственно, чтобы понять, каким инструментарием (языками программирования, ОС, СУБД и так далее) вам требуется владеть, нужно определиться с двумя вещами.

1. Интересы

Во-первых, что вам интересно (другими словами, какие задачи вы хотели бы решать)? Компьютерные игры, сайты, мобильные приложения, антивирусы, какие-то научные изыскания или что-то еще? Мы посвящаем работе около трети своей жизни (помним, что еще примерно треть уходит на сон), в связи с чем хотелось бы, чтобы эта треть была, ну я не знаю, не скучной.

2. Личные цели

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

Сформулируйте вопрос правильно, в стиле «я хочу работать в компании Х, потому что я слышал, что там очень круто, а еще там работает большинство моих друзей», и вы получите половину ответа.

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

Выбор ниши

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

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

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

Плюсы и минусы каждого варианта

В связи с этим, внимательно относитесь к выбору ниши. «Низкоуровневая» ниша привлекательна, помимо прочего, тем, что в ней совершенно очевиден выбор языка программирования, а также тем, что она в меньшей степени подвержена влиянию моды (новые фреймворки, языки программирования и тп). В свою очередь «высокоуровневая» ниша хороша, опять же, помимо прочего, тем, что у вас (почти?) не будет болеть голова об ошибках вроде переполнения буфера или утечки памяти. Большую часть времени вас будет мало беспокоить, сколько тактов процессора или мегабайт памяти потребляет ваше приложение. Перед вами будет огромный выбор парадигм программирования, СУБД и прочих средств.

Однако выбор «высокоуровневой» ниши не означает, что вы можете ничего не знать об ассемблере, Си, C++, устройстве операционных систем и так далее.  И наоборот. Хороший Python-программист знает, как найти узкое место в своей программе и при необходимости переписать ее на Си, а крутой сишник знает, как сэкономить время, сгенерировав кусок шаблонного кода скриптом на Python, после чего протестировать его еще одним скриптом на Python.

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

Саморазвитие

Саморазвитие — это отдельная большая тема, которой я надеюсь когда-нибудь посвятить отдельный пост, но в первую очередь это означает чтение книг.  Не бложиков и не новостных сайтов, хотя это тоже полезно, а именно книг (о программировании, а не фэнтези). Возьмите за привычку читать по пути на работу и с работы, перед сном, после сна, во время еды, в душе… читайте как можно больше! Некоторые книги о программировании довольно объемны, поэтому я настоятельно рекомендую приобрести хороший планшет (мне лично для чтения нравятся планшеты с диагональю 10″) и читать книги с него.

О чем должны быть эти книги? Ну, в первую очередь, неплохо бы читать нечто, связанное со спецификой вашей работы. Но не только. Читайте книги об алгоритмах, операционных системах, СУБД, системах контроля версий, просто книги о разработке (тут вспоминаются, к примеру, Спольски, Макконнелл, Брукс, Фаулер…). Они пригодятся вам независимо от вашей работы и выбранной ниши. Также изучайте новые языки программирования. Как я уже когда-то писал, это редко оказывается пустой тратой времени.

Практика

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

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

Английский язык

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

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

Различные типы вакансий разработчиков

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

Frontend-разработчик

Frontend-разработчики специализируются на визуальных пользовательских интерфейсах, эстетике и макетах. Они работают над созданием веб-приложений и веб-сайтов, поскольку их коды работают в веб-браузерах и на компьютере пользователя сайта. Их роль сосредоточена исключительно на понимании взаимодействия человека и машины и дизайне, а не на теории. Их навыки включают дизайн пользовательского интерфейса (UI), дизайн пользовательского интерфейса (UX), CSS, JavaScript, HTML и UI Frameworks.

Backend-разработчик

Backend-разработчик специализируется на проектировании, реализации, функциональной логике и производительности системы, которая работает на машине, удаленной от конечного пользователя. Серверная часть веб-сайта состоит из сервера, приложения и базы данных, а внутренний разработчик помогает создавать и поддерживать эти компоненты. Делая это, они позволяют существовать стороне веб-сайта, обращенной к пользователю. Их навыки разработки включают Java, C++, Ruby, Python, Scala и Go.

Разработчик полного стека

Разработчик полного стека выполняет как интерфейсную, так и внутреннюю часть сайта. У них есть навыки, необходимые для создания полностью функционирующего веб-сайта. Будучи разработчиком полного стека, вы откроете для себя больше возможностей, поскольку они работают как на стороне сервера, так и на стороне клиента. Навыки full-stack разработчика будут состоять из комбинации навыков front-end и back-end разработчика. Разработчик с полным стеком должен уметь настраивать серверы Linux, писать API-интерфейсы на стороне сервера и JavaScript на стороне клиента, обеспечивающие работу приложения, и обращать внимание дизайнеров на CSS.

Разработчик мобильных приложений

Разработчики мобильных приложений пишут коды для приложений, которые работают на мобильных устройствах, таких как планшеты и смартфоны. Мобильные разработчики начали становиться популярными только после бума мобильных устройств в начале 2000-х и роста рынка смартфонов. Мобильный разработчик понимает мобильные операционные системы, такие как iOS и Android, а также среду и платформы, используемые для создания программного обеспечения в этих системах. У них есть различные навыки разработки, такие как Java, Swift, Objective-C, интерфейсы прикладного программирования, языки веб-разработки и кроссплатформенные мобильные пакеты.

Разработчик игр

Быть разработчиком игр очень ответственно и сложно. Они специализируются на написании игр и обладают специальными знаниями и навыками в разработке увлекательных интерактивных игр. Разработчики игр используют такие фреймворки, как DirectX, OpenGL, Unity 3D, WebGL и языки программирования, такие как C, C++ и Java. На мобильных устройствах Swift и Java используются для игр iOS и Android.

Разработчик Data Scientist

Разработчики специалистов по данным пишут программы для анализа наборов данных. Обычно они отвечают за статистический анализ, машинное обучение и прогнозное моделирование. Набор навыков, которым должен обладать специалист по данным, должен охватывать несколько связанных с наукой вещей. Например, языки программирования (R, Python), различные методы, которые являются допустимым подходом, знакомство с методами машинного обучения, понимание и знание многомерного исчисления и линейной алгебры, а также работа с несовершенствами данных. Возможность сообщать обо всех несовершенствах и вычислениях невероятно важна для таких разработчиков.

Разработчик DevOps

Разработчики DevOps знакомы с технологиями, позволяющими создавать, развертывать и интегрировать системы и управлять внутренним программным обеспечением. Чтобы упростить определение, разработчик — это тот, кто создает приложения, Ops — развертывание и мониторинг приложений, а DevOps — создание приложений, их развертывание и мониторинг. DevOps должен иметь опыт работы со следующими навыками: Kubernetes, Docker, Apache Mesos, Jenkins и т. д. и стеком HashiCorp.

Разработчик программного обеспечения

Разработчик программного обеспечения играет ключевую роль в определении, проектировании, установке и тестировании программной системы, созданной для компании с нуля. Они создают их, чтобы убедиться, что процессы работают должным образом. Навыки, необходимые разработчику программного обеспечения, — это языки программирования, такие как JavaScript, C++, Ruby, C# и .Net, и это лишь некоторые из них. Этим типам разработчиков также должно быть удобно писать и анализировать запросы и работать с различными платформами.

Веб-разработчик

Веб-разработчики выполняют ту же работу, что и разработчики программного обеспечения; однако они специализируются на создании веб-сайтов. Хотя они существуют не так долго, как некоторые другие разработчики, и от них требуется только базовые знания при вступлении в роль, веб-разработчики растут так же, как и другие разработчики в современном мире. Веб-разработчики должны знать HTML, CSS, FTP, JavaScript и WordPress.

Разработчик безопасности

Разработчики систем безопасности специализируются на создании систем, методов и процедур для проверки безопасности программных систем и исправления недостатков безопасности. Они используют различные инструменты для выполнения своей работы, такие как языки сценариев, такие как Python и Ruby. Они также используют языки программирования, такие как C и C++, для чтения и понимания операционных систем. Их работа направлена ​​на взлом систем с соблюдением этических норм для обнаружения их уязвимостей.

Как стать разработчиком: Шпаргалка

Как стать разработчиком: шпаргалка

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

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

Изображение: iStockphoto/nd3000

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

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

ПОСМОТРЕТЬ: Как построить успешную карьеру разработчика (бесплатный PDF) (TechRepublic)

Почему растет спрос на разработчиков?

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

Согласно журналу CIO, среди 10 самых востребованных профессий на 2021 год — программист-аналитик, разработчик мобильных приложений, разработчик программного обеспечения и инженер DevOps.

Между тем, Бюро труда и статистики США прогнозирует, что рабочие места разработчиков программного обеспечения вырастут на 22% в период с 2019 по 2029 год, что намного быстрее, чем в среднем по другим профессиям, отмечает бюро.

По данным к Дайсу. В роли веб-разработчика средняя заработная плата увеличилась с 77 753 до 81 550 долларов по сравнению с прошлым годом (4,9).% рост). Точно так же разработчики программного обеспечения продемонстрировали рост на 1,9 процента, со 109 198 долларов в 2019 году до 111 297 долларов в 2020 году.

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

  • 15 книг, которые должен прочитать каждый программист (бесплатный PDF) (TechRepublic)
  • 5 языков программирования, которые должны выучить сетевые архитекторы (бесплатный PDF) (TechRepublic)
  • 5 языков программирования, которые должны выучить облачные инженеры (бесплатный PDF) (TechRepublic)
  • 5 языков программирования, которые должны изучить разработчики прикладных решений (бесплатный PDF) (TechRepublic)
  • Слушайте еженедельный подкаст Dynamic Developer от TechRepublic

Какие есть должности разработчиков?

Разработчики могут пойти по разным карьерным путям. Вот несколько ролей в этой области.

  • Разработчик мобильных приложений : Создает приложения для мобильных устройств, включая iOS и Android. Мобильный разработчик может использовать Java, Swift и Objective-C.
  • Разработчик полного стека : Может работать как с интерфейсной, так и с серверной частями приложения или веб-сайта. Разработчик полного стека обладает специальными знаниями обо всех этапах разработки программного обеспечения, включая сервер, сеть и среду хостинга; реляционные и нереляционные базы данных; взаимодействие с API; пользовательский интерфейс и пользовательский опыт; гарантия качества; безопасность; потребности клиентов и бизнеса.
  • Интерфейсный разработчик : Создает веб-сайты путем преобразования данных в графический интерфейс для просмотра и взаимодействия с пользователем с использованием HTML, CSS и JavaScript.
  • Внутренний разработчик: Создает функциональность и интерактивность веб-сайта, включая элементы, которые позволяют пользователям выполнять такие действия, как вход в систему, создание учетной записи и лайки сообщений. В зависимости от того, что вы хотите, чтобы ваше веб-приложение делало, вы можете изучать такие языки, как Java, Python, Ruby и PHP.

ПОСМОТРЕТЬ: IT Hiring Kit: Programmer (TechRepublic Premium)

Какие языки программирования лучше всего изучать?

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

  • Java: Java используется миллионами разработчиков и миллиардами устройств по всему миру. Согласно анализу Coding Dojo, Java является официальным языком разработки для Android, и 90% компаний из списка Fortune 500 используют Java в качестве серверного языка для серверной разработки.
  • Python: Python обычно используется в научных вычислениях, интеллектуальном анализе данных и машинном обучении. Это самый быстрорастущий язык программирования, и в настоящее время он занимает 3-е место в индексе TIOBE. Coding Dojo обнаружил, что с начала 2018 года количество вакансий Python резко возросло. Согласно Hired, Python также был признан разработчиками самым любимым языком программирования. Если вы хотите изучить Python, ознакомьтесь с сертификатом Google IT Automation with Python Professional на Coursera.
  • JavaScript: По данным SlashData, JavaScript является самым популярным языком программирования в мире. 62% рекрутеров заявили, что ищут людей со знанием JavaScript, за ними следуют Java (59%) и Python (48%). Несколько интерфейсных фреймворков для JavaScript, таких как React и AngularJS, будут все чаще использоваться по мере роста популярности устройств Интернета вещей, поэтому маловероятно, что в ближайшее время популярность этого языка упадет.

C был на вершине списка индекса TIOBE за февраль 2021 года, а Java — на втором месте. Эти два языка поменялись местами в списке по сравнению с 2020 годом, но остальная часть списка почти такая же, как и в предыдущем году. Python оказался на третьем месте, за ним следуют C++, C#, Visual Basic, JavaScript, PHP и SQL.

ПОСМОТРЕТЬ: Python пожирает мир: как сторонний проект одного разработчика стал самым популярным языком программирования на планете (история на обложке в формате PDF) (ТехРеспублика)

Согласно опросу разработчиков Stack Overflow за 2020 год, Python опустился на третье место после лидирующего Rust (уже пятый год в качестве лидера) и новоявленного второго места TypeScript, что оттеснило Python на одно место.

VBA, Objective C и Perl — самые ненавистные языки, которые в настоящее время широко используются, но разработчики, кодирующие их, «не заинтересованы в том, чтобы продолжать это делать».

По данным Dice, самыми востребованными языками программирования по количеству объявлений о вакансиях в январе 2021 года были: SQL (77 000 объявлений), Java (63 000), Python (56 000), JavaScript (42 000) и Microsoft C# (26 000).

Если говорить о том, какие языки программирования могут принести вам самую высокую зарплату, то самыми высокооплачиваемыми вариантами по всему миру были Clojure (90 000 долларов), F# (80 000 долларов) и Go (80 000 долларов), согласно Stack Overflow. В США список возглавили Scala (143 000 долларов), Clojure (139 000 долларов) и Go (136 000 долларов).

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

  • 10 основных языков программирования, которые разработчики должны знать в этом году (TechRepublic)
  • Rust: что нужно знать разработчикам об этом языке программирования (бесплатный PDF) (TechRepublic)
  • Начало работы с Джулией: список ресурсов (бесплатный PDF) (TechRepublic)
  • Как изучить TypeScript: руководство по ресурсам для разработчиков (TechRepublic)
  • Топ-5 языков программирования, которые должны знать веб-разработчики (бесплатный PDF) (TechRepublic)
  • 5 лучших языков программирования для разработчиков мобильных приложений (бесплатный PDF) (TechRepublic)
  • Руководство по Git для ИТ-специалистов (бесплатный PDF) (TechRepublic)

Какие еще навыки необходимы, чтобы стать разработчиком?

Помимо технических ноу-хау, работодатели все чаще ищут разработчиков с сильными навыками межличностного общения, а также техническими навыками. «Эти мелочи могут стать отличительной чертой равномерно квалифицированных кандидатов гораздо больше, чем сертификаты», — сказал Майк Уолш, основатель Straight Path Solutions. «Такие вещи, как то, как вы справляетесь с конфликтами, если вы слишком горды, чтобы сказать «я не знаю». Не теряйте свои навыки общения».

При повсеместном распространении гибких методологий разработки программисты должны показать, что они могут интегрироваться в команды разработчиков с разной квалификацией, сказал Эд Софер, главный исполнительный директор и президент SenecaGlobal. «Чтобы быть продуктивным членом команд такого типа, программисты должны уметь четко общаться, точно сообщать о прогрессе, быстро поднимать проблемы и в целом быть хорошим командным игроком», — сказал Софер. «В сегодняшней ультраконкурентной среде профессиональные навыки программиста теперь почти так же важны, как и профессиональные навыки».

ПОСМОТРЕТЬ: Все шпаргалки TechRepublic и руководства для умных людей

Навыки решения проблем также высоко ценятся разработчиками, сказал Марк Уилкокс, вице-президент по развитию бизнеса в ICSynergy.

«Я ищу: «Как программист думает о решении проблемы?» И затем я смотрю, какие действия они предпринимают, чтобы научиться улучшать свои навыки», — сказал Уилкокс. «Меня не волнует, являются ли они экспертами в конкретном языке, потому что любой компетентный программист может выучить новый язык за неделю. Но если у них нет хороших навыков решения проблем и они не пытаются постоянно совершенствоваться, то в конечном итоге они навредят вашему проекту».

Специально для должностей младших разработчиков «[работодателей] действительно не волнует, что вы думаете, что знаете», — сказал Тодд Миллекам, генеральный директор и главный консультант SWYM Systems. «Сосредоточьтесь на том, как быстро вы можете учиться и насколько вы готовы учиться».

ПОСМОТРЕТЬ: Набор для найма: Разработчик Python (TechRepublic Premium)

Разработчики часто преуспевают, когда у них есть деловая хватка, и они могут смотреть дальше, чем непосредственное использование своего кода, — говорит Анна Догерти, менеджер по цифровому маркетингу PITSS. «Они должны иметь возможность видеть, как их программное обеспечение или приложение вписывается в более широкую сферу деятельности предприятия, как их проект повышает рентабельность инвестиций и как они способствуют общему оздоровлению организации», — сказал Догерти. «Если у них есть этот навык, они будут работать усерднее, умнее и смогут говорить на языке руководителей, которым они нужны для достижения лучших результатов».

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

  • Как стать разработчиком Alexa: шпаргалка (TechRepublic)
  • 4 самых ненавистных языка программирования (бесплатный PDF) (TechRepublic)
  • Python playbook: информация об обновлении, новые функции, советы по установке и использованию и многое другое (бесплатный PDF) (TechRepublic)
  • Самым востребованным навыком для программистов является Redux.js (TechRepublic)
  • Язык программирования Rust теперь имеет собственную независимую основу (TechRepublic)
  • C, Java и Python занимают первые 3 позиции в индексе TIOBE за февраль 2021 г. (TechRepublic)
  • 14 курсов по программированию: изучайте CSS, HTML, JavaScript и многое другое онлайн (TechRepublic)

Какая средняя зарплата разработчика?

Зарплата разработчика зависит от ряда факторов, включая многолетний опыт и местоположение. По данным Бюро статистики труда, средняя заработная плата в 2019 году составляла 107 510 долларов, тогда как в мае 2019 года средняя годовая заработная плата всех работников составляла 39 долларов.810, сказало BLS. Это на 5,33% больше, чем в среднем в 2017 году (101 790 долларов). По данным Министерства труда США, самые высокооплачиваемые 25 процентов заработали 136 320 долларов в 2019 году, а самые низкооплачиваемые 25 процентов — 82 430 долларов.

Опрос Stack Overflow, проведенный в 2020 году, показал, что средняя зарплата разработчиков во всем мире составляет 57 000 долларов, тогда как в США эта цифра была более чем вдвое больше — 120 000 долларов.

Вот некоторые средние базовые оклады в США, взятые из Stack Overflow:

  • Разработчик полного стека: $112 000
  • Мобильный разработчик: $120 000
  • QA-разработчик: $105 000

ПОСМОТРЕТЬ: 10 способов предотвратить выгорание разработчика (бесплатный PDF) (TechRepublic)

Где самые горячие рынки вакансий разработчиков?

По данным US News & Мировой отчет.

В 2020 году Zippia составила рейтинг лучших штатов США для веб-разработчиков с точки зрения заработной платы. Возглавляют список Вашингтон, округ Колумбия, Вирджиния, Нью-Йорк, Калифорния и Вашингтон.

ПОСМОТРЕТЬ: Язык программирования C++: как он стал основой всего и что будет дальше (бесплатный PDF) (TechRepublic)

Какие типичные вопросы на собеседовании с разработчиком?

Во время собеседования разработчики могут ожидать таких вопросов:

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

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

  • Как будет оцениваться моя эффективность?
  • Какие самые большие проблемы стоят перед командой прямо сейчас?
  • Можете ли вы рассказать мне о членах команды, к которой я присоединюсь?
  • Есть ли место для роста?

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

  • Вопросы для интервью: Android-разработчик (TechRepublic Premium)
  • Вопросы для интервью: iOS-разработчик (TechRepublic Premium)
  • Вопросы для собеседования: разработчик SAP (TechRepublic Premium)
  • Программа Apple для разработчиков: руководство для опытных пользователей (бесплатный PDF) (TechRepublic)
  • Google: мы финансируем разработчиков, которые будут работать полный рабочий день над безопасностью Linux (TechRepublic)
  • Разработчики выгорают после слишком долгого поиска ошибок в коде (TechRepublic)

Где я могу найти ресурсы для развития карьеры?

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

По данным Stack Overflow, около 75% профессиональных разработчиков имеют степень бакалавра или выше. Традиционно для продвижения в этой области была необходима степень бакалавра компьютерных наук; однако нехватка разработчиков во многих областях и рост числа школ программирования вынудили некоторые компании нанимать кандидатов без традиционного образования.

ПОСМОТРЕТЬ: Мастер-класс веб-разработчика: от начального до продвинутого | Объектно-ориентированное программирование на Java & Дизайн | Очень большие данные & Учебный комплект Apache Hadoop (Академия TechRepublic)

Около 87 % разработчиков заявили, что научились новому языку, фреймворку или инструменту, не посещая формальные курсы, а 49 % заявили, что прошли онлайн-курсы по программированию или разработке программного обеспечения, такие как массовые открытые онлайн-курсы (MooC). .

Некоторые люди также учатся программированию на учебных курсах по программированию. Согласно отчету о курсах, в 2021 году средняя стоимость учебного лагеря составляет 13 500 долларов, а стартовая зарплата выпускников составляет 67 000 долларов. 83% выпускников буткемпов сообщают, что работают программистами. Средний студент буткемпа имеет шестилетний опыт работы и как минимум степень бакалавра, но никогда не работал программистом. Тем не менее, количество студентов со степенями, по-видимому, со временем немного сокращается, говорится в отчете о курсе.

Опрос компании Indeed, проведенный в 2017 году, показал, что 80% менеджеров по найму и рекрутеров в сфере технологий в США заявили, что они наняли выпускников учебных курсов по программированию на должность технического специалиста, а 99,8% заявили, что сделают это снова. Из 1000 опрошенных 72% заявили, что считают выпускников буткемпа столь же подготовленными и способными работать на высоком уровне, как и выпускники компьютерных наук. Тем не менее, 41% менеджеров по найму сказали, что они предпочли бы нанять кого-то со степенью в области компьютерных наук, потому что они более квалифицированы и с большей вероятностью будут лучшими работниками, как показала компания Indeed.