В какой момент вы бы отбросили некоторые из ваших принципов разработки программного обеспечения ради большего количества денег?


16

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

Я собираюсь признать, что за последние 12 месяцев я приобрел TDD и много ценностей Agile в разработке программного обеспечения. Я был настолько поражен тем, насколько лучше стала моя разработка программного обеспечения, что я никогда не откажусь от них из принципа. До ... Мне предложили контрактную роль, которая удвоила мою зарплату за год.

Компания, к которой я присоединился, не следовала какой-либо конкретной методологии, команда не слышала ничего о запахах кода, SOLID и т. Д., И я, конечно, не собирался тратить время на разработку TDD, если команда никогда не делала видел юнит тестирование на практике. Я распродал? Нет, не полностью ... Код всегда будет написан «чисто» (согласно учению дяди Боба), и принципы SOLID всегда будут применяться к коду, который я пишу, по мере необходимости. Хотя тестирование для меня было прекращено, компания не могла позволить себе передать такое неизвестное команде, которая, честно говоря, даже если бы я создавал тестовые фреймворки, они никогда не будут правильно использовать / поддерживать тестовый фреймворк.

Используя это в качестве примера, с какой точки зрения разработчик никогда не должен отказываться от своих принципов мастерства ради денег / других выгод для них лично? Я понимаю, что это может быть очень личное мнение о том, насколько человек обеспокоен своими собственными потребностями, бизнес-потребностями, мастерством и т. Д. Но можно считать, что, например, тестирование может быть прекращено, если компания решила, что предпочла бы иметь команда тестирования, а не понимать юнит-тестирование в программировании, вы могли бы простить себя так, как я? Поэтому, учитывая, что есть что-то, что вы бы отбросили, обычно в бизнесе должны быть равные затраты, которые компенсируют то, что вы отбрасываете - надеюсь, если, конечно, вы в значительной степени не хотите набивать свои карманы, а не сотрудничать с сообществом / обществом; ).

Удвойте свои деньги, вернитесь в RAD? Или иди и ищи кого-нибудь, кто делает Agile, и никогда не оглядывайся назад ...


19
Чувак, тебе промыли мозги? Не будь глупым и возьми их деньги. Распродавать? Что ты чокнутый? Если вы чувствуете вину, вы можете поделиться со мной половиной своего дополнительного заработка. С дополнительными долларами вы можете купить дом раньше и, таким образом, убедиться, что у вас есть пассивный источник дохода (аренда) - это то, что я бы сделал. Таким образом, вы можете позволить себе быть капризным и чаще устанавливать свои собственные условия.
Работа

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

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

1
@Dave: это зависит от масштаба критичности проекта: en.wikipedia.org/wiki/Cockburn_Scale
rwong

1
Я бы взял работу. Вы всегда можете попытаться обратить своих коллег в сторону от Темной стороны.
Никто

Ответы:


25

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

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

Обновить

Большинство опытных разработчиков (и менеджеров) видели тенденции и причуды, поэтому их не волнуют последние модные слова. Однако, если вы можете продемонстрировать, что определенный подход (инструмент, образ мышления) действительно работает на практике, в реальном проекте те, кто заботится о своем ремесле, почти наверняка будут сидеть и слушать. Но если у вас нет таких людей в вашей команде, возможно, пришло время искать лучшее место ...


Спасибо, Питер. Приятно знать, что вы уже сталкивались с подобными вещами раньше, и я обязательно приму ваш совет.
Мартин Блор,

17

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

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

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

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

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


s / resources / quality / g = время и деньги определяют ресурсы. Фактический баланс - это время, стоимость и качество. Другими словами: я могу сделать это быстро, я могу сделать это хорошо, я могу сделать это быстро, выбрать любые два.
Asoundmove

10

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

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


4
+1 «Я узнал, что разочарование никогда не следует недооценивать ...» - слишком верно. Длительные разочарования, безусловно, убийца работы.
Мартин Блор,

7

Люди на вашей последней работе уже знали о TDD, SOLID и т. Д. Это здорово. Я уверен, что вам понравилось работать там, и вы многому научились. Теперь у вас есть возможность обучать этим концепциям (одновременно зарабатывая большие деньги). По моему опыту, необходимость учить кого-то еще концепции всегда помогала мне изучить ее еще более подробно. Просто будьте терпеливы с ними и продолжайте продвигать свои концепции по одному. Когда вы расстроены, идите домой и посчитайте свои деньги. Или искать поддержку на SE.


3

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


2

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

  • Должно быть весело работать с
  • Это должно быть полезно для развития вашей компетенции (не уверен, что это правильный способ выразить это)
  • Это должно хорошо заплатить

Пока я читаю ваш вопрос, этот проект удовлетворяет только последним критериям.

Поскольку вы полюбили TDD (так же, как и я), я думаю, что вы будете ходить ежедневно и желать, чтобы все ваши коллеги достигли того же понимания, что и вы. Таким образом, первые критерии, вероятно, не будут выполнены.

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

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


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

2

Никогда.

Жизнь слишком коротка (особенно когда вы становитесь старше), чтобы делать то, что вы будете ненавидеть.

Конечно, это затрудняет смену работы, и там меньше мест для работы.

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


2

Короче говоря, методология разработки не является частью вас. Это не религия и это не тот, кто вы есть. Это инструмент. Делайте то, что вам говорят, как вам говорят, и делайте дополнительные деньги. Тысячи систем были разработаны и работают сегодня без TDD, Code Smell и т. Д. Через несколько лет никто не будет знать, что означают эти термины, потому что методологии приходят и уходят чаще, чем городской автобус. Работайте усердно, как вам говорят, и берите деньги, это ценится в любое время и все время :)


1

Просто убедитесь, что работа с новой командой - хорошее вложение вашего времени.

Возможно, они работают более эффективно, чем вы встречались до сих пор? В таком случае работа с ними станет для вас отличным опытом обучения (а значит, и хорошим вложением средств).

С другой стороны, методологии новой команды могут иметь мало значения для вас (слишком много «ковбойского кодирования» и т. Д.). В этом случае дополнительные деньги, вероятно, не стоят этого (если это не запуск перед IPO или что-то экстраординарное). Вы, вероятно, многому не научитесь ... и рискуете сгореть.


1

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

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

Если бы я хотел проводить модульное тестирование каждого класса, который я пишу, это могло бы быть проблемой, но написание модульных тестов в целом хорошо, если я все еще уложился в сроки. Я ожидаю, что сторонник TDD будет утверждать, что написание модульных тестов на самом деле увеличивает производительность (позже и т. Д.). Если бы я был на вашем месте, я бы написать несколько модульных тестов , которые спасут меня некоторое время вниз по дорожке (предположительно меньшим количеством ошибок, легче исправлений). Если вы реинвестируете это время, сэкономленное на большее количество тестов, то оно будет еще больше экономиться, и, в конце концов, вы сможете с большой улыбкой сидеть сложа руки, когда у вас будет потрясающий набор тестов, и с легкостью проверять изменения своего кода, когда наступит новый 11-й час. требование приходит.

Если бы я не смог этого сделать, я бы не знал, хочу ли я там работать.

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.