На думку відразу приходить відповідь – хороший програміст той, який пише хороший код. Це так, але лише частково. Справа в тому, що «хороший програміст» – комплексне поняття і код – лише одна із складових частин. Що ж дійсно важливо? Уміння комунікувати, вміння приймати / передавати інформацію від інших людей (іншим програмістам, замовникам, підлеглим і т.д.). І ніякі hard skill, ніякі фреймворки вам не допоможуть, якщо ви не вмієте нормально донести свою думку, пояснити.
Оцінювати вас будуть не тільки по доброму коду. Але і за вмінням працювати в команді, відповідно – комунікувати. Минув той час, коли можна було закритися в гаражі і пиляти геніальну програму. Зараз так не працює. Навіть якщо ви допускаєте помилки в коді, але вмієте працювати в команді – вас будуть цінувати набагато більше, ніж якщо б ви просто писали відмінний код.
Скільки разів була ситуація, коли код був прекрасним, але не відповідав вимогам замовника. Так, звичайно, код хороший, але замовник хотів по-іншому. А ви це не почули. Або не запитали. Або не змогли пояснити, як це повинно працювати.
Так, у програмістів є таке уявлення, що всіма питаннями по проекту займається PM. Почасти це вірно, але не все так просто. Часто PM виступає з боку замовника. У аутсорс це дуже поширена історія. В цьому випадку ви або ваша команда опиняєтеся в прямому підпорядкуванні замовника, без буфера у вигляді PM. Відповідно, ви безпосередньо відповідаєте перед клієнтом. Навіть в тому випадку, якщо PM з вашого боку, дуже велика ймовірність, що звертатися до вас будуть безпосередньо, або що ви будете доповідати про результати роботи на загальних мітингах команди з замовником.
Тому все зводиться до одного – хороший програміст той, який вміє добре комунікувати і виконувати завдання так, як цього хоче клієнт.