21.09.2018
коддинг

Как стать программистом – опыт и рекомендации от Sigma Software

Рейтинг:  5 / 5

Звезда активнаЗвезда активнаЗвезда активнаЗвезда активнаЗвезда активна
 

Талантливые программисты высоко ценятся в мире, они получают большие зарплаты и имеют достаточно работы. Поэтому интерес к программированию во многих странах высокий. Технический директор Дмитрий Лапшин и директор по рекрутменту Михаил Антонович, который также является руководителем софтверного университета Sigma Software University, рассказали, что необходимо для успешного начала карьеры программиста.

Основные виды программирования

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

Программирование для web. Слышали про Gmail или Dropbox? Создание подобных веб-приложений и является программированием для web. Это направление имеет ответвления: front-end и back-end. Когда вы открываете тот же Gmail, то видите только одну часть программы – клиентскую. На жаргоне программистов – front-end. Но основные вычисления осуществляются на сервере. Создание кода для серверной части это back-end.

Для back-end программирования используются языки: Java, JavaScript, C#, Ruby, PHP, Python. Для front-end: JavaScript с надстройками TypeScript и CoffeeScript.

Программирование автономных enterprise-систем. Это могут быть системы, которые вообще не имеют пользовательского интерфейса. Например, механизмы обработки статистики показа онлайн-рекламы. Здесь используются языки программирования Java, C#, Python.

Big Data и машинное обучение. «Горячая» тема, которая охватывает создание программных продуктов для обработки и анализа петабайтов накопленных данных. Используют языки Java, Scala. Для систем машинного обучения преимущественно применяют Python.

Сегмент, который охватывает решения для social media, блогов, e-commerce, почти полностью базируется на использовании PHP.

Создание программ для персональных компьютеров. Этот вид понемногу теряет популярность под натиском web. Здесь программисты работают на С++ с библиотекой QT, C# и платформой Microsoft .NET.

Что интересно, в последнее время десктопные программы начали создавать с помощью web-технологий, применяя инструменты, подобные Node-WebKit. Например, именно так создан клиент для очень популярного мессенджера Slack.

Разработка компьютерных игр. В этой сфере используются преимущественно С++, для создания казуальных или не очень требовательных 3D-игр также популярная платформа Unity, которая позволяет писать на C#.

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

Этапы становления программиста

Первый шаг – изучение computer science: всего, что касается парадигм программирования (по крайней мере того, что касается объектно-ориентированного и функционального программирования), алгоритмы, структуры данных, формирует склад мышления. В ВУЗЕ или самостоятельно – не имеет значения. Выбор конкретного языка на данном этапе не имеет очень большого значения, но, с другой стороны, нет смысла в изучении таких языков, как Basic или Pascal, которые уже много лет почти не используются в индустрии. По нашему мнению, Python может быть очень неплохим выбором для начинающего.

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

Второй шаг – закончить курсы по программированию.

Михайло Антонович: «Только курсы нужны не те, которые организовывают компании, которые занимаются организацией курсов. Имеет смысл искать учебные центры при IT-компаниях. Например, обучение на курсах Sigma Software длится 2 месяца, стажировка интерном – еще 2-4 месяца. Чтобы попасть на курсы, кандидат должен быть как минимум студентом 3-4 курса профильного ВУЗА».

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

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

ПОЛЕЗНЫЕ ДОПОЛНИТЕЛЬНЫЕ НАВЫКИ И УМЕНИЯ

Из всех необходимых дополнительных знаний самое важное – это владение английским на уровне intermediate или лучше. Это позволит изучать множество полезных материалов, например, видеолекции MIT (Массачусетского технологического института).

«Для будущего программиста важно следить за тенденциями, понимать, откуда «ветер дует». Для этого стоит читать аналитические материалы, исследования на профильных ресурсах вроде www.infoq.com, дискуссий Reddit или Хабрахабр, хоть последний ругают все, кому не лень. Также стоит обратить внимание на дайджесты DOU».

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

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

НАПОСЛЕДОК

Дмитро Лапшин: «Концептуально все начинается с того, что человек что-то делает для себя. Первыми шагами должно быть решение каких-то простых алгоритмов: отсортировать список любимых песен по алфавиту, например. Также важными качествами являются усидчивость и умение думать нестандартно, или, как говорят по-английски, «think outside the box».

Михайло Антонович: «Обобщенный портрет будущего программиста выглядит так. Это парень или девушка, которые увлекаются точными науками. Такие люди часто участвуют в различных олимпиадах, конкурсах. Они всегда ищут что-то связанное с формулами, цифрами и логикой. Это очень часто интроверты».

Дмитро Лапшин: «Первый язык программирования – это далеко не тот язык, на котором будущий программист будет работать. Тем, кто решил начать изучать программирование, можно начать с Java, только желательно не углубляться в «дебри». Всем, кто чувствует в себе силы и уверенность, следует стремиться к изучению функциональных языков программирования – за ними будущее. В этом случае можно попробовать сразу Scala или JavaScript. Как первый язык для изучения можно рассмотреть и Python. С его помощью хорошо выполнять простые задания, его можно назвать современным Basic, но с возможностью практического применения».

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

  1. Последние
  2. Популярные
Загрузка...

Новости технологий сегодня

Самые популярные метки