Как узнать, следует ли компания лучшим практикам в разработке? [дубликат]

Некоторое время я был на Stack Overflow и Code Review, и я восхищаюсь людьми, которые помогают в этом и дают потрясающие обзоры кода. У меня самого тоже есть немалый опыт. К сожалению, встретиться и работать с такими людьми в реальной жизни практически невозможно.

Каждая компания, в которой я работал (примерно 8-12 до сих пор, также в качестве подрядчика), была настолько непрофессиональной, что я удивляюсь, как она вообще еще функционирует. Там люди понятия не имели о самых элементарных понятиях. Повсюду волшебные строки, пространства имен с именами классов, классы с несколькими обязанностями, все, что вы можете сделать неправильно, они умудрились сделать именно так.

Что еще хуже, они не стремились к улучшению. Им требовалось огромное количество времени для реализации простейших изменений, потому что их код был очень плохим.

Я решил попытаться найти новую работу, где я мог бы работать с настоящими профессионалами, поэтому я создал эту новую учетную запись, чтобы задать этот вопрос (потому что я использую другую для резюме).

Вопрос в том, как узнать, хорошо ли сотрудники компании делают то, что они делают?

Не могли бы вы сказать, что это хорошая идея, чтобы попросить образец их кода? Если они хотят проверить, что я могу, я также хотел бы увидеть, стоят ли они моего времени. Я не хочу тратить почти все свое рабочее время на отладку какого-то старого кода, где каждая переменная представляет собой значения от tmp1, str1, lst3 до tmp23.

Я хочу быть не просто кодером, а инженером и создавать надежное и расширяемое программное обеспечение благодаря своему дизайну, а не из-за вездесущих попыток/отлова и сотен «если» для исправления каких-то глупых ошибок или нескольких сотен строк кода внутри программы. обработчик события.

Я пробовал linkedin и xing, но закрыл обе учетные записи после того, как заметил, что у большинства людей просто фальшивые подтверждения своих навыков.

Что я должен сделать, чтобы не только пройти собеседование, но и взять интервью у потенциальной компании. У вас есть опыт в этом и вы могли бы дать мне несколько советов?

Должен ли я просить о пробной работе?

Должен ли я приносить свои вопросы на собеседование?

Очень связанный вопрос - возможно, даже дубликат? рабочее место.stackexchange.com/q/4259/2322
«Должен ли я приносить свои вопросы на собеседование?» - Да, вне зависимости от должности.
Ознакомьтесь с вакансиями Stack Overflow: cares.stackoverflow.com/jobs
Обязательно попросите образцы кода. Это было бы хорошим способом оценить качество их работы и, возможно, даже дать вам некоторое представление об уровне их профессионализма.
@DavidK - Даже если вопрос не совсем тот же; ответ определенно есть то, что ищет ОП.
Да, есть компании с профессиональной практикой кодирования. Они избирательны и склонны удерживать сотрудников. Что касается профессионального - ваш вопрос больше разглагольствует, чем вопрос.
Спросите их результаты теста Джоэла www.joelonsoftware.com/articles/fog0000000043.html
«Передовой опыт» сам по себе является самоуверенным термином. Обычно, когда кто-то обвиняет других в непрофессионализме, виноваты обе стороны. Этот вопрос больше похож на жалобу, чем на просьбу о помощи в навигации по чему-либо.
@eckes Однажды я пытался взять интервью у компании, которая указала себя на Careers.SE как соответствующую всем показателям Джоэла. Интервью так и не состоялось, потому что их служба электронной почты, которая должна была отправить мне сообщение о проблеме с кодом, отказала, и никто не удосужился проверить его или ответить на мои электронные письма в течение 4 часов. Хорошая оценка Джоэла — это хорошо, но она не говорит всего, что вы хотели бы знать о компании.

Ответы (8)

Это не вопрос поднять тему на собеседовании или попросить пробную работу, это намного раньше: вам нужно сделать домашнее задание, прежде чем подавать заявку на определенную должность / компанию, и понять, предлагает ли она то, что вы ищете.

Вы заявили, что являетесь подрядчиком. Скорее всего, вас наняли для устранения проблем или создания решений для компаний, не связанных с ИТ (компаний, основной бизнес которых не связан с ИТ).

Мне ясно, что если вы подаете заявку, скажем, в розничную компанию — вы найдете в лучшем случае внутренний ИТ-отдел с ограниченными знаниями о ваших навыках. Они сохранят часть персонала для базового обслуживания имеющихся у них систем, а для более крупных проектов они, вероятно, отдадут это на аутсорсинг.

На вашем месте я бы подал заявку либо в ИТ-консалтинговую компанию (консультационные компании потребуют от вас большего, но вы, как правило, будете работать с очень квалифицированными профессионалами и работать на пределе возможностей), либо в компанию по разработке программного обеспечения с относительно большим присутствием на рынке. Не говоря уже о крупных технологических компаниях, таких как Google или Microsoft, в которых я никогда не работал, но предположу, что их персонал должен быть близок к лучшему из имеющихся.

Удачи

Во-первых, удачи в том, чтобы они передали рабочий код кандидату.

У меня есть одно предложение, которое может вам понравиться, а может и не понравиться. Может быть, вам стоит попробовать подать заявку на стартап. Если у компании нет существующих продуктов, а вы являетесь частью очень небольшой команды, вы можете формировать методы кодирования и, надеюсь, расти вместе с компанией, т.е. принимать участие в их решениях о найме.

Как предполагает @ User012876768, альтернативой является подача заявки в ИТ-компании Marquee, поскольку у них часто будет выбор выпускников. Я никогда не работал в такой компании, но вы можете себе представить, что у них довольно жесткие стандарты кодирования.

Не всегда дано. Любая крупная организация предоставит множество мест для тусовки плохих программистов. Небольшие стартапы — это хорошо, так как у них гораздо меньше шансов иметь вредные привычки и гораздо больше шансов, что вы сможете на них повлиять.

Вот в чем дело: интервью идут в обе стороны. Поэтому обязательно задавайте им вопросы, чтобы они убедили вас в своей компетентности. Например, спросите их, какие инструменты они используют, какие стандарты кода у них есть, каков их процесс, как они обеспечивают качество кода, что они думают о своей кодовой базе, даже над чем, по их мнению, может работать их компания, чем они занимаются. попытаться выявить и устранить проблемы, а также узнать, в чем хороша их компания. Когда вы проводите технические интервью, используйте это как возможность начать двусторонний диалог, а также подумайте о том, похоже ли, что ваш интервьюер тоже знает, о чем говорит.

Используйте эту технику, и она сработает для вас, поскольку вы будете выглядеть как хороший кандидат, И вы также получите представление о качестве компании.

Практически во всех компаниях вы не сможете увидеть приватный код до того, как вас наймут. Что вы можете попытаться сделать, так это найти людей, которые ранее там работали, и посмотреть, готовы ли они прокомментировать положение дел.

Если вы хотите увидеть значительное количество кодов компаний до того, как вас наймут, вам нужно быть избирательным в том, в какие типы компаний вы подаете заявку. В большинстве областей разработки программного обеспечения вы будете ограничены компаниями, выполняющими большие объемы работы с открытым исходным кодом. они выступают в списках для обсуждения и т. д. Единственным крупным частичным исключением являются компании, которые занимаются веб-разработкой для публичного доступа; в этих случаях вы можете посмотреть на клиентскую сторону, как выглядит половина их сайтов, хотя бэкэнд в значительной степени останется черным ящиком.

Что я должен сделать, чтобы не только пройти собеседование, но и взять интервью у потенциальной компании. У вас есть опыт в этом и вы могли бы дать мне несколько советов?

Лучший способ узнать о том, как на самом деле работает компания/отдел, — это поговорить с кем-то, кто там работает.

Если в вашей сети есть кто-то, кто хорошо знает компанию и методы ее разработки, поговорите с ним.

Если нет, во время интервью постарайтесь поговорить с кем-то, кто был бы одним из ваших коллег в компании. Когда я работаю менеджером по найму, я обязательно включаю коллегу в процесс собеседования. Когда я кандидат, я прошу поговорить с одним из коллег по открытой позиции.

Во время этого обсуждения вы можете спросить о компании, менеджере и всех используемых процессах.

Не просто спрашивайте: «Вы следуете лучшим практикам?» потому что «лучший» очень контекстуален. Вместо этого спросите о деталях, которые вас интересуют.

Должен ли я просить о пробной работе?

Ты мог бы. Некоторые компании имеют привычку нанимать людей на начальный испытательный срок и приветствуют такое предложение.

Должен ли я приносить свои вопросы на собеседование?

Всегда приносите свои вопросы.

Это не только гарантирует, что вы получите ответы на вопросы, которые вам нужно знать, но и продемонстрирует ваш интерес к компании, работе и карьере. Все это хорошие признаки для менеджеров по найму.

Спросите мнения своих технических коллег, учителей и наставников о репутации любой компании, которую вы рассматриваете, а также предложения других мест, которые вам следует рассмотреть.

Я подчеркиваю «ориентированность на технологии», потому что отличная культура для продавцов или клиентов фирмы может не трансформироваться в то же самое для их инженеров.

Идеальным источником информации был бы хакатон, где вы можете напрямую работать с техническими специалистами и другими людьми внутри компании.

Еще один источник информации — отзывы клиентов/жалобы на обслуживание — если продукты воняют, а обслуживание ужасное, вряд ли это будет отличное место для работы, особенно если это технологическая компания.

В этом ключе, по возможности, стать пользователем продуктов и услуг компании. Это даст потрясающее понимание.

Наконец, да, у вас есть вопросы к интервьюеру(ам), но убедитесь, что это не простые вопросы, на которые уже есть ответы на их веб-сайте или в другом месте. Вопрос «Сколько у вас сотрудников?» заставляет вас выглядеть ленивым и неподготовленным. Удачи!

Конечно ;-) Я бы не стал спрашивать ничего очевидного или того, что можно найти в Google. Это определенно были бы очень конкретные вопросы, чтобы увидеть, насколько глубоки их знания. Мне не очень нравятся ситуации, когда мне нужно объяснить, как я сделал что-то определенным образом (не логически, а технически (это было действительно элементарно))... или даже некоторые люди просили, чтобы я предпочел не использовать что-то, потому что они этого не понимают.

Компании могут быть большими местами. У одной группы или подразделения может быть совершенно иная практика, чем у другой.

Я бы не слишком беспокоился о том, что делают другие люди в компании. Обычно каждый программист работает над своим материалом. За 25 лет программирования у меня никогда не было случая, чтобы кто-то вмешивался в мой код на сколько-нибудь значительном уровне. Когда люди перенимают чужой код, они всегда полностью его переписывают.

Что касается отладки чужого кода, это неизбежно. Чем моложе и менее продуктивны вы, тем больше уборки и ненужной работы вы получите. Если вы очень продуктивны, вы потратите очень мало времени на кодирование из вторых рук. Нет ничего более раздражающего, чем начинающий программист с 3000 строками в год, жалующийся на стиль базового кода. Однажды компания, в которой я работал, наняла подрядчика со слабыми способностями, которому поручили работать над некоторыми компонентами, которые составляли ничтожную часть моей продукции, и он жаловался на мой «спагетти» код. Конечно, Mr. Beautiful Code на самом деле не написал много красивого кода, и поэтому через несколько недель его уволили.

Лично у меня никогда не было проблем с чужим кодом. Меня не волнует, насколько это плохо, или на каком языке, или в каком стиле. Я мастер-программист, поэтому я могу справиться с этим, и это меня совсем не беспокоит.

Однажды я хотел сыграть с кем-то в теннис, а они отказались, сказав: «Извините, я не играю с плохими теннисистами, потому что это портит мою игру». Это признак полного любителя. Если вы думаете, что игра с новичком "сбросит вашу игру", вам предстоит долгий путь до мастер-класса.

Если вы хотите узнать, как выглядит хороший код, загляните в Google Code Jam. Представления от лучших парней полностью поразили меня. Я очень хороший программист, но, глядя на это, я словно смотрю, как гроссмейстер играет в шахматы, просто потрясающе. Забудьте об объектно-ориентированной чепухе, которую извергают ваши профессора, они бесполезны; пусть парни из Code Jam будут вашими моделями, потому что они боги. Вы узнаете НАМНОГО больше, читая их код, чем какой-нибудь тупой справочник по дизайну.

Мой опыт был скорее противоположным, мне приходилось много модифицировать код, написанный другими, и другим людям тоже приходилось сильно модифицировать мой код. Когда люди увольняются из компании, уезжают в отпуск или просто в настоящее время недоступны, их старый код по-прежнему необходимо поддерживать/расширять.

Никто на 100% не согласен с лучшими практиками, тем более что рекомендации постоянно меняются.

Никто не внедряет лучшие практики на 100% по разным причинам: от прошлой истории проекта до потребностей бизнеса и авансовых затрат на их внедрение.

И это 100% не имеет значения. Если вы хорошо разбираетесь в своем ремесле, вы можете адаптироваться к среде, в которой они работают, узнать, каковы ограничения, а затем работать с ними, чтобы внести улучшения там, где они имеют смысл.

Хороший рабочий может сделать хорошую работу, даже если инструменты не самые современные и не лучшие. И это включает в себя когнитивные и процессуальные инструменты, а также те, которые обычно называют инструментами.

Это не предназначено для защиты старых инструментов... просто для защиты их пользователей и для предположения, что установка этого конкретного требования может привести к тому, что вы откажетесь от некоторых чертовски хороших возможностей.

Это правда, никто не совершенен на 100%, но я предпочитаю и стремлюсь работать в среде, где все идеально почти на 90%, чем в среде, где вряд ли можно достичь 5%.
У вас будет необычайно хорошо, если они надежно наберут 50%, если только вы не выберете стартап, у которого нет прошлого кода, который нужно поддерживать, и который согласуется с вашим конкретным представлением о лучших практиках и их относительном приоритете. Если это так критично для вас, я не буду спорить, но я думаю, что вы отговариваете себя от некоторых хороших работ, и если у вас нет хорошего денежного запаса, вы можете поставить себя в положение, когда в конечном итоге вам придется согласиться на что-то похуже. чем те, которые вы пропустили. Ваш звонок; если это ваше sine qua non, дерзайте