Что вам не говорят о сфере разработки?

0
2703
views

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

Что вам не говорят о сфере разработки

Билл Клинтон

Есть несколько вещей, о которых я не догадывался, ступая на этот путь.

  1. Эта индустрия не любит программистов старше 30. Она хочет использовать молодых 20-летних людей и плохо с ними обращаться в расчете на то, что они, по молодости, будут это терпеть. Есть и другие причины. Например, 30-летние уже могут иметь свои семьи и просто не смогут работать 24/7 и, что более важно, могут начать просить за это повышенную плату.
  2. На собеседованиях от вас будут ожидать, что вы знаете алгоритмы вдоль и поперек и сможете писать их на белой доске. И если хоть что-то в вашем коде будет отличаться от того, что хотел увидеть ведущий разработчик, он скажет, что весь ваш код ничего не стоит, и вас не наймут. Даже если сам ведущий разработчик просто скопировал этот код с какого-то форума, от вас ожидается, что вы будете в совершенстве его знать, а если нет – не мечтайте получить работу.
  3. Никому не интересно ваше портфолио и аккаунт на GitHub. Большинству работодателей плевать, сколько сайтов или приложений вы уже создали. Им интересно, знаете ли вы алгоритмы, не имеющие ничего общего с работой, алгоритмы, которыми вы больше никогда не воспользуетесь.
  4. Научиться писать код довольно сложно, большинство людей не преодолевают кривую обучения. Но если вы продолжите учиться, вы будете понимать большую часть других языков программирования.
  5. Зная хорошо один язык программирования. Вам будет легче изучить другие.
  6. Работодателей больше не волнует, хорошо ли вы знаете один или два языка. Их заботит, чтобы вы знали как минимум один фреймворк и две библиотеки для каждого из этих языков. Сегодня все крутится вокруг стека.
  7. Вся индустрия повторяет мантру «мы просто хотим самых лучших», и даже программисты, проработавшие несколько лет в Facebook, не могут найти работу. Но когда вы начинаете работать в какой-то компании, вы обнаруживаете, что большинство людей очень далеки от «самых лучших» и отличаются только умением задабривать менеджмент.
  8. Если все сказанное выставляет индустрию в дурном свете, то это лишь потому, что так все и есть. Программистом быть уже не так выгодно, поскольку многие задачи передаются на аутсорс в Индию. Да, еще есть люди, хорошо зарабатывающие, занимаясь программированием, но их меньшинство. Они много работают сверхурочно, в том числе по выходным, и в большинстве случаев это им не компенсируется соответствующим образом. Больше всего зарабатывают менеджеры и директора, крайне редко пишущие код. В 90-х и начале 2000-х компании нанимали вас и платили сумасшедшие деньги только за то, что вы знали, что такое ядро, но сегодня все это кануло в лету, потому что писать код умеют все, включая собак. На рынке труда слишком много программистов, поэтому каждого из них компании ценят гораздо меньше, чем раньше.
  9. Программирование в качестве основной работы может быть увлекательным делом, только если вы работаете на себя. Фриланс это лучший выбор, если только вы не мечтаете о том, чтобы вами постоянно помыкали 29-летние люди с низкой самооценкой и комплексом бога.
  10. Наконец, программирование это интересное занятие. Вы постоянно будете изучать что-то новое, сталкиваться с новыми проблемами. Но в то же время вы также можете загонять себя до смерти, не получая за это никакого дополнительного вознаграждения. Поверьте мне, выгорание это совершенно не прикольно, это заставляет вас постоянно задаваться вопросом, зачем вообще вы делаете то, что вы делаете. В общем, надейтесь на лучшее, но готовьтесь к худшему.
Что следует знать о сфере разработки

Хуан Ороско

  • Разработка это не написание кода, это решение проблем других людей. Конечно, обычно вы решаете проблемы путем написания программ, но главный навык разработчика это умение коммуницировать, а не писать код.
  • Вы читаете код намного чаще, чем пишете его (некоторые говорят, что соотношение здесь примерно 10:1). Поэтому работайте над тем, чтобы ваш код легко читался – по этой теме есть много литературы.
  • Скорость выполнения редко входит в топ-5 приоритетов программы, над которой вы работаете. Как насчет всех этих крутых оптимизаций, позволяющих вашему коду работать быстрее? Пока забудьте о них. Делайте ваш код читаемым и поддерживаемым, не ставьте оптимизацию во главу угла.
  • Вам придется столько заниматься отладкой, что лучше стать в специалистом в этом деле еще на ранних стадиях карьеры.
  • HDD (Hype-driven development – «разработка на основе хайпа») это сила. Множество технологий, методологий и прочих вещей продаются в качестве волшебных палочек, способных решить все ваши проблемы.
  • Осторожно: фанатики! То есть, программисты, свято верящие, что их язык программирования, методология, инструмент и даже любимый напиток – лучшие в мире, а все остальные — дерьмо. Но все это лишь инструменты, а поклоняться инструментам не стоит.
  • Чтобы сохранять свою конкурентоспособность, вам, скорее всего, придется постоянно изучать что-то новое. Это бесконечный цикл изучения новых подходов и инструментов. Чем больше вы их знаете, тем вероятнее сможете находить лучшие решения.
  • Уделяйте внимание надежности и изучайте безопасное программирование. Программы редко работают в идеальных условиях, периодически случаются сбои, так что защита кода от жизненных неприятностей будет хорошей идеей.

Юнес Хадро

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

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

Я расскажу вам об одном разработчике. В своей стране (в Северной Африке) он изучал химию, получил диплом и поехал искать работу во Франции. Он увидел, что есть много вакансий в сфере разработки, поэтому начал смотреть обучающие видео на эту тему. Изучив кое-что, он начал проходить собеседования. В конечном итоге его взяли в одну компанию и теперь он стал разработчиком. Вы скажете, что это нормально, ведь он же знает свое дело. Но на самом деле он в разработке совершенно не разбирается. Получая задачу, он вбивает ее в Google, открывает первую ссылку (вероятно, пост на StackOverflow) и пытается адаптировать решение для своей проблемы.

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

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

Чего вы не знаете о сфере разработки

Джефф Лангр

  • Многое в нашей работе не является программированием в строгом понимании этого слова.
  • Вас довольно часто будут прерывать.
  • Люди много говорят о качестве, но большая часть программного обеспечения в ужасном состоянии.
  • У большинства из нас проявляется синдром самозванца в той или иной форме.
  • В зависимости от окружения, вы много времени будете тратить на странные проблемы с библиотеками, версиями программ и т. п. вещами.
  • Разработчики имеют имидж антисоциальных людей, волков-одиночек, однако наиболее успешно они работают сообща, в командах.

Аластеир Стилл

  • Эта работа связана с большим стрессом. Весьма вероятно, что вы будете работать по 16 часов в день, часто по выходным. Конечно, никто не будет за это доплачивать. Выгорание, вызванное стрессом, практически неизбежно на каком-то этапе вашей карьеры.
  • Вероятно, большое количество времени вы будете работать дома.
  • Программирование это не профессия, а вы – не профессионал (за исключением случаев, когда менеджмент хочет польстить вашему эго). В понимании окружающих профессия это дантист или юрист. А мы – имеющиеся у компании ресурсы.
  • Работа на корпорацию разрушительна для души. Поэтому работайте в стартапах или по контракту. Оба варианта куда более выгодны как по деньгам, так и в плане удовлетворения от работы.

Джошуа Клейтон

Итак, вам не говорят, что…

Понимание бизнеса, для которого вы создаете программы, как минимум так же важно, как умение программировать. Бизнес нанимает программистов для решения проблем, которые сам недостаточно понимает. Если вы делаете то, о чем вас просят, не понимая контекста, это часто будет приводить к ситуации недовольного клиента и озадаченного программиста:

– Я сделал в точности то, о чем вы просили!

– Но оно не делает то, что мне нужно!

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

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

Инсайды о сфере разработки

Геральдо Зезео

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

Эдуардо Матос

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

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

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

Если говорить о цифрах, около 70% всего, что разрабатывается, прежде всего вообще не стоило делать, поскольку эти вещи не приносят никакой пользы и не улучшают продукт (или даже ухудшают его).

Что касается процессов, очень много времени и сил теряются впустую. Если ваша команда достигает эффективности в 15%, вы должны радоваться. Под эффективностью здесь я подразумеваю отношение всего времени, потраченного людьми на разработку продукта, ко времени, которое реально было нужно для разработки и выпуска продукта в его конечном виде.

Уоррен Мелник

  • То, что вы делаете, не совсем уникально. Если вы можете использовать существующие библиотеки, изучите их и узнайте, может, то, что вы пытаетесь сделать, уже кто-то сделал. Воспользуйтесь результатами чужих трудов. Хорошие программисты пишут хороший код, отличные программисты заново используют хороший код.
  • Программирование, приносящее вам удовольствие, это программирование, которым вы занимаетесь после работы, а не на работе, особенно поначалу.
  • DevOps может писать намного больше интересных вещей, чем программист, занимающийся разработкой, особенно если вам нравится все автоматизировать.
  • Изучение больше чем одного языка это прекрасно, пока вы не начнете путать их синтаксис по причине схожести этих языков (я имею в виду вас, perl и php).
  • Программист никогда не станет богатым, работая на кого-то другого. Это истина для многих профессий, но особенно для программистов, потому что для того, чтобы разбогатеть, вам нужна лишь одна хорошая идея и хороший партнер по бизнесу.