Около недели назад я принял участие в конкурсе на вакансию в Microsoft. И потерпел неудачу.
Прошла неделя, мысли в голове (как такое может быть? Не может быть!) немного успокоились и я сделал некоторые выводы из этого опыта, которыми хочу поделиться с хакерами.
4 года назад, когда я заканчивала университет, я не знала, кем хочу быть.
Поскольку в студенческие годы я работал сисадмином, то принимал участие в основном в конкурсах на аналогичную должность.
Совершенно случайно по совету друга я попал в довольно крупную новосибирскую компанию на собеседование на позицию C++-разработчика.
На собеседовании мне задавали очень разные вопросы (для чего нужно наследование? Вы знаете stl?), на 90% из которых я не ответил, но хорошо запомнил только один: «как перевернуть строкуЭ» Я подумал об этом и написал псевдокод на смеси C++, Pascal и PHP. Мне сказали: «ну, ладно… а теперь без буфера, сохраняющего положение середины строки…» Я думал-думал, думал-думал и сдался.
Мне сказали: «Мы тебя забираем.
Иди на работу в понедельник».
Как мой будущий тимлид смог разглядеть во мне умного (не скромно, правда?) разработчика, для меня до сих пор загадка.
Я спросил его позже, и он сказал, что другие были просто хуже, и я тоже был не так уж плох.
Вот если бы я был на его месте, я бы, наверное, никого не взял.
Мне понравилась компания, в которой я работал.
Нам дали время для повышения собственного профессионального уровня и чтения книг.
Мы (зеленые, вчерашние студенты) посещали семинары, где нам рассказывали о паттернах проектирования, объектно-ориентированном проектировании и многом другом.
Через полгода я уже неплохо владел языком C++.
Кроме того, я освоил инструменты отладки, поиска утечек памяти, профилирования и модульного тестирования.
Потом у меня было еще много работ. Мое нынешнее место работы - 5-е по счету, включая период фриланса.
И чем больше я разбирался в различных программных системах (от банального сайта до CDN, от VoIP-шлюза до CRM-системы), тем больше ненавидел людей, которые это писали.
Особенно я ненавидел выпускников механико-математического факультета и бывших участников олимпиад. Я не понимал, зачем мне самому реализовывать двоичную сортировку, не понимал, зачем мне реализовывать связанный список или зачем мне нужно было писать портативный сервис обмена сообщениями, использующий тот же протокол.
И тогда мне пришлось иметь дело с этими самодельными решениями и поддерживать их.
Чтобы не испортить себе карму и не вызвать ненависть коллег, я старался решать любые стандартный проблема стандартный способ.
Для реализации хранения данных в СУБД я использовал стандартный ORM (Hibernate, Doctrine) и даже не пытался написать свой.
Если мне нужно было спроектировать новую часть системы, я использовал стандартный и простые узоры дизайна из классики.
Если мне нужно было реализовать отправку почты, я использовал стандартный библиотеки для этого (Java Mail API, Zend Framework).
Такой стандартный Я знаю довольно много решений (и продолжаю искать их каждый день), чтобы решить практически любую проблему.
Я как хороший повар, который умеет готовить самые разнообразные блюда и знает множество разных рецептов.
И у меня сложилось впечатление, что хороший программист должен быть именно таким.
Применять стандартный решения для стандартный задания.
И чем больше таких решений он знает, тем лучше программист. … и все это привело к тому, что я разучился думать.
На любой технический вопрос я ищу ответ в Google. Когда во время собеседования в Microsoft меня спросили, как выбрать из int ar[n] = {.
} n-1 элементов так, чтобы произведение выбранных было максимальным, я на некоторое время впал в ступор.
Первый вопрос, который пришел мне в голову, был: «Нахрена? Почему?" Потом я попытался вспомнить аналогичный алгоритм из какого-то стандартный библиотеки, которых я знаю не одну.
так и не смог.
В конечном итоге я решил проблему, но, видимо, не так легко, как ожидал интервьюер.
я не плохой стандартный программист, который умеет быстро решать стандартный задания.
Я никогда не применяю нестандартное решение, пока не изучу все результаты Google до последней страницы.
Я вообще не люблю писать исполняемый код, потому что постоянно допускаю в нем ошибки, которые потом нужно находить и исправлять.
Мне нравится добавлять XML-конфигурации, которые входят в пакет от разработчика.
я стандартный программист. И это, наверное, даже не так уж и плохо.
Но я уже не могу решать нестандартные инженерные задачи так же легко, как 4 года назад с совершенно пустой головой, не загруженной десятками тысяч страниц различных книг и пособий.
Теги: #программирование #разработка #разработка сайтов
-
Аркрайт, Ричард
19 Oct, 24 -
Архитектор Проггер И Приемная Комиссия
19 Oct, 24 -
Интерфейс Игры И С Чем Его Едят
19 Oct, 24 -
Бесплатная Zend-Студия
19 Oct, 24 -
W3C Запустил Новый Сайт
19 Oct, 24