Здравствуйте, в этой статье мы постараемся ответить на вопрос: «Как из гуманитария стать программистом — отвечают эксперты». Если у Вас нет времени на чтение или статья не полностью решает Вашу проблему, можете получить онлайн консультацию квалифицированного юриста в форме ниже.
Как удаленка существенно расширяет выбор работодателей, так и средний (B1, Intermediate) уровень владения разговорным английским языком открывает дополнительные возможности работать на иностранные и международные компании или аутсорсеров, обслуживающих иностранных клиентов. Зарплаты в вакансиях с обязательным требованием разговорного английского языка в среднем выше на 500-1500$ при аналогичных требованиях к техническим навыкам программиста, DevOps’а или тестировщика-автоматизатора. По другим IT-профессиям есть аналогичная тенденция.
Подтянуть свой английский до требуемого уровня вполне возможно за 3-6 месяцев при регулярных занятиях. Поэтому прокачать свои знания английского — это реальная возможность стать более привлекательным кандидатом и найти новую работу с существенно более высокой зарплатой.
Какими качествами должен обладать программист?
Самое главное качество, необходимое для работы программистом, — готовность обучаться, самосовершенствоваться
, ведь компьютерные технологии развиваются настолько стремительно, что нужно постоянно быть в курсе новых изменений.
Кроме этого, следует отметить еще и такие качества, как:
— способности к аналитике, математические способности; — высокоразвитое логическое мышление; — гибкость ума; — его технический склад; — хорошая память; — воображение; — внимательность, сосредоточенность; — высокий уровень концентрации; — умение переключиться с одного дела на другое; — терпение, усидчивость; — целеустремленность; — ответственность; — педантичность; — доступность языка для объяснения сложных моментов; — знание английского языка; — умение работать в команде.
Понимание бизнес-процессов и другие знания
Основная задача программиста заключается в создании ПО. Но если не учитывать тонкости бизнеса, то можно выпустить из вида общую картину. Хороший программист должен не только разрабатывать приложения, но и ориентироваться в бизнес-процессах. Это необходимо для того, чтобы специалист мог предлагать свои идеи, которые помогут получить лучший результат или прибыль компании. Узнать о наличии этого качества можно спросив о том, участвовал ли респондент в улучшении бизнеса организации.
Аналогично в случае поиска специалиста для автоматизации производства или помощи в научных изысканиях, намного проще будет работать с человеком, который имеет как минимум базовые навыки в нужной вам сфере. Проверяйте это на собеседовании.
Специалист должен не только хорошо владеть языком программирования. Владение информацией о деталях работы определенной отрасли не менее важно для хорошего программиста. При разработке программного обеспечения важно учитывать специфику бизнеса, в котором оно будет использоваться. Нередко при этом приходится детально изучать особенности взаимодействия с клиентами, построения логистики, и даже особенности работы конвейеров и станков с ЧПУ на производстве. Сможет ли программист быстро вникнуть в новую сферу деятельности? Готов ли изучать информацию, не связанную непосредственно с кодингом?
Перед приемом на работу, у специалиста рекомендуется уточнить, приходилось ли ему вникать в нюансы бизнеса на прошлых местах работы, и как он это делал.
10. Agile-разработка
Об Agile можно было бы написать целый отдельный пост. Достаточно оговориться, что всё, за что вы беретесь в жизни, вы делаете неправильно, и это в равной степени касается и agile-разработки. В правильно организованной agile-среде широко применяются модульные тесты, хорошо налажена коммуникация между разработчиками, тестировщиками и бизнес-аналитиками, учитываются пользовательские истории (то есть, спецификации дорабатываются до нужной степени точности), работа ведется прозрачно, практикуется взаимообучение разработчиков, а программа сдается небольшими релизами, каждый из которых функционирует хорошо.
В плохо организованной среде сроки срываются, направление развития продукта остается неясным, фичи выпускаются разрозненными группами, программа нашпигована багами, а разработчики сидят по углам и бормочут что-то себе под нос.
20. Понимание того, что на реализацию каждой фичи требуется время
Программисты просто терпеть не могут, когда их «закидывают» все новой работой, а потом бранят за срыв сроков (речь о расползании возможностей (feature creep), бесконечных пересмотрах и изменениях в пользовательском интерфейсе и т.д.).
Все остальные просто терпеть не могут, когда приходится постоянно подгонять разработчика и надоедать ему вопросами «ну когда будет готово?». Поэтому ниже предлагаю вам волшебные слова, позволяющие справиться с этой проблемой. Когда вам как разработчику предъявляется новое требование, четко и ясно скажите следующее:
«Это новая непредвиденная деталь, которую можно реализовать, только сдвинув сроки. Мы должны откорректировать план сдачи продукта, привлечь на проект дополнительные ресурсы, либо отказаться от каких-либо других возможностей или отложить их реализацию до следующего релиза. Какой из этих вариантов вас больше устраивает?»
Если вы этого не скажете, то человек, ставящий перед вами новое требование, будет полагать, что сроки должны быть соблюдены даже с учетом новой возможности. Любой срыв сроков будет вменен вам в вину. Если в данном случае ограничиться общими утверждениями, например «реализация любой новой возможности неизбежно приведет либо к сдвигу сроков, либо к отказу от некоторых функций» — то они как минимум бесполезны.
Вышеприведенная формулировка уместна при поступлении любого запроса на реализацию новой возможности. Кстати, еще лучше было бы переключиться на методологию Agile. Еще один универсальный ответ — «это слишком серьезное требование для версии n», где n равно как минимум +1 от актуальной версии. Можете просто заявить о фактической невыполнимости требования, но сделать это аккуратно, например: «это отличная функция для версии 4, но сейчас мы работаем над версией 1».
Обучение. Карьера. Требования
Освоить профессию Web-программиста можно на специализированных курсах. Такое обучение, как правило, легче дается людям, которые уже имеют техническое или компьютерное высшее образование.
Программисты в IT-компаниях зачастую продвигаются по классической административной лестнице:
- Trainee (стажер);
- Junior;
- Middle;
- Senior.
Специалисты класса Senior могут руководить командой разработчиков или курировать весь проект.
Нередко такие специалисты открывают собственные студии или переходят в компании-гиганты. Каждый этап повышения профессионального уровня сопровождается улучшением финансовых условий.
IT-сфера предполагает владение одним из распространенных иностранных языков. Чаще всего это английский. Этот навык позволяет общаться с иностранными заказчиками и коллегами, а также открывает перспективы трудоустройства за рубежом.
Для работы на позиции Web-программиста необходимо располагать такими личными качествами:
- постоянное стремление к совершенству;
- усидчивость;
- логическое и образное мышление;
- внимательность;
- умение концентрироваться;
- хорошая память.
Дополнительные сведения
Пункт «Дополнительные сведения» в резюме не относится к обязательному разделу. Однако, если соискатель не все отобразил в предыдущих разделах документа, то сюда можно внести сведения, которые не были отображены в других пунктах документа.
Например, здесь можно отобразить дополнительные навыки или жизненные принципы соискателя. Также можно отметить готовность кандидата к командировкам, к переезду, отобразить семейное положение и наличие детей. Короче говоря, подходить здесь нужно творчески, но в пределах профессиональных рамок.
Что не желательно отображать в резюме?
Надо всегда помнить, что резюме является официальным документом, отправляемым соискателем работодателю, на основании которого он получает первое впечатление о кандидате на вакансию программиста. Поэтому, заполняя резюме, нужно не допускать ошибок.
Например, не желательно отображать сведения, не относящиеся к требованиям работодателя. Так, если кандидат на вакансию программиста закончил дополнительный ВУЗ по специальности «Юриспруденция» или «Филология», то не стоит на этом заострять внимание. Опыт работы и навыки нужно отображать только по отношению к программированию.
К еще одной распространенной ошибке можно отнести – подробное описание биографии и карьерного роста с момента обучения в школе или о том, как друг рассказал кандидату о курсах программирования. Не следует этого делать и не надо работодателя загружать ненужными подробностями личной жизни соискателя.
Умение учиться нон-стоп
Знать свой язык программирования и платформу, уметь работать с ними — это важно. Но еще важнее развивать эти навыки, расширять кругозор и учиться новому.
Технологии, которые недавно казались малозначительными, сегодня вышли на первый план. Кто слышал о блокчейне десять лет назад? А сегодня мировые корпорации, банки и даже госструктуры (в том числе в России) экспериментируют с ним на практике.
Через десять лет будут работать инструменты, которые сегодня только зарождаются в умах инженеров. А значит, опять изменятся запросы бизнеса и рынка труда.
Невозможно точно определить, какие технологии захватят мир. Вы можете прочесть о новой концепции и подумать, что за ней будущее, или решить, что это чушь. Но были вы правы или ошибались, покажет только время. Важно быть гибким, готовым к переменам и продолжать изучать инновации, которые кажутся вам перспективными. Даже если знания останутся невостребованными, вы все равно в плюсе — расширили эрудицию и прокачали обучаемость. А эта способность востребована во все времена.
Умение учиться помогает строить карьеру. IT-компании приветствуют сотрудников, которые хотят развиваться в профессии и готовы над этим работать. Такие специалисты легче переключаются на новые задачи, быстрее втягиваются в работу над новыми проектами, трудятся более продуктивно и креативно.
Изучение новых технологий и инструментов — это способ выбраться из повседневной рутины, продолжая заниматься своей работой и карьерой.
Полезная литература для развития
Книги, которые советуют прочитать тренера Тренинг-центра ISsoft:
- Стив МакКонел «Совершенный код. Мастер-класс». Книга по разработке ПО, охватывающая ВСЕ аспекты создания программ. Рекомендуем прочитать ее всем, не зависимо от языка и платформы, которую вы выбрали.
- Томас Кормен, Чарльз Лейзерсон и др. «Алгоритмы. Построение и анализ». Для профессионала эта книга — настольный справочник, а для студента — отличный учебник. Фундаментальный труд известных специалистов в области информатики достоин занять место на вашей полке.
- Род Стивенс «Алгоритмы. Теория и практическое применение». Небольшая по объему альтернатива, книга без «пугающей» математики.
- Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидес «Приемы объектно-ориентированного проектирования. Паттерны проектирования». Классическая книга по объектно-ориентированной разработке. Авторы излагают принципы использования паттернов проектирования и приводят их каталог.
- Чед Фаулер «Программист-фанатик». Яркое увлекательное руководство, которое поможет быстро сделать карьеру в индустрии разработки ПО. Сборник практических советов и рекомендаций, касающихся ситуаций, с которыми сталкивается любой разработчик.
Надеемся, что вы любите писать код и потратите много времени на то, чтобы стать хорошим программистом. Если вам нужна помощь в обучении, ждем вас в Тренинг-центре ISsoft.
О программировании можно сказать, что оно сходно с решением трудного математического уравнения. Хороший специалист всегда стремится выполнить задачу, несмотря на уровень ее сложности. Программист, умеющий решать проблемы, станет незаменимым при создании нового проекта. Человек, не обладающий данным качеством, каждый раз при возникновении трудностей будет говорить о невозможности их решить.
Для того чтобы определить, насколько программисту свойственно добиваться поставленной цели, продолжите ему во время собеседования решить максимально сложную задачу, касающуюся деятельности компании. Можно даже заведомо не имеющую решения. Здесь важно увидеть не практический результат, а реакцию на вызов.
Особенности профессии
Любой компьютер – будь он ПК или мозг робота – это комплекс аппаратов и программ, взаимодействующих друг с другом благодаря единой программной системе. Системный программист почти не занимается прикладными программами, облегчающими жизнь пользователю (этим занимается программист-прикладник). Системщик выстраивает многоуровневую структуру, которая объединяет отдельные компоненты (работу процессора, сетевого оборудования, оперативную память, выполнение прикладных программ и пр.) в модули, а модули – в единый организм компьютера или компьютерную сеть.
Например, текстовые редакторы, позволяющие нам набирать тексты на компьютере, разрабатывают прикладники. А программа дефрагментации жесткого диска – это уже задача программиста-системщика, т.к. подобная программа обеспечивает взаимодействие программ и так называемого железа.
Это не значит, что системный программист не может разработать прикладную программу. Но он мыслит комплексно. Системное программирование (программирование систем) – это, по существу, инженерная деятельность, хотя она и не связана с материальным миром в такой степени, как это бывает в традиционном инженерном деле.
Системы программирования
Основная статья: Инструментальное программное обеспечение
К этой категории относятся системные программы, предназначенные для разработки программного обеспечения:
- ассемблеры — компьютерные программы, осуществляющие преобразование программы в форме исходного текста на языке ассемблера в машинные команды в виде объектного кода;
- трансляторы — программы или технические средства, выполняющее трансляцию программы; компиляторы — Программы, переводящие текст программы на языке высокого уровня, в эквивалентную программу на машинном языке.
- интерпретаторы — Программы (иногда аппаратные средства), анализирующие команды или операторы программы и тут же выполняющие их;
Программист должен не только создать код, но и уметь проверять, а потом и поддерживать его работоспособность. При возникновении проблем в работе специалисты могут вести себя по-разному. Некоторые склонны выпускать «сырые» решения, после чего, тратят множество часов на то, чтобы вносить изменения в программу по результатам найденных в процессе работы ошибок. От этого нередко страдает проект в целом, ведь если ошибки находят пользователи, это – огромный минус к репутации. Гораздо эффективнее провести предварительную отладку и постараться выявить максимум проблем на этапе разработки.
Для того чтобы определить, насколько развит этот навык, можно спросить у специалиста на собеседовании, как именно он справляется с ошибками. Для проверки практических навыков имеет смысл предложить дополнительный тест по отладке.
Уровень Middle предполагает, что разработчик является состоявшимся профессионалом. Он не только обладает обширными теоретическими знаниями, но и имеет значительный опыт работы в реальных проектах. В IT-отрасли такой опыт называют «коммерческим».
Если джун должен справляться самостоятельно с простыми задачами, а со средними и сложными ему требуется помощь, то Middle — это полноценный, «всеядный» специалист. Он решает практически любые технические задачи, способен выступать в роли ментора для других, может консультировать коллег, может стать тимлидом, если у него есть соответствующие soft skills и желание.
Hard skills:
-
глубокие знания используемых языков в коммерческих проектах;
-
уверенные знания стандартных библиотек, необходимых фреймворков и инструментов; уверенные настолько, чтобы не нужно было искать в интернете название классов и методов, если дело касается типичной задачи.
Soft skills:
От софтскиллов специалиста зависит список ролей, которые он может исполнять в компании и на проектах. К ранее упомянутым навыкам самообучения, самодисциплине и мотивации полезно будет добавить и другие навыки:
-
если у специалиста есть способности предлагать и отстаивать свои решения, то это поможет ему в управлении, в менторстве, в переговорах с заказчиком;
-
способность убеждать;
-
проактивность помогает открыть двери для перехода на ответственные роли, такие как тимлидер или руководитель группы.