- День добрый, присаживайтесь ... Давайте поговорим о вас. Начнем с области ваших интересов ...
Сейчас вы наверное подумали "Ха, с каких это пор собеседования начинаются с таких общефилософских
вопросов? Обычно, после вступления, лучше распросить о последнем проекте". Но мы же общаемся с HR менеджером,
не забыли? А он вполне может не разбираться в технических подробностях и поэтому сконцентрируется
на личностных вопросах. Ну как я, выкрутился?
- Так все таки о ваших интересах ...
Если коротко - software engineering на платформе Windows.
- А "разработка программного обеспечения" звучит не так красиво?
Да нет (улыбаясь). Я вовсе не люблю говорить что-нибудь вроде:
"Эти контент менеджеры из отдела маркетинга опять новые фичи хотят.
У нас и так все SDE* и QA** по уши в работе. Вот пусть HR*** кого-нибудь
подкинет, тогда и будем думать :)
Просто под разработкой программного обеспечения больше понимается именно программирование.
Спросите меня об этом еще год назад - и я именно так бы вам и ответил. Тогда идеалом для
меня было что-то типа: "Дайте мне новый проект и постарайтесь не отвлекать. Тогда вы получите
красивое решение, а когда процесс запустится - было бы неплохо найти какую-нибудь новую задачу."
- Ну а сейчас?
Знаете, есть достаточно простые истины, задумываться о которых все равно начинаешь не сразу.
Если ты хороший специалист - не так уж и сложно написать что-то работающее
и вовремя. А вот добиться того чтобы команда, работающая над проектом, сделала то же самое -
намного труднее. Люди всегда будут оставаться главной причиной удачи или провала проекта,
так что когда вместо одного человека в игру вступает целая команда плюс группа поддержки (по
крайней мере очень хочеться в это верить) со стороны заказчика - проблем и ответственности
у такой команды будет намного больше. И тем интереснее решать такие задачи.
Вот весь этот процесс и имелся в виду под "software engineering". Если сравнить его со всем
предыдущим текстом - действительно получилось несколько короче.
- Ну хорошо. А почему именно Windows? Считаете что писать под Unix\Linux не так интересно?
Вовсе нет. Просто чтобы говорить, что "писать не интересно" нужно как минимум "писать".
Слишком уж динамично развиваются IT-технологии и чтобы быть на гребне волны,
постоянно приходится бежать впереди паровоза. Так что тут не хватает времени
разобраться со всем интересным даже в пределах одной платформы. Поэтому профессионально работать
и с той и с другой системой просто не получится.
Так что мне вполне хватает Windows и с ней до сих пор - очень интересно. Ну а после выхода VS 2005,
.NET Framework 2.0 и TFS она вобще превратилась в яркую игрушку.
- Ну а какими проектами вы сейчас занимаетесь? И чем бы хотелось заниматься?
Знаете, я давно уже понял, что не бывает интересных и неинтересных задач - бывают выразительные и
невыразительные средства разработки. Если у вас есть возможность спроектировать архитектуру системы
и реализовать ее на нормальном объектно-ориентированном языке - думаю любая задача будет интересной.
Мне приходилось заниматься очень разными задачами, начиная от банальной складской системы и заканчивая
модулями для комплекса проектирования микропроцессоров (почему заканчивают линейку задач именно микропроцессоры,
а не что-нибудь другое, с чем я тоже сталкивался, например низкоуровневые драйвера для работы с программируемыми
электрическими счетчиками, интернет-порталы или системы автоматизации всего-чего-угодно - я не знаю.
Наверное просто микропроцессор представляется мне очень-очень сложным (еще бы, миллионы транзисторов,
многоуровневые слои разводок и прочая микрохрень). Ладно, пока я не запутался во вложенности скобок -
пора выбираться из этого предложения) - и всеми ими (вы еще не забыли? речь шла о задачах) действительно было интересно заниматься, так
как никто не ограничивал в выборе средств для реализации.
Ну а по поводу проектов - сейчас в основном это web-приложения. Это вовсе не принципиальная позиция,
просто их больше заказывают. Конечно, всегда можно объяснить, что распределенные win-приложения (а какие
приложения сейчас не распределенные?) тоже могут использовать http протокол для передачи данных или
загрузки патчей и модулей обновления - но все же волшебная легкость доступа из любого браузера
любого компьютера из любой точки заставляет заказчиков все больше и больше склоняться именно к web-решениям.
(если вы иронически улыбнулись словам "волшебная легкость доступа из любого браузера"
- мы поняли друг друга :)
- Ну и какой же объектно-ориентированный язык вы считаете нормальным?
Ну ладно, выразился я неудачно :) Но все же фраза "нормальный объектно-ориентированный язык" - вовсе не тавтология.
Еще не так давно, во времена Visual Studio 6.0 (для тех кто не в курсе - была такая среда разработки в эпоху
неуправляемого кода. Да-да, представте себе, было время, когда не существовало такой привычной
.NET Framework, да и вобще письма, например, нужно было бросать в почтовый ящик, а не отправлять из Outlook).
О чем это я? А, да, во времена Visual Studio 6.0 кроме Visual С++ существовал (и очень успешно) Visual Bacis.
Вот с ним приставка "объектно-ориентированный" звучала несколько иронично.
Ну а сейчас, когда .NET CLR практически стерла разницу между языками, выбор уже не так и важен.
До этого я много писал на С++, ну а потом взял и перешел на C#. Я не считаю его принципиально лучше С++.
Просто это новый язык, а значит в нем были собраны наиболее удачные идеи из существовавших на то время
Java, C++ и Object Pascal. Что-что, а перенимать и использовать удачные идеи Microsoft умеет превосходно.
Ну и еще, поскольку в самом Microsoft C# позиционируют как основной язык для внутренних разработок
(на нем уже написана значительная часть .NET Framework), то самые вкусные конфеты будут доставаться
именно этому языку среди всех, что сейчас поддерживаются Visual Studio .NET.
- Хорошо, самое время вспомнить, что мы на собеседовании и сменить тему.
А то разговор скорее стал напоминать интервью какому-то журналу.
Вот вы говорили, что занимались web-приложениями. Давайте что-нибудь простое, например,
какие аргументы принимает стандартный обработчик нажатия кнопки в ASP.NET?
Не помню (смеется). Но найду ответ в MSDN гораздо быстрее, чем вы сможете мне объяснить,
какая связь может быть между людьми, знающими ответ на этот вопрос и людьми, которых
вы хотите найти для вашей компании.
- Иронизируете? Ну хорошо, вот вопрос посложнее. Как вы думаете, сколько всего бензоколонок
в Соединенных Штатах?
Я конечно могу начать рассуждать с умным видом:
"Допустим, что на каждую семью приходится по одному автомобилю.
Если считать, что средняя семья состоит из 3-х человек, а население Соединенных Штатов - 300 миллионов, это даст
100 миллионов автомобилей. Далее, средний автомобиль заправляют раз в неделю ..."
Но все таки я думаю, что компания может однажды здорово пролететь, если будет рассчитывать на человека,
который получит ответ именно таким образом, а не обратится за справкой в Министерство транспорта США.
- И последний вопрос. Чем вы интересуетесь еще кроме работы? Не просиживаете же все время за компьютером?
Ну (улыбается), часто так и получается. Просто приятно, когда работа бывает еще и увлечением и я этим
пользуюсь. Ну а если серьезно, трудно напряженно работать без такого же напряженного отдыха :) Так что
конечно интересует. Это конечно горные лыжи (редкий случай, когда меня не интересует даже компания),
традиционный горный Крым, рюкзак и палатка на майские праздники, костер и гитара (тут я к сожалению только
слушатель, зато очень хороший :) и главное - люди, которые рядом с тобой разделяют все эти удовольствия.
Было бы у меня больше времени - возможно мой
личный сайт смог бы рассказать вам больше. Но (немного смущенно)
с тех пор как я его сделал (а это было лет шесть назад), у меня почти не доходили руки что-то на нем обновить.
Но надежду сделать это я так и не оставил :)
Хм, кажется как всегда я слишком увлекся и все это не очень то и похоже на собеседование ...
А значит будет о чем поговорить и в следующий раз ...
* SDE - software design enfineers, инженеры по дизайну программного обеспечения,
одно из названий разработчиков в Microsoft.
** QA - quality assurance, специалисты по контролю качества. Часто так называют отдел тестирования,
но более точное понятие - люди, которые контролируют качество всего процесса разработки,
начиная с создания общей картины будущего проекта (envisioning) и планирования и заканчивая
развертыванием и поддержкой.
*** HR - human resources, специалисты по подбору персонала.