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

По каким признакам определить хорошего программиста?  Что должен уметь разработчик?

1. Использовать фреймворки

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


2. Использовать контроль версий

Системы контроля версий позволяют отслеживать все изменения внесенные в код, сравнивать, делать ответвления и совместно работать над проектом не «наступив пальцами» на участников  команды разработки.
Git  наиболее популярная система контроля версий. С ней очень просто начать работать. Можно легко превратить папку проекта в репозиторий одной командой консоли. Опытные разработчики в полной мере используют возможности GIT с помощью командной строки, однако каждая среда разработки (IDE) имеет интеграцию основных возможностей системы контроля версий.


3. Повторно использовать код

Изобретение своих велосипедов и костылей, является большой проблемой программистов. Можно провести день кодинга, чувствуя невероятную продуктивность, но потратив 30 секунд на поиск в Гугле, найти библиотеку, которая делает именно то, что нужно. Положительная черта хороших разработчиков в том, что они используют менеджеры пакетов для своего языка программирования для поиска библиотек, которые они могут использовать, прежде чем решать проблемы самостоятельно.
Каждый язык программирования имеет свои онлайн репозитории, что позволяет быстро найти и прикрутить нужную библиотеку — PHP — Packagist , NodeJS — NPM , Ruby — Gems , Python — PyPi  и т.д.
Использование функционала сторонней библиотеки, позволит сэкономить время в долгострочной перспективе.


4. Писать тесты

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


5. Серьезно относится к безопасности

CSRF, SQL инъекции, XSS, перехват сессий*, MITM атаки* — то, о чем так же необходимо помнить при написании кода. К счастью, авторы фреймворка побеспокояться о большинстве, но важно, что вы знаете, что угрозы есть и понимаете как их уменьшить. В интернете существует несколько видео-курсов, с которых можно начать.


6. Документировать код

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


7. Разбираться в администрировании

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


8. Отслеживать новые библиотеки и инструменты

Разработка программного обеспечения чрезвычайно динамичная часть ИТ индустрии. Каждый год появляются новые крупные библиотеки, средства автоматизации, системы сборок, CSS фреймворки, препроцессоры и даже языки программирования. Хороший разработчик успевает идти в ногу с новыми технологиями и открыт для изучения. Однако, не все применяются. Нужно понимать, что время программиста дорого стоит и они учатся в качестве инвестиций. Инструмент должен активное сообщество энтузиастов, хорошую документацию и явные преимущества над старой, прежде чем стоит восприним её всерьез.


9. Эффективно управлять своим временем

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


10. Следить за здоровьем

Мы проводим большую часть рабочего дня сидя и смотря на экран компьютера в полуметре от глаз. Это может привести ко многим проблемам: хронической боли в спине и в шее, проблемы со зрением, увеличение веса и многое другое. Не трудно предотвратить появление подобных проблем — перерывы, небольшие прогулки в обед, 7 минут тренировки утром и вечером, достаточное количество сна. Всё это обладает хорошим тонизирующим эффектом на мозг и сделает организм более здоровым.