Стандартный Программатор

Около недели назад я принял участие в конкурсе на вакансию в 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 года назад с совершенно пустой головой, не загруженной десятками тысяч страниц различных книг и пособий.

Теги: #программирование #разработка #разработка сайтов

Вместе с данным постом часто просматривают: