Перевод первой части статьи «51 Things You Shouldn’t Say to a Programmer Explained with GIFs».
За компьютерными программами и мобильными приложениями стоят их создатели — программисты. В их жизни есть множество проблем. Им нужно укладываться в сроки, они имеют дело с баг-репортами и недовольными клиентами. А задачи, которые нужно решать программистам, становятся все сложнее с каждым днем.
Чтобы пролить свет на эту реальность — и, возможно, помочь облегчить ее — я решил составить подробное описание вопросов, проблем и разочарований, с которыми приходится сталкиваться программистам. Эта статья предназначена для всех, кто работает с программистами или хочет заняться программированием.
1. Нереальные ожидания относительно опыта в отрасли
«У вас только два года опыта с этим языком? Мы ищем кого-то, у кого будет как минимум пять». Довольно много моих друзей слышали подобные фразы в ходе поиска работы. Особенно «приятно» слышать нечто подобное, когда первый релиз языка вышел всего полгода назад.
В общем, товарищи рекрутеры, проверяйте и обновляйте ваши объявления о вакансиях, прежде чем отклонять резюме!
2. «Я не хочу, чтобы вы пользовались библиотеками»
Подобные заявления демонстрируют совершенное непонимание программирования. Хотя, конечно, менеджер может выражать сомнение в безопасности и стабильности отдельных пакетов и библиотек (поскольку это действительно потенциально опасно).
3. «Да ты просто сидишь целыми днями»
Программисты слышат нечто подобное довольно часто, особенно от родственников. Да, периодически вставать и прохаживаться полезно для здоровья и освежения восприятия. Но за исключением этих моментов — как, по вашему, мы должны работать, если не сидя?! Не у всех есть специальные столы для работы стоя. В общем, необходимость сидеть целый день вполне объяснима, а вот высказывать свои наблюдения на этот счет не нужно.
4. «Сколько времени обычно уходит на то, чтобы исправить такой баг?»
Подобные вопросы часто поступают вместе с баг-репортами. Ответы могут быть трех видов:
- Мы не знаем, почему это сломалось.
- Мы думаем, что знаем, почему это сломалось.
- Мы знаем, почему это сломалось.
Игнорируйте ответ № 1 (перевод: программист не хочет заниматься этим прямо сейчас) или № 3 (перевод: программист слишком неопытен и от этого слишком самоуверен) и предполагайте вместо них ответ № 2. Серьезно.
Исправление багов это работа с вероятностями и рисками. Как пользователь (клиент) вы должны понимать, что не существует такой вещи как «обычное исправление бага». Когда мы читаем или слышим о баге, мысленно мы прогоняем целую серию предположений и оценок. По порядку:
- Этот баг и правда существует? (Вы даже представить не можете, насколько часто поступают репорты о багах, которых на самом деле нет).
- Это баг, запрос на изменение или запрос на новый функционал?
- Можем ли мы воспроизвести этот баг?
- Может ли пользователь воспроизвести этот баг?
- Не может ли быть такого, что баг уже исправлен, а юзер пользуется старой версией программы?
- Видят ли этот баг другие пользователи?
- Являются ли причиной этого бага какие-то действия пользователя?
- Может ли быть причиной бага что-то в пользовательском окружении?
- Что мы только что поменяли?
- Видел ли я такой баг раньше?
- Делал ли я что-то такое, что могло это сломать?
- Не трогал ли недавно этот код какой-нибудь неопытный программист (или новичок в команде)?
Каждый из ответов на эти вопросы меняет подход программиста к исправлению бага. Поскольку для точной оценки времени, необходимого для исправления бага, нужно сначала ответить на большинство этих вопросов, мы не можем быстро ответить, «сколько времени на это уйдет». Поэтому этот вопрос — один из наиболее раздражающих.
Находя причины возникновения бага и обдумывая способы его исправления, программисты также оценивают стоимость каждого такого исправления и прикидывают, стоит ли исправлять баг или устранять его (а это разные вещи).
TL; DR: нет простого ответа на вопрос, сколько времени займет исправление бага. Дайте возможность программистам подумать и оценить это, чтобы они могли дать вам более точный ответ.
5. «Погоди, как это ты не понимаешь код, написанный твоим коллегой?»
Порой бывает сложно разобраться в собственном старом коде, что уж тут говорить про чужой.
6. «Мне не нравится C/C++, потому что это сложный язык»
Когда программисты жалуются на языки программирования только потому, что не понимают, что такое pointer или зачем их использовать, это раздражает. Разумеется, есть сложные языки, но нет никаких причин полностью отказываться от них или унижать тех, кто ими пользуется. Вместо этого лучше посоветуйте язык, который вам нравится.
7. «Я думал, ты умеешь программировать. Что ты тогда делаешь на Stackexchange?»
Да ты издеваешься, что ли? Ну, если сможешь сходу сказать, почему я получаю эту ошибку компилятора, — можешь продолжать.
8. «Это должно быть сделано к концу спринта»
Короткий ответ: будь реалистом!
Длинный ответ: Порой программисты вытягивают код, который не редактировался последние три года. В команде уже просто не осталось никого из сеньоров, работавших с этим кодом. Кроме того, там используется другая версия языка, что вызывает проблемы совместимости. Чтобы сделать что-то новое, нужны обновленные версии, а это затронет и сломает несколько частей кодовой базы. Короче, это не тот случай, когда стоит спешить.
9. «Почему интернет не работает?»
Понятия не имею! И даже если бы я знал, то это было бы не потому, что я программист, а потому что поискал ответ в Google — что может сделать любой другой человек. То, что я работаю с технологиями, совершенно не означает, что я должен знать подобные вещи.
Как кто-то сказал, «Сфера технологий огромна, в ней много специальностей. Подумайте, например, о медицине. Вы же не станете просить дерматолога посоветовать вам успокоительное?»
10. «Мне не нравится язык Х, потому что в нем очень легко допустить ошибку или опечатку в имени переменной»
Когда некоторые «программисты» говорят подобные вещи, это бесит даже меня — человека, работающего только с одним языком. Почему? Потому что неспособность выловить опечатки выдает в вас плохого программиста.
11. «Ты не похож на программиста»
А как должен выглядеть программист?!
12. «Можешь показать мне, как <вставьте то, что элементарно гуглится> на компьютере?»
Может и смогу, только не отвлекай меня, когда я работаю. Кроме того, тот факт, что я помогу, никак не связан с тем, что я программист (см. п. 9).
13. «Зачем тебе дополнительные мониторы? Экрана ноутбука недостаточно что ли?»
Мне нужны дополнительные мониторы, чтобы экономить время и деньги! Когда работодатель предоставляет программисту два монитора, это выгодно прежде всего ему самому. Основной монитор используется для кодинга, а второй — для прочих нужд. Несколько мониторов позволяют создать эффективный рабочий процесс, который невозможен, если вы ограничены одним экраном и вынуждены постоянно переключаться между вкладками и окнами. В разработке программ чем продуктивнее работа, тем меньше времени тратится на задачу, а время — деньги.
14. «Зачем тебе апгрейдить RAM на ноутбуке?»
Кодинг потребляет много памяти, потому что компиляция программ съедает каждый доступный мегабайт. Часто во время отладки компьютеры подтормаживают и сбоят, а самый быстрый и простой способ исправить это — апгрейд RAM.
15. «Это очень простая проблема. Поищи на Stackoverflow и скопируй оттуда»
Вот спасибо, без тебя не догадался бы!
16. «Ты ставишь монитор вертикально? Это ж тупо!»
Когда монитор повернут вертикально, на экране видно больше строк кода. Это означает, что программист может охватить взглядом больший кусок кода и не прыгать туда-сюда, чтобы посмотреть назначение переменной.
17. «О, ты работаешь в айти»
Карьера в IT (информационных технологиях) это больше про установку, поддержку и улучшение компьютерных систем, а также сетей и баз данных. В то время как программирование это про выдачу инструкций машинам, как решать те или иные задачи и как делать это наиболее эффективно.
18. «Можете объяснить ваш код?»
Если вы не программист, это невозможно. Если вы не знакомы с концепциями программирования, тогда вы просто не поймете мой ответ. Но если вам интересно немного вникнуть в эту тему, чтобы понять, подходит ли вам такая работа, мы можем об этом поговорить.
19. «Мы считаем, что когда вы слушаете музыку во время работы, это замедляет ваш кодинг»
Я разобрался со всеми тикетами и 89 багами в вашем приложении на прошлой неделе, а поверх этого еще и над новым функционалом поработал — и все это под свои любимые плейлисты!
20. Баг это не то же самое, что новое требование
Давайте вставим новый функционал или пользовательскую историю в наш список пожеланий на следующую итерацию, только, пожалуйста, не надо называть это багами.
21. «Можете помочь мне с этой ошибкой?»
Да, НО если ты сам программист и тебе нужно обратиться к другому программисту за помощью, для начала непременно проведи дебаггинг своего кода.
Кроме того, когда нужна помощь в поисках логической ошибки, следует не просто объяснять на пальцах, в чем проблема. Я не хочу, чтобы мне объясняли проблему, я хочу увидеть код и исследовать, что происходит, когда возникает эта проблема. Нет ничего хуже, чем обращение за помощью на форуме или в личном сообщении без прилагаемого кода (или хотя бы самого важного куска этого кода).
22. «Вам столько платят!»
Нам очень жаль, что вам недоплачивают, но мы в этом не виноваты. Я уверен, что вы тяжело работаете, но и нам тоже деньги с неба не падают. Программисты не просто сидят за компьютерами, ковыряясь в носу в ожидании, пока код сам напишется!
23. «Давайте сделаем демо с клиентами, даже если еще ничего не готово!»
Тут и объяснять не надо. Если продукт не готов, то что вы хотите показывать клиенту?
24. «Сколько языков программирования вы знаете?»
Есть вопросы получше, например:
- Для чего используются разные языки программирования?
- Для чего используется язык Х?
- Много ли вы сделали на Y, используя язык Х?
Задавая такие вопросы, вы избавите программиста от необходимости повторять то, что у него спрашивает каждый знакомый, и в итоге у вас произойдет куда более интересный разговор.
25. «Смогу ли я научиться программировать за несколько месяцев?»
Короткий ответ — да! Не такой короткий ответ будет зависеть от того, каким программистом вы хотите стать. Многие люди хотят войти в мир программирования из-за зарплат и хорошего спроса на рынке труда. Но навыки, за которые хорошо платят, нельзя приобрести за одну ночь, поэтому не стоит ожидать, что станете программистом-профессионалом всего за пару месяцев, это просто нереально.
Однако, благодаря интернету и сообществам, вы вполне можете учиться кодингу онлайн и даже бесплатно.
Конец первой части. Часть вторая.
[customscript]techrocks_custom_after_post_html[/customscript]
[customscript]techrocks_custom_script[/customscript]