15 качеств которые отличают хорошего программиста
Говорят, российские программисты — лучшие (или одни из лучших) в мире. Правда ли это?
Какими-то программами вы пользуетесь, даже не предполагая, что они созданы нашими разработчиками, — вроде игрушки Cut the Rope (накорми Ам Няма леденцом) или приложений FineReader, распознающих текст. А какие-то продукты, например «Яндекс», воспринимаете как должное и не знаете, что они заметны во всем мире. И вообще Россия — одна из четырех стран, где есть свой поисковик такого масштаба (кроме США, Китая и Южной Кореи). Наконец, в отечественном IT-сообществе постоянно транслируется мнение, что у нас особенно хорошо с «мозгами». Это действительно так? И если да — почему так вышло?
Не все программисты «одинаково полезны»
Необходимость оценить работника возникает в любой области деятельности. Чаще всего это делается при приёме на работу. Работодатель пытается понять, насколько кандидат соответствует предложенной вакансии. Однако насколько хорош работник в решении реальных задач, можно увидеть, только поработав с ним. Прохождение собеседования и выполнение тестовых заданий ничего не говорят об умении работать. Определить, насколько качественно и производительно будет трудиться кандидат, на собеседовании сложно.
В профессиях, имеющих дело с материальными объектами, оценить работника относительно просто — измеряешь количество и качество продукции, которую он произвёл. Например, количество деталей, сделанных за день, и погрешности в размере детали. Это объективные показатели, по которым можно дать оценку.
В работе программиста не все так однозначно. Что является «продукцией» в данном случае? Например, программист Николай, решая задачу, будет, не вставая со стула, стучать по клавиатуре три дня и создаст множество кода.
Программист Василий, обдумывая решение, будет гулять по кухне, общаться с коллегами и бездельничать другими самыми разными способами. Однако за те же три дня выдаст решение, которое по объёму кода в несколько раз меньше, понятнее его коллегам и к тому же работает быстрее. И в том и другом случае задача решена, результат получен. Можно ли сравнить Василия и Николая? Например, чтобы выбрать, кого из них сделать руководителем группы.
Но что, если мы захотим подойти к вопросу объективно? Какие показатели будем измерять? Объем написанного кода? Количество решённых задач? Попытки применять такие метрики для оценивания работника ни к чему хорошему не приводили. Зная, какой именно показатель измеряется, специалист начинает им манипулировать: писать лишний код или разбивать задачи на более мелкие.
И всё-таки любой, кто сталкивался с разработкой, знает, что не все программисты «одинаково полезны». Эта разница может быть ощутима. В реальности чаще всего такая оценка делается интуитивно. Интуиция — это часть опыта человека, соответственно, у менеджера проекта и техлида интуиция будет давать разные результаты. Менеджер проголосует за пыхтящего Николая, техлид — за Василия, решившего задачу, с его точки зрения, лучше. Но кто же из них прав?
Определитесь, зачем вам нужен ноутбук
Сегодня на рынке представлены три основных вида ноутбуков — это настольные, ультратонкие и ноутбуки-трансформеры. Все они заточены под выполнение разных задач, поэтому покупателю стоит быть внимательнее. Например, трансформеры чаще всего поставляются с сенсорным экраном, поэтому управлять ими можно и пальцами, и с помощью обычной клавиатуры. Чаще всего они работают на операционной системе Windows 10, однако могут иметь и две ОС: например, Windows и Android. А ультрабуки отличаются минимальной толщиной и легкостью — они весят до полутора килограммов, их можно легко взять с собой, но они не отличаются высокой производительностью.
Поэтому для начала пользователю важно определить, для каких задач подойдет та или иная модель ноутбука и каким набором технических характеристик должно в итоге обладать устройство.
Объем оперативной памяти
Здесь градация довольно проста — обычному домашнему ноутбуку вполне хватит 2 ГБ, игровым понадобится не менее 4ГБ, а вот для работы со сложными программами, например, для дизайнеров, нужно брать устройство с оперативной памятью 8 ГБ.
Батарея
Для тех, кто много работает и часто путешествует, жизненно необходима хорошая батарея, с которой ноутбук может проработать 8-10 часов. Помните, что заявленное время работы вычисляется производителем при минимальной нагрузке и самой слабой яркости экрана, а в реальных условиях это время может быть на несколько часов меньше. Поэтому выбирайте ноутбук с хорошим запасом аккумулятора.
Какие бывают программисты
Профессия «программист» принадлежит к обширной категории IT-специалистов, поэтому, как мы уже заметили, не стоит полагать, что этот профессионал с радостью возьмется, скажем, за починку вашего ноутбука. Более того, компьютер вообще не нужен программисту для написания кода: он может создавать его хоть на куске салфетки или на оборотной стороне счета, принесенного ему в кафе. ПК ему потребуется уже на более позднем этапе — отладке готового кода. Другое дело, что в любую профессию, связанную с IT-сферой, можно попасть через знание языков программирования и соответствующее образование.
Самое время разобраться, какие есть программисты. По своей специализации они подразделяются на системных разработчиков и прикладных специалистов, а также веб-программистов. Первые из них трудятся в области формирования программ и приложений (индустрия игр, офисная работа и т. д.), вторые специализируются на создании операционных систем, а третьи пишут интернет-страницы и целые порталы, а также программы, обеспечивающие их бесперебойную и безопасную работу. Также программисты отличаются друг от друга по типам решаемых задач: это, к примеру, архитекторы ПО, профессионалы в области функционирования системы 1С, программисты, специализирующиеся на базах данных, системные инженеры, фронтенд- и бэкенд-разработчики и т. д. И, безусловно, должности программистов и спектр задач, решаемых этими профессионалами, отличаются в зависимости от тех языков, которыми они владеют.
Недоведение проектов до конца
Итак, ты начал изучать программирование. Это вызывает уважение. Если ты делаешь это самостоятельно, то заслуживаешь уважения вдвойне. В одно утро ты берешь тяжелую книгу и начинаешь читать. Дойдя до упражнений, решаешь, что их можно пропустить (вроде и так материал понятен), затем пропускаешь несколько глав, а через неделю понимаешь, что уже забыл, где эта книга лежит. Все – дело до конца не доведено. Узнал себя? Быстро исправляйся.
Вывод: в программировании важен процесс, но не меньшее значение имеет результат. Ты ДОЛЖЕН найти ответ на поставленный вопрос. Ты ДОЛЖЕН решить задачу, которую поставил перед тобой преподаватель или автор учебника. Ты ДОЛЖЕН закончить проект. Однажды “доведение дел до конца” войдет в привычку, и ты станешь профи.
14 качеств хорошего программиста
Дарья Гайна, руководитель отдела веб-разработок в компании JMA SRL, рассказала Tipler о том, какими качествами должны обладать эффективные программисты.
Нам часто приходится бросать себе вызов в поиске талантливых, опытных программистов, а особенно, если предлагаемая зарплата должна соответствовать бюджетам проектов. За последние несколько месяцев нам пришлось нанять большое количество разработчиков в связи со значительным расширением клиентской базы. Это была большая проблема, так как наша компания является не крупной, и необходимо иметь особый талант убеждения, чтобы заинтересовать специалиста оставить внушительную компанию с большой зарплатой для работы в нашем агентстве.
Я решил написать небольшую статью о некоторых характеристиках, которые очень важно учитывать, по- моему мнению, при найме хорошего программиста, исходя из нашего опыта. Помимо знания языков программирования, необходимых для выполнения работы, существуют и другие определенные требования к этим специалистам.
Я выделил 14 качеств, которые помогут отобрать правильного претендента.
1. Хорошие технические навыки
Одна ошибка, которую совершают многие менеджеры — это найм согласно списку утвержденных требований. Вместо того, чтобы требовать два года работы с 1С Битрикс, посмотрите на общую картину опыта программирования. Программист, который работал с другими системами управления много лет, но недавно начал изучение Битрикс, сможет идеально подходить, поскольку, его многолетний опыт дает ему отличную основу для развития.
Например, при интервью Вы можете спросить: опишите свой опыт работы с другими системами управления.
2. Готовность учиться
Технологии всегда развиваются, а навыки и способности, которые имеет сегодня программист, скорее всего, устареют через несколько лет. Важно найти такого специалист, который заинтересован в следовании последним тенденциям и стремится участвовать в любых возможностях непрерывного образования.
Например, при интервью Вы можете спросить: что Вы делали и делаете, чтобы сохранить актуальность своих навыков программирования?
3. Устранение ошибок
Написание кода — это только часть работы программиста. Когда программное обеспечение не работает должным образом, профессиональный специалист, как ожидается, быстро и эффективно должен уметь устранить проблему. Вместо того, чтобы тратить часы, слепо делая изменения, хороший программист предпочитает тщательно исследовать свой код и устранять возможные проблемы до тех пор, пока не будет получен положительный результат.
Например, при интервью Вы можете спросить: как Вы отслеживаете и исправляете ошибки в своем коде?
4. Идеальная рабочая среда
Некоторым программистам требуется полная тишина, чтобы сосредоточиться, а другие могут работать в шумном офисе. Личные предпочтения работника являются важной частью его производительности, поэтому, лучше всего, четко прояснить ситуацию в офисе, избегая проблем, когда новый сотрудник уже выйдет на работу.
Можно спросить: Опишите Вашу идеальную рабочую среду.
5. Умение решать проблемы
Для тех, кто никогда не пытался создать приложение с нуля, программирование лучше всего сравнить с решением чрезвычайно сложного математического уравнения. Хороший программист преуспевает в поиске способов заставить что-то работать, несмотря на все трудности и сложные условия. В противном случае Вы можете услышать фразу «Это не может быть сделано» каждый раз, когда Вы предлагаете инновационный новый проект.
Хороший вопрос при интервью: как бы Вы создали (можно предложить разобрать очень комплексный проект с использованием новых технологий)?
6. Страсть к работе
В то время, как некоторые сотрудники по программированию могут просто выполнять функции от девяти до пяти, многие менеджеры заинтересованы в поиске того, кто, с радостью, сможет задерживаться, когда ситуация требует этого. Часто этих сотрудников можно выделить во время собеседования по их основным интересам.
Хороший вопрос для интервью: Чем Вы увлекаетесь?
7. Стрессоустойчивость
Программирование, может быть, чрезвычайно напряженной профессией. Когда “горят” сроки, и ничто, кажется, не работает, можно получить сильный стресс. Идеальный кандидат на вакансию программиста сможет спокойно справляться с самыми стрессовыми ситуациями и, самое главное, иметь возможность продолжать работать в таких условиях.
Вопрос при интервью: Опишите случай, когда Вы находились под сильным давлением, и Ваш проект не работал по причинам ошибок в коде. Что Вы делали в этой ситуации?
8. Коммуникационные навыки
Как правило, от программистов не требуется высоких навыков по обслуживанию клиентов. Кажется, что они весь день сидят перед компьютером. Тем не менее, программисты регулярно должны взаимодействовать с менеджерами, сотрудниками и клиентами, поэтому необходимы хорошие коммуникационные навыки для работы с другими людьми. Это особенно верно, если Ваши программисты иногда просят принять участие во встречах с клиентами, чтобы объяснить как работает система.
Пример для интервью: Объясните, как работает Ваше любимое приложение так, чтобы непрофессионал смог бы быстро вникнуть в процесс.
9. Бизнес видение
Легко упустить из виду большую картину, сосредоточившись на создании одного программного обеспечения. Идеальный программист имеет бизнес-фокус, который позволяет ему выйти за пределы текущего проекта. Программист, ориентированный на бизнес, предложит идеи для новых проектов, которые помогут улучшить и автоматизировать работу.
Пример вопроса на собеседовании: Вам когда-нибудь приходилось делать предложение об улучшении бизнес-процессов?
10. Способность планировать
Вместо того, чтобы сразу “погружаться” в новое задание, хорошим качеством для программиста является изучение информации о желаемом конечном продукте. Только после этого анализа, программист сможет разработать структуру проекта и приступить к написанию программного кода.
Пример для интервью: Объясните свой подход к новому проекту. Что Вы делаете в первую очередь?
11. Терпение к ошибкам
Программисты редко выполняют всё правильно с первой попытки. На самом деле, неудачи при разработке почти гарантированы. Важно найти специалиста, который видит свои ошибки и воспринимает их, как возможность улучшения своих навыков, а не как признак поражения.
Пример вопроса для собеседования: Вам приходилось когда-нибудь проводить много часов за кодом и прийти к выводу, что Вы их потратили в пустую? Что Вы делали в этой ситуации?
12. Навыки командной работы
Программист редко работает в одиночку, даже если он единственный разработчик в компании. Программисту важно уметь работать с дизайнерами, менеджерами, специалистами по маркетингу и продажам, а также с другими программистами.
Пример вопроса для интервью: Поделитесь впечатляющим опытом команды.
13. Готовность к исследованию
Язык программиста является лишь частью работы. Хороший разработчик должен уметь погрузиться в конкретную отрасль, чтобы разрабатывать программы, которые работают на определенную аудиторию и в конкретной сфере.
Пример вопроса для интервью: Расскажите нам о случае, когда Вам нужно было узнать о конкретном бизнесе/отрасли? Как Вам приходилось проводить изучений и исследование в такой ситуации?
14. Уважение сроков
Большинство программистов работают над проектами с определенными сроками. Хотя важно, чтобы менеджеры выделяли разумное время для разработки. Программисты должны также понимать и придерживаться крайних сроков. Очень важно и бесценно, если программист способен сделать всё возможное, чтобы выполнить работу в установленные сроки.
Пример вопроса: Опишите тот случай, когда Вам нужно было выполнить проект в сжатые сроки.
Как найти подходящего сотрудника
Есть несколько недостатков, на которые рекрутер обратит внимание:
слишком длинное резюме
неграмотная верстка, разные шрифты, выделение цветом
ошибки в терминологии
нет ссылок на соцсети (минимальное требование — LinkedIn)
чересчур креативное CV, если кандидат не дизайнер
перечислено много курсов, не относящихся к профессиональной деятельности
Остальные качества нужно выяснять при встрече или уточнять в общении онлайн.
«Чтобы понять, какие soft skills важны, необходимо рассматривать кандидата в разрезе корпоративной культуры компании. В каждой организации есть свои ценности, маркеры компетенций и свод правил.
Идеальный вариант, когда ценности соискателя совпадают с ценностями компании, когда человек разделяет ваши подходы к менеджменту и организационной политике», — объясняет Александра Лукасевич.
«В первую очередь обращаю внимание на гибкость и масштабность мышления, честность, ориентацию на результат, лояльность. Человек должен быть технологически подкованным, системным и уметь быстро осваивать новые навыки. Важно, чтобы кандидат хотел развиваться как профессионал», — отмечает Марина Галак.
Александра Лукасевич говорит: «Hard skills должны оценивать заказчики вакансии. При системном подходе рекрутеры заранее составляют чек-листы, готовят задания и вопросы для оценки этих навыков.
Но кандидату интереснее общаться с тем специалистом, у которого есть базовые знания в разных областях.
Нужно знать разницу между языками программирования, фреймворками. Чтобы разбираться в разных IT-отраслях, участвуйте во внутренних обучающих программах компании, читайте профильные статьи на ain.ua, dou.ua, habrahabr.ru, mashable.com, techcrunch.com, medium.com etc. Ходите на внешние профильные конференции, мастер-классы, форумы».
«Чем больше у тебя опыта подбора профессионалов определенного уровня, тем сильнее и быстрее ты разбираешься в технологиях, языках программирования, фреймворках и т. д.
Технические глубинные знания для проведения интервью не нужны, hard skills оценивает работодатель. Желательно ориентироваться в терминологии, понимать, какие задачи будет решать конкретный специалист на новой позиции, быть готовым ответить на вопросы и разбираться в трендах отрасли.
На первичном собеседовании кандидату должно быть комфортно, чем больше рекрутер разбирается в разных сферах — тем лучше», — подчеркивает Марина Галак.