Уважаемые пользователи!
Многолетняя практика работы в одном из подразделений IT-компании, руководителем которого я являюсь, позволяет мне сделать заключение о достаточном уровне собственного профессионализма. Наша компания практикуется на разработке и поддержке программных систем, в связи с чем мы имеем довольно стабильный рейтинг заказчиков. Среди них есть и официальные лица, и наши приятели, пользующиеся современными видами программного обеспечения. Грамотные программисты сегодня, в век стремительно развивающихся информационных технологий, востребованы везде. Но "как определить, насколько высок уровень привлекаемого к проекту разработчика?" - понимают далеко не все работодатели, судя по многочисленным вопросам, поступающим лично в мой адрес. В связи с этим, я решил систематизировать свои соображения на этот счет, Результаты моих умозаключений я и предлагаю вам в настоящей статье.
Так как же выбрать фрилансера для выполенния задач организации?
Поверьте, наивно было бы полагать, что ваш "новичок" справится со всеми информациооно-технологическими задачами, которые вы поставите перед ним. Индустрия IT-технологий претерпела в последнее время кардинальные инновационные перемены. Как следствие, функции и возможности программистов дифференцируются теперь по узким специализациям. Это означает, что системный администратор может "потеряться" в программировании, и наоборот. Как и в любой отрасли знаний, в программировании тоже необходима (и востребована) узкая специализация, позволяющая отшлифовать умение, способности и знания до совершенства.
Промышленность ждет промышленных программистов
Если вы находитесь в активном поиске программиста для выполнения производственных задач, то вам нужен именно промышленный программист. Такой специалист способен решить поставленную задачу в пределах отведенного срока. Если свои услуги вам предлагает человек, знакомый с несколькими языками программирования, это еще не означает, что этот "специалист" способен к эффективной самоорганизации и систематическому выполнению задач в установленные сроки. При этом, важно, чтобы человек мог постоянно, стабильно работать в заданном режиме, а не от случая к случаю.
Должен вас огорчить: во время первого "свидания" распознать истинные таланты такого соискателя вряд ли удастся. Тем не менее, выход есть: проверьте уровень его способностей, прежде, чем он проверит уровень вашего терпения. Попробуйте поручить ему выполнение не очень сложной практической задачи, требующей верного подхода к своему планированию и решению. Ограничьте сроками в несколько дней. Цените его и свое время и, тем не менее, соглашайтесь на рабочие встречи по окончании рабочего дня. Предполагается, что и вы, и ваш соискатель заинтересованы в том, что он "пока что" занят на предыдущем месте работы. Такая ситуация не обязывает вас немедленно принимать человека на работу, ни его - любой ценой справиться с поставленной задачей.
Для тестирования заранее подготовьте и сформулируйте задачу. Ваш программист должен за пару дней подготовить обоснованный план работы. Он должен быть разбит на этапы, определены сроки этих этапов и ожидаемые результаты по каждому из них. Если вам озвучивают только одну дату - дату завершения работы, будьте осторожны. Результаты выполнения такой работы невозможно своевременно (по-этапно) проконтролировать. Очевидно, что при таком подходе можно благополучно "завалить" весь проект. А как в таком случае вы объясните причину провала своему руководителю?
На проверочной стадии позвольте соискателю самостоятельно определиться с по-этапными сроками. По истечении первого срока запросите отчет о выполнении первой задачи. Если соискатель - человек неорганизованный и нерадивый . он сбежит сразу же. Моя личная практика показывает, что 50% людей, ищущих работу, уходят после невыполнения работ первого этапа. Вторые 50% ваших потенциальных сотрудников - увы! - исчезают после второго этапа. Но если вам встретился человек, выполнивший работу в отведенные этапы времени - будьте уверенны, это - не художник, ожидающий вдохновения. Это - сотрудник, который рационально распределяет не только свое время, но и личный рабочий потенциал.
Оценка знаний языков программирования и прикладных систем
Вероятно, я рискую вас удивить, но полагаю, что уровень знаний в этой области особо не важен (исключение составляют специфические языки и системы). За свою практику я освоил более 20 языков программирования. На изучение одного языка или библиотеки у меня уходило не более недели (при наличии соответствующей литературы и возможности получить при необходимости консультацию у опытного коллеги).
Таким образом, переоценивать значение этого фактора я бы не рекомендовал. Однако, нужно знать, что языки программирования поделены на группы, различающиеся логикой программирования:
- алгоритмические языки высокого уровня;
- языки запросов;
- аппаратные языки.
Я бы отметил, что человек способен быстро освоить язык программирования из той группы, с которой он уже знаком. Овладение SQL, например, скорее всего, вызовет затруднения у человека, не работавшего с базами данных и не владеющего языками , пусть даже он и много работал с С++.
Вот, такая арифметика!