Когда я начинал обучаться разработке, то считал что хороший программист должен обладать такими основными гибкими навыками как усидчивость, внимательность и ответственность. И это действительно так, но устроившись на работу, общаясь со старшими коллегами и наблюдая за развитием IT сферы начал понимать, что есть качества важнее вышеперечисленных. Прошло то время, когда для того чтобы быть хорошим программистом достаточно знать язык программирования, закрыться в кабинете и молча писать код. В современной модели хороший разработчик должен иметь развитые гибкие навыки (они же софт скиллы), а также на базовом уровне разбираться не только в своей, но и смежных областях. В этом коротком рассказе хочу поделиться какими на мой личный взгляд качествами и компетенциями, не относящихся к техническим знаниям, необходимо обладать хорошему и востребованному программисту. Кстати, на эту тему я снял видео, можете посмотреть его по ссылке на ютуб. Итак, я выделил шесть, по моему мнению, важных характеристик. 1. Решение проблем. Если вы решили стать программистом, будьте готовы что вам постоянно придется сталкиваться с незнакомыми задачами, непонятными ошибками, вы будете задаваться вопросом почему программа в этом месте работает не так как я задумал или не работает вообще. Прежде чем сразу бежать за помощью к старшим коллегам, лучше попробовать самостоятельно докопаться до истины и найти ответ, возможно ответ кроется в первой строчке гугла. 2. Быстрая адаптация к изменениям. Мир IT стремительно изменяется и развивается. Выпускаются новые фреймворки и инструменты, выходят новые версии языка, а завтра руководство может прийти и сказать, что необходимо мигрировать в другую базу данных с которой вы ранее не работали, или в новом проекте будет использоваться сборка не maven, а gradle. Изучить документацию, пройти обучение, принять, что без изменений нет роста, вовлечься в процесс и есть навык быстрого приспособления к чему-то новому. 3. Тяга и упорство. Два качества, которые дополняют друг друга и объединены в одном пункте. Если вам нравится то, чем вы занимаетесь, вероятность успеха увеличивается. Вспомните великих ученых, поэтов, актеров, художников. Все они стали великими в том числе и потому что были одержимы своим делом. Часто в разработке есть задача, а как её решать неизвестно, но результат то нужен. Приходится искать пути, перелопачивать гугл, разбираться в чем-то новом, мелкими шажками пробовать разные решения. Тут и приходит на помощь упорство. И нужно понимать, что должного упорства без тяги не будет. 4. Работа в команде. Большой продукт или проект создается целой командой, которая идёт к единой цели. Что это значит для разработчика: необходимо часто контактировать с коллегами, подсвечивать факторы, препятствующие решению задач и главное писать понятный и желательно документированный код, а также уметь разбираться в чужом коде. 5. Умение планировать время. С большой вероятностью у вас будет не одна, а несколько задач, над которыми вы будете работать. Здесь важно уметь правильно расставить приоритеты, оценить сколько времени потребуется на решение, с какими сложностями и подводными камнями можно столкнуться в процессе. Лично я до сих пор не научился управлять временем, но знаю, что с опытом это качество приходит. 6. Стремление к обучению. Первый момент, как я уже говорил разработка постоянно развивается и нельзя один раз изучив язык программирования работать с этими знаниями всю жизнь. Необходимо их не только поддерживать, но и получать новые и актуальные, чтобы оставаться на плаву. Второй момент, вам поставят задачу, например, развернуть приложение на OpenShift, с которым вы ни разу не работали. Куда лучше с большим желанием ознакомиться с этой платформой, чем разбираться с ней скрипя зубами и не понимать, почему от вас этого требуют. Конечно это далеко не все качества хорошего программиста, но на мой взгляд основные, для того чтобы быть успешным в своем деле и на работе вас ценили.