Программирование для гуманитариев
6.71K subscribers
66 photos
5 videos
219 links
Личный опыт того, как скипнуть в IT с гуманитарным образованием. Что для этого делать, чего стоит бояться (спойлер: ничего!) и чего ожидать. Рассею мифы о программировании и мире IT.
Бот для вопросов об IT: @hum_it_bot
Download Telegram
- Вас так быстро нашла HR прежде всего потому, что вы прошли за два года некоторое количество курсов по матану и computer science? Что ее заинтересовало в вашем резюме прежде всего?

Я не экстрасенс, и точно не скажу, что именно зацепило взгляд HR. Скорее всего, ей дали задание найти разработчика и ключевые слова, по которым надо искать (sql, python итд). Ключевые слова совпали с моим резюме, вот и вся загадка.
А связалась она со мной так быстро, скорее всего, потому, что на рынке IT царил и будет царить дефицит - искать людей очень сложно, и обращают внимание на всех (разве что кроме тех, у кого в резюме есть что-то откровенно отталкивающее).


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

Подчеркивать в резюме нужно всё, что вы знаете. HR-ы не экстрасенсы, и, более того, некоторые из них могут совсем не понимать предметную область. Им сказали - нужны «базы данных» - и они будут искать эти слова у вас в резюме. Не найдут - перейдут к следующему кандидату. Это во-первых. Во-вторых, это лично вам кажется, что ваши знания - сами собой разумеющиеся. Часто на собеседования приходят люди, которые ничего вообще не слышали, например, про базы данных. Ваша задача - уже в резюме выгодно выделяться на их фоне.

- Но вот с C не сталкивался никогда, с памятью и указателями не работал. И непонятно, тратить ли на это время сейчас, пока ещё не работаю в IT.

Знаете, универсального ответа тут нет. Не факт, что вы когда-то столкнётесь с Си на работе - это зависит от специфики проектов, над которыми будете работать. Например, для веб-разработки Си понадобится вряд ли. Если хотите быть в тренде (и выбирать простые пути), более востребованным может оказаться, например, Go. Но как база знание Си - это хороший навык. Когда начнёте работать, вряд ли у вас будет время и ресурсы на его изучение (если не возникнет острой необходимости). Утверждение, что вы не работали с памятью звучит немного странно - наверно, вы имели в виду, что вы не выделяли и не освобождали память явными вызовами, как это делается в Си.

- Или лучше, например, в паттернах разобраться.

А вы уже освоили ООП? Пишете большие классы и проектируете относительно большие программы с иерархией классов? Если да - то паттерны пригодятся. Если же вы пока на уровне небольших скриптов, или делаете всё в рамках готовых фреймворков (типа django в питоне), то паттерны на этом этапе применять будет особо негде. Это не значит, что их не стоит изучать вообще. Я лишь о том, что не факт, что это первый приоритет на этом этапе (а я даже не знаю, какой у вас этап).
Я маленький, глупый и ничего не умею

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

Приведу примеры такого поведения вместе с более правильной стратегией.

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

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

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

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

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

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

Напоминаю, вопросы от начинающих (и будущих) айтишников можно задать в боте: @hum_it_bot.
Про эффективность кода

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

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

При написании кода поначалу есть соблазн заботиться только о том, чтобы код как-то работал, и выполнял положенную функцию, а о том, что именно в нём происходит, начинающие разработчики часто забывают подумать. Поэтому ниже будет немного «правил жизни» от капитана Очевидность.

При написании кода нужно помнить о том, что любая программа всегда завязана на ресурсах компьютера - она использует память, ядра процессора и диск. Поэтому не стоит, не задумываясь, читать файл размером в 20 Гб в память - есть ли у вас эти 20 Гб памяти, и оправдано ли их использование в этом случае? От использования этих ресурсов (в частности, от него) зависит и время исполнения кода.

Приведу пример такого необдуманного кода от джуниор-разработчика. Задача была - прочитать построчно большой файл и каждую строку обработать определенным образом. Человек написал код, который выполнял эту задачу, но максимально медленно и неэффективно. В файле было 500 тысяч строк. Разрабочик написал цикл, который выполнялся 500 тысяч раз. В ходе каждой итерации вызывался метод read() (прочитать весь файл в память). То есть, огромный файл был открыт, закрыт и прочитан 500 тысяч раз, а не 1 раз. Во время каждой итерации вызывался метод skip(), чтобы пропустить нужное количество обработанных ранее строк - на первой итерации 0, дальше 1, потом 2 и так далее. То есть метод skip был вызван так же 500 тысяч раз.

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

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

Другой пример от этого же разработчика: в реляционной БД есть таблица с индентификатором id. По этому полю построен индекс, что позволяет, зная id, находить нужную запись в БД мгновенно. Про индексы и их роль в БД разработчик знал из университетсткого курса, но пока не понял, как это знание использовать на практике. В общем, получился у него SQL, который работал очень медленно, и когда я посмотрела, в чем там проблема, оказалось, что разработчик конвертировал id (число) - в строку, и использовал эту строку в запросе. Но вот беда, индекс-то построен по числовому полю, а со строкой работать не умеет. Поэтому теперь, чтобы найти запись с id «5» - базе данных нужно было прочитать все записи в таблице (например, их там миллионы), конвертировать каждый id (из миллионов) в строку - и сравнить его с искомым. Сколько времени потребуется на это базе данных зависит в основном от её размера.

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

Вчера помогала другой блогерше с заданием по функциональному программированию и столкнулась с вопросом - а как объяснить не математику, что такое рекурсия? Тем, кто знаком с такими математическими терминами как реккурентные функции и индукция, рекурсия по идее будет интуитивно понятна и так.

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

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

Давайте возьмём для примера функцию «сумма элементов списка» (или массива).
sum(lst) - можно ее определить итеративно, пройдясь циклом через все элементы списка. (for x in list: result += x)

Но можно воспользоваться и рекурсивным определением. Оно будет выглядеть примерно так:

1) Если список пуст, то сумма равна 0. - Это граничное условие, оно должно быть не рекурсивным, потому что в этой точке цикл выполнения функции закончится, и рекурсия остановится.

2) Если список не пуст, то сумма равна первому его элементу + сумме оставшейся части списка.

На питоне это будет выглядеть примерно так:

def rec_sum(lst):

if lst == []:
return 0

return lst[0] + rec_sum(lst[1:])


Давайте представим, как будет выполняться такая функция со списком [1,2,3]

1) Первый вызов rec_sum([1,2,3]) - вернёт 1 + rec_sum([2,3]))
2) Второй вызов вернёт 2 + rec_sum([3]).
3) Третий 3 + rec_sum([]) - здесь рекурсия заканчивается, с пустым списоком функция вернёт ноль.

То есть, выполнение разложится на этапы так:
rec_sum( [1, 2, 3]) = 1 + rec_sum([2,3]) = 1 + 2 + rec_sum([3]) = 1 + 2 + 3 + rec_sum([]) = 1 + 2 +3 + 0 = 6

После того, как функция разложится на такую цепочку рекурсивных вызовов и достигнет дна рекурсии, каждый вызов функции начнет возвращать значения - начиная с самого нового, самого последнего вызова (то есть с пустым списком):

rec_sum([]) возвращает 0
rec_sum([3]) возвращает 3 + то, что вернула rec_sum([]) = 3 + 0 = 3
rec_sum([2,3]) возвращает 2 + то, что вернула rec_sum([3]) = 2 + 3 = 5
rec_sum([1,2,3]) возвращает 1 + то, что вернулось на предыдущем шаге, то есть 1 + 5 = 6

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

Напоследок добавлю print в нашу функцию, чтобы наглядно показать, что происходит, когда мы её вызываем на каждом этапе:
[21]: def rec_sum(lst):
...:
...: if lst == []:
...: print('returning 0')
...: return 0
...:
...: print('next: {} + rec_sum{}'.format(lst[0], lst[1:]))
...:
...: ret = lst[0] + rec_sum(lst[1:])
...: print('returning {}'.format(ret))
...: return ret
...:

In [22]: rec_sum([1,2,3])
next: 1 + rec_sum[2, 3]
next: 2 + rec_sum[3]
next: 3 + rec_sum[]
returning 0
returning 3
returning 5
returning 6
Out[22]: 6


В общем, всё как я и описала.

P.S: Пример выше исключительно для демонстрации рекурсии. С точки зрения продуктовой разработки, рекурсия со слайсами списка в питоне - очень неэффективное и ресурсозатратное решение. Используйте циклы 🙂

P.P.S: А вот в функциональных языках программирования есть оптимизации на уровне компиляторов для эффективного выполнения хвостовой рекурсии. Вот только кто использует этот ваш Haskell в проде?
Про корпоративы

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

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

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

Условно образ мыслей любого человека можно поделить на два типа - «неподвижный» (fixed mindset) и «нацеленный на рост» (growth mindset).

В первом случае человек навешивает на себя ярлыки и запирает себя в рамках этих представлений о себе, например: «я гуманитарий», «математика - это не для меня», «я глупый», «у меня нет способностей к этому» , «это слишком сложно для меня».
То есть он рассматривает свои способности и таланты как некую константу, которую нельзя сдвинуть, и которая определяет его успех или не успех в чем-либо. Поэтому у таких людей может возникать проблема с мотивацией и они склонны сдаваться, когда сталкиваются с трудностями. Любую неудачу они склонны трактовать как подтверждение этих ярлыков, которые на себя навешали - «ну я так и знал. я тупой». И предпочитают заниматься только тем, что им легко даётся.

Кстати, ярлыки могут быть и положительными. Например, «я умный». И, вроде как, звучит получше, чем «я тупой», но на деле такие установки тоже препятствуют росту, потому что - а зачем развиваться, ты же и так умный? И зачем пробовать себя в тех областях, где нет такой уверенности в себе? Лучше работать с тем, что и так хорошо получается.

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

Думаю, вывод ясен: меньше ярлыков - больше роста. А еще хвалить и поощрять (и себя самого и, например, своих детей) лучше не за стабильные качества («ты умный»), а за усилия, которые человек прикладывает. За то, что вкладывается в процесс своего развития.

P.S.: Мысли позаимствованы вот из этого видосика: https://www.youtube.com/watch?v=Yl9TVbAal5s&feature=youtu.be
IT - это опасно

Пишу не с целью напугать новичков, а чтобы призвать к бдительности. Старинная народная мудрость гласит «семь раз SELECT, один раз UPDATE». И не зря.

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

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

Во-вторых - если речь идёт о базе данных, и вы как раз собираетесь в ней выполнить руками UPDATE или DELETE - остановитесь. Подумайте, что вы сейчас хотите сделать и зачем? Почему вы собираетесь менять вручную данные на проде? Что вас привело к такому решению? Может, не надо? Может, лучше у кого-то спросить, как решить проблему по-другому? Дальше, если это вас всё-таки не остановило - вспомните о такой штуке как транзакция - и выполняйте скрипт внутри неё, чтобы можно было потом изящным движением руки полностью откатить изменения. После изменения или удаления строк выполните SELECT и проверьте, что все ок, и только тогда закрывайте транзакцию. Для тех, кто в танке - транзакция открывается волшебной командой BEGIN; И откатывается с помощью ROLLBACK.

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

Часто ошибки происходят от того, что человеку банально лень разбираться с инструментом, который он использует. Так что если вы сейчас собираетесь выполнить команду в командной строке (извините за эвфемизм) - убедитесь, что вы понимаете, что эта команда делает и как работает - не удалит ли она нужный файл, не перезатрёт ли данные. Почитайте документацию - и только потом действуйте. На моей памяти юные падаваны ухитрялись даже удалить коммиты из git-а, потому что не стали затруднять себя чтением документации и не до конца понимали, что конкретно делает та или иная команда гита. Оказывается, даже гит - это опасно. Будьте аккуратнее с гитом. Не действуйте наугад. Мир технологий - это мир знаний и логики, а не Хогвартс, тут нужно разбираться, что и как работает.
💔1
Как усидеть за работой?

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

Одна из них - это увлечься какой-то интересной и сложной задачей, и погрузиться в неё часов на 5-6-8-10. Особенно если работаешь из дома, и ничто не отвлекает. Это всё без перерыва, без обеда и практически без движения. Когда наконец отдираешь своё тело от стула, с удивлением замечаешь, что уже поздний вечер, ноги и 5-я точка затекли, а желудок ноет от голода. И состояние разбитое, даже если чувствуешь какое-то удовлетворение от проделанной работы.

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

Для самочувствия, настроения и результативности работы в конечном итоге вредны оба состояния. А решение для них одинаквое.

Я делаю так: ставлю таймер на полчаса, и в эти полчаса занимаюсь исключительно рабочими задачами, стараясь минимально отвлекаться на что-либо постороннее вроде шуток и болтовни.

Когда срабатывает таймер - самое лучшее - это в первую очередь оторвать попу от стула и пройтись - хотя бы сходить заварить чая или попить воды, выйти на улицу, в магазин, куда угодно еще. Если вообще нет никаких дел, чтобы за ними идти - то хотя бы пару кругов по офису навернуть, прежде чем снова занять сидячее положение. Дальше можно некоторое время провести за любыми посторонними делами - посмотреть картинки, поспорить в Интернете, там ведь опять кто-то не прав! Позвонить жене, мужу, маме, брату или другу детства. Проверить заказ в Интернет-магазине. Оплатить ЖКХ. Ответить в чате друзьям. А если руки тянутся к коду и глаза уже смотрят в текстовой редактор - значит ставим таймер на следующие полчаса (или другой интервал, который вам подходит) и переходим к фазе работы.

Главное - не смешивать фазы отдыха и работы. Не продолжать решать рабочие задачи во время перерыва, и не отвлекаться на посторонние раздражители во время работы.

Вообще для этой методики есть название - метод Томата или Помидора (можно почитать в сети). В классической его интерпретации фазы отдыха тоже ограничены по времени - первые несколько раз по 5 минут, а потом фаза более длинного отдыха - 15 минут. Я же делаю фазы отдыха ненормированными - они могут длиться 1 минуту, или 5 минут, или полчаса в зависимости от моего (не)желания побыстрее вернуться к работе или наоборот сделать что-то не относящееся к ней - иначе у меня возникает ощущение принудиловки и ограничения свободы (на самом деле я не люблю все эти тайм-менеджменты и соковыжималки).

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

Вы, вероятно, уже где-то слышали такое модное слово как проактивность. И о том, что в современном мире IT бывает такое, что технические навыки (hard skills) не всегда играют решающую роль в том, возьмут ли кандидата на работу. И что собеседующие могут обратить внимание на soft skills и, в частности, на пресловутую проактивность.

Так что же это такое? Глубоко копать не буду, кажется, «бытовое» использование этого слова уже несколько ушло в сторону от первоисточника. Расскажу о смысле, который по сути вкладывают в это слово в IT-компаниях. Быть проактивным - значит брать на себя ответственность и проявлять инициативу тогда, когда это не обусловленно твоими прямыми обязанностями (и когда нет никакой внешней необходимости к этому). Это в том числе и готовность признавать свои ошибки, и работать над развитием личностных качеств, а не оставить всё как есть и спокойно плыть по течению, и сказать потом, что это «оно всё само», «я не виноват».
То есть это противоположность пассивности, инертности, бездействию и желанию переложить ответственность на кого-то другого. Как и вере в то, что от тебя ничего не зависит.

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

Приведу несколько примеров:

- Новичка позвали на совещание по техническому вопросу. Он всё совещание молчит. Можно предположить, что он хотя бы слушал. Позже оказывается, что и это не так - он ничего не понял и подумал, что ему это всё не нужно. - Что можно было сделать - Задавать вопросы. Выяснить, что сейчас обсуждают, и какова цель встречи. Прояснить все непонятные для себя моменты. Если ты пока не готов предложить свою идею, то хотя бы будь в контексте. Вовлеченность ценится выше, чем пассивность, которую могут трактовать как раздолбайство и лень.

- У новичка закончились задачи. Ну что ж, значит можно потупить и посидеть в соцсетях. Подождать, пока о тебе вспомнят. - А можно спросить про новые задачи у руководителя. Или еще лучше - можно придумать себе задачи самому и согласовать с руководителем или коллегами. «Ребята, я тут подумал, хорошо бы провести рефакторинг этого кода, у меня как раз освободилось время». И все подумают «ай да новичок!». Ведь все давно собирались порефакторить тот код, но руки ни у кого не доходили. А тут вот наконец человек разберется с этим.

- Вы видите, что не работает Интернет, или локальный git-репозиторий упал. А ну и фиг с ним! Пойду лучше кофе пить. Или всё-таки сходите к админу и расскажете о проблеме?

- Вам нужен корпоративный пароль для доступа к нужному сервису. Вы написали админу, он сказал ок, а потом молчит. Молчит день, два, три - ну и пусть молчит? Подождёте, пока он сам вспомнит - или напомните ему о себе?

- Вы видите, что тесты к приложению сломаны, на них все давно забили и перестали запускать. Можно делать «как все» - просто игнорировать их дальше и писать не тестируемый код. А, может быть, настал ваш час, и вы будете тем человеком, который приведет тесты в порядок?

Напоследок, про пассивность и робость: в США (кажется, там) произошел случай, когда пациентке во время операции по удалению гланд хирург по ошибке удалил часть ступни. И проблема не только в самом хирурге. Проблема в том, что все его ассистенты, медсестры и другой медицинский персонал всё видели, но побоялись спросить - что, собственно, происходит. Поэтому не бойтесь открывать рот, не бойтесь проявлять инициативу и брать на себя ответственность за происходящее - однажды это может спасти кому-то жизнь (ну или спасти проект).
👍1
Друзья, помогайте! Если вы новичок в IT - недавно начали работать в этой области, или пока только учитесь, но не работаете. Или если вы еще не начали изучать IT, но задумываетесь о таком направлении развития - то наверняка у вас есть вопросы о работе в сфере IT, о трудностях, с которыми (не) сталкиваются новички, о том, что вас там ждет и как себя вести в тех или иных озадачивающих ситуациях. Все вопросы можно писать в бота - @hum_it_bot. Ответы на самые интересные вопросы появятся в будущих постах. Только на вопрос «Какие книги и курсы посоветуете?» отвечать не буду, так как в блоге уже было несколько постов на эту тему. =*
Всем спасибо за вопросы! Вопросов много, разгребать буду постепенно. Бот открыт для вопросов - присылайте ещё, не стесняйтесь!

Начну я с блока условно психологических вопросов про работу в IT. Сразу оговорюсь, я не психолог и не психотерпевт, и всё ниже - либо моё личное мнение (не обязательно верное), либо информация, почерпнутая из разных источников - из книг, от психологов, в ходе терапии итд.

- Как поставить сексиста на место, когда ты новичок? То есть плохо у тебя получается не по той причине, что ты женщина, а по той, что новичок?
Думаю, это вопрос можно обобщить до «Что делать, если коллега ведёт себя неподобающим образом и причиняет мне дискомфорт»?

Для начала, определимся с целью. Если цель - эскалация агрессии, раздувание конфликта и месть коллеге, то вы сами догадаетесь, что делать. 🙂

Я буду исходить из того, что ваша цель - это работа в комфортных условиях и уважительное отношение коллег друг к другу. То есть цель вполне миролюбивая и адекватная. Для этого нужно не «ставить на место» коллегу, а убедить его изменить своё поведение. Возможно, он не осознаёт, что делает что-то не так и причиняет кому-то дискомфорт.

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

Факты -> Описание своих чувств, которые вызваны этими фактами. -> Рассказ о ваших потребностях/ценности, которые таким образом нарушены. -> Просьба, обращенная к коллеге, которая вытекает из предыдущих пунктов

То есть в случае с сексистским поведением коллеги это будет выглядеть примерно так:
1. Факты: «Сегодня ты рассказал шутку про … , вчера прокомментировал …». - Тут только голые факты, без оценок, без обобщений - перечисление конкретных поступков человека.
2. Чувства: «Меня огорчают такие шутки, потому что я в них слышу уничижительное отношение к женщинам, а я сама женщина, и, следовательно, эти шутки относятся и ко мне. Мне сложно сосредоточиться на работе после такого, потому что я бываю расстроена.» - Рассказ о чувствах делают в формате «Я-послания». Слово «ты» и обвинений здесь не используют, просто говорят, какие эмоции у вас есть в связи со сложившейся ситуацией.
3. Потребности и ценности. «Я хочу работать в комфортной атмосфере, где все коллеги уважают друг друга, и где не принято завуалированно оскорблять кого-либо.» - Описать, чего вы хотите достичь.
4. Просьба. «Поэтому я хотела бы попросить тебя избегать оскорбительных высказываний, основанный на поле человека»

Это первая фаза. Скорее всего, адекватный человек прислушается к вежливой просьбе и пары таких разговоров будет достаточно. Если же ничего не меняется, и поведение коллеги продолжает причинять дискомфорт, дальше идут фазы с эскалацией конфликта. Алгоритм примерно такой же как и раньше, Я-послания можно усилить, а в конце добавляется еще один пункт - угроза применения санкций (не знаю, какие санкции можно применить к коллеге, это надо придумать - например, прервать всякие контакты с ним, отказаться общаться с ним устно, а на рабочие запросы реагировать только по email с руководителем в копии получателей). То есть в конце будет еще пункт про «Если ты не перестанешь так делать, я…». Говорить нужно настойчиво и твёрдо, но по-прежнему вежливо.

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

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

Вот интересно, в начале кажется что все умнее тебя и надо их слушаться. Потом появляется собственный опыт, но ощущение, что надо слушаться остаётся. Как с ним бороться?

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

С чего начать человеку, который был далёк от IT, но хочет начать изучать?
У меня гуманитарное образование, стоит ли ставить на себе крест?
Сложности возникли со структурой: с чего начать, как практиковаться, если ты до этого не сталкивался ни с чем подобным, а школьная и университетская информатика была на уровне: «включите комп, подключайтесь к wi-fi. Поздравляю, можете заниматься тем, чем хотите. А, точно, wi-fi же у нас нет... ну рисуйте в Paint или пяльтесь в паук-пасьянс…»


Вы так говорите про гуманитарное образование, как будто это какой-то диагноз, или инвалидность. Образование - это набор знаний и навыков, а не клеймо. Не думаю, что полезно рассматривать его как препятствие на пути к новым знаниям или другим навыкам. Для меня это звучит как «я умею кататься на велосипеде, значит ли это, что я не смогу научиться чистить картошку?». У меня тоже гуманитарное образование. А в университете на информатике мы рисовали кораблик в Paint. И ничего, живу. И даже код пишу за деньги. 🙂 Сейчас вообще набирает популярность идея lifelong learning или непрерывного образования - учиться всю жизнь и менять профессию каждые 5 лет.

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

Какой язык программирования сейчас самый популярный?

Всё зависит от того, что вы хотите разрабатывать. Если, к примеру, мобильные приложения под Android - то Java. Под iOS - кажется, Swift. Если хотите делать сайты (фронтенд) - то Javascript и разные фреймворки и либы на нём (jquery, React, Angular, Vue и другие). Если интересует бэкенд-разработка - то тут из простых вариантов - Python, и, пожалуй, Go. Многие сайты всё ещё написаны на PHP, и он остаётся востребованным языком, но к нему многие относятся свысока.
Одним из самых востребованных и распространенных языков (и многими нелюбимых) языков остаётся Java. В платформе .Net используют C#, и не только. И есть еще мощная «золотая классика», которая не сдаёт своих позиций - C и C++. Для Data Science обычно используют Python или R. Это, пожалуй, самые частые варианты.

P.S.: для работы с базами данных - SQL - этот нужен почти всем.
Всем привет! Продолжаю отвечать на ваши вопросы. Напоминаю, вопросы можно присылать в бота: @hum_it_bot

Как сохранить в себе терпение изучать программирование?

Поскорее переходить от чисто учебных и не практических задач к реальным проектам - более интересным и более сложным. Например - найти себе какую-нибудь стажировку или part-time подработку на джуниорской позиции. Поучаствовать в каком-нибудь хакатоне. Принять участие в разработке open-source проекта. Или заняться своим личным проектом - написать свой сайт или бота, или мобильное приложение. «Мне еще рано, я еще не умею» - плохие оправдания, всё, что нужно знать - легко гуглится в процессе разработки.

Как справиться с ужасом и тревогой которые мешают процессу обучения (
Очень сложно учить новое так как всегда кажется что я бесконечно отстала и никогда не догоню ((
А еще немного стыдно что у меня уже возраст 🙈 мне неловко спрашивать простые вещи у коллег так как вроде как такие штуки уже все знают(


Похоже, тут скорее проблема в неправильных установках. Когда недостаток знаний, опыта или скиллов воспринимается как неизлечимая болезнь. Такие установки мешают росту в любых начинаниях - например, не умеешь плавать - значит никогда не научишься, не знаешь иностранного языка - значит никогда не сможешь его выучить. Попробуйте к каждой мысли про «я не умею» прибавлять в конце слово «пока». «У меня [пока что] получается хуже, чем мне хотелось бы», «Я [пока еще] мало знаю». У меня был пост про два типа установок мышления - вот тут.

Если тревога и, как вы описываете ее - ужас - очень сильные, возможно, стоит обратиться к психотерапевту, такие страхи могут сильно портить не только процесс обучения, но и качество жизни в целом. А пока подкину одну из практик когнитивно-поведенческой терапии: когда вас одолевают тревожные мысли - запишите их (или хотя бы мысленно обратите на них внимание). Например: «Я не смогу ничему научиться, потому что мне уже много лет». Таких должно получиться 3-5 штук. Потом попробуйте придумать несколько альтернативных мыслей про то же самое - например, «Я смогу все освоить, когда что-то не получается с первой попытки - это нормально.» И потом задайте себе вопрос - какую пользу можно извлечь из первой мысли? А какой вред она может принести? Потом те же два вопроса про вторую (альтернативную) мысль. Пользу и вред каждого набора мыслей тоже запишите (или запомните). И проделывайте это каждый раз, когда тревожные мысли к вам возвращаются.

И наконец - «все уже всё знают» - это большое заблуждение. Даже опытные разработчики часто ничего толком не знают (но хорошо умеют гуглить). А ваши сокурсники вряд ли уже - очень опытные и знающие разработчики. Так что стыдиться (особенно перед ними) вам нечего. Вас волнует, что другие о вас подумают? А какая разница? Возможно, этих людей вы больше никогда не встретите в своей жизни. Лучше сосредоточьте внимание на процессе своего обучения - а вопросы пойдут ему на пользу. Нет ничего стыдного в том, чтобы задавать вопросы. Если кто-то на них реагирует недоброжелательно - то это он вредный человек, в нём и проблема. Главное, чтобы вопросы были осмысленными, а не «сделай за меня пожалуйста это задание».
С каких языков следует начать изучать программирование?

Опять-таки, зависит от того, чем хотите заниматься (фронтед, мобильная разработка, бэк - и так далее). Если точных планов пока нет, но с чего-то начать хочется - можно взять Python, он простой. Но чисто моё субъективное мнение - начинать лучше всего с Си, это сложнее, чем питон, но после него будет легко изучать (почти любые) другие языки. Вот мой пост на эту тему.

Насколько сложно найти работу новичку? Сколько времени Вам потребовалось на обучение, чтобы устроиться на первую работу в сфере IT?

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

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

Как устроиться в сфере it?

1) Научиться нужным навыкам и знаниям
2) Опубликовать резюме
3) Сходить на собеседования
4) Если сразу не вышло, вернуться к пункту 1

Привет-привет! Было бы интересно почитать про ситуацию с гендерным неравенством среди разработчиков. Как вообще ощущается женщине в Male-dominant профессии, сталкиваешься ли с какими-то особыми сложностями (или наоборот - ничего особенного). В общем, особенности профессии с точки зрения гендера👱‍♀️ заранее спасибо!

Если честно, я этого гендерного неравенства в глаза никогда не видела. 🙂 Это не значит, что сексизма не существует как такового - люди бывают разные, в том числе и предвзято настроенные. Но чтобы я когда-либо сталкивалась с ним лицом к лицу - такого не было. Быть девушкой тут может быть даже выгоднее, так как ты сразу выделяешься на фоне безликой толпы кандидатов, и вызываешь интерес. А чтобы сразу интерес не иссяк, нужно прокачивать скиллы и знания. У меня на эту тему уже был длинный пост.

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

Но среди рядовых разработчиков проблем не замечаю - главное быть хорошим специалистом.

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

Да, хамы и конфликтные люди могут попадаться, как и в любом другом коллективе. Но я не считаю, что преимущественно мужской коллектив означает автоматически, что коллектив будет настроен сексистки. По моему опыту, о том что «часики тикают», или «ну когда уже рожать» вам скорее скажут в женском коллективе. А здесь скорее будут обсуждать компьютерные игры или криптовалюты.

Ваши вопросы можно задать в бота: @hum_it_bot - разбираю их в порядке поступления.
За что в it платят такие огромные деньги? (мне действительно интересно, у меня отсутствует понимание практической части) Я прохожу курс на стадии стажёр, там много задач типа "отсортировать массив". Что я не понимаю? На практике, в работе же не будет подобных задач (или будут?) У меня стереотип, что человек за такие деньги должен как-то немерено пахать. Почему тогда все не становятся программистами, если это не так?

Огромные или нет это деньги зависит от того, с чем сравнивать. Некоторые инстаграм-блогеры зарабатывают и в пять раз больше хороших программистов, так что всё бывает по-разному. Кроме того, зарплаты айтишников разнятся от компании к компании и, тем более, от региона к региону. Да, зарплаты в IT выше чем у среднего россиянина, но они не сказочные - есть некий условный «потолок», выше которого сложно прыгнуть - разве что идти открывать свой бизнес.

А почему платят такие деньги - ну потому что так диктует рынок, вакансий для айтишников гораздо больше, чем самих айтишников. А очень хороших айтишников еще меньше. Оглянитесь вокруг: практически у каждого ООО «Рога и копыта» есть свой сайт, а у многих еще и мобильные приложения. Всем нужны базы данных, чтобы хранить в них информацию о клиентах. Все рабочие процессы автоматизируются - вместо людей в чатах отвечают роботы, в call-центрах тоже общаешься сначала с роботом и только потом он направляет тебя к нужному специалисту. Да и практически любой бизнес, куда ни копни - хоть в бухгалтерию, хоть в отдел продаж - использует разннообразное ПО - на счётах никто не считает, а данные о партнерах не заносят ручкой в записные книжки. Такси и еду мы заказываем через приложения, в салоны красоты записываемся через сайт, и сердимся, когда там нет кнопки «записаться», а вместо этого надо звонить по телефону (как в каменном веке). Оповещения о готовых заказах приходят магическим образом сами по СМС или email. Авиабилеты почти все покупают в интернете, и так же через интернет можно зарегистрироваться на рейс. Продолжать это перечисление можно бесконечно. А суть в том, что чтобы всё это работало и развивалось - нужны программисты, админы, дата-саентисты, и не только. И их нужно больше и больше, цифровой мир пока что только набирает обороты.

Задача уровня «отсортировать массив» - это учебная задача, направлена, скорее всего на изучение самых простых алгоритмов - сортировки, и на понимание, сколько времени (относительно размера массива) занимает каждый вид сортировки, и почему важно выбирать эффективные алгоритмы. В реальных проектах вы вряд ли столкнетесь с чем-то такого уровня. Реальные задачи будут, например, вида: «Добавить кнопку «позвонить» на сайт и связывать клиента с менеджером, когда тот нажмёт эту кнопку.» Ну тут зависит от конкретного проекта.

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

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

Ваши вопросы можно задавать в боте, в итоге я до них доберусь: @hum_it_bot
Как понять, на какую специальность идти?

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

На какой специальности объединены дизайн и программирование?

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

Где искать работу айтишнику?

hh.ru, linkedin, по друзьям и знакомым.

Какие языки сложные, а какие лёгкие?

Тут я буду отвечать очень субъективно. Лёгкие языки - это Python, Ruby, PHP. Javascript сам по себе не сложный, но во фронте есть куча своих тонкостей, которые надо знать. Чуть сложнее Java. C# - примерно как джава, только посимпатичнее. Си - не то чтобы очень сложный, но требует чуть более низкоуровнего понимания (арифметика указателей, ручное выделение и очистка памяти). Языки, перечисленные ранее эти задачи выполняют сами и прячут реализацию «под капотом». C++ - довольно сложный, если сильно в него погружаться.

При этом в «легких» языках тоже есть свои подводные камни, на которые можно налететь в процессе работы, если про них не знать. Плюс «сложность» языка определяется глубиной погружения - одно дело использовать тот же питон как калькулятор, и другое дело знать как он устроен вплоть до исходного кода интерпретатора. :)

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

Присылайте ваши вопросы сюда: @hum_it_bot
Привет) вопрос такой, насколько сложно устроиться на первую работу в it в 30 лет, нет ли предубеждений у работодателей? Слышала, что многие считают, что с годами сложнее учиться новому(Месяц назад оставила надоевшую руководящую должность и начала изучать программирование: меня так завлекло, что не замечаю ход времени. Однако, как будущему работодателю объяснить, что только сейчас нашла для себя эту сферу и хочу в ней развиваться и работать?

Привет! Мне кажется, вы подходите к вопросу немного не с той стороны. Многие считают, что с годами учиться сложнее - важно не то, как считают «многие», важно - получается ли это у вас. Будущему работодателю нужно продемонстрировать полученные знания и скиллы и показать, что вы подающий надежды специалист. Предубеждения у разных работодателей могут быть любые - кто-то предпочитает брать на работу только 20-летних выпусников, кто-то - только людей ниже себя ростом, кто-то по знаку зодиака - всем не угодишь, нужно искать адекватного работодателя, который подойдёт именно вам. А разрушаются предубеждения только одним путем - вашим профессионализмом, это решающий аргумент, так что прокачивайте скиллы. Вы говорите, что вас завлекло - это хороший знак, увлеченность очень помогает в учебе.

Здравствуйте, я итересуюсь It- сферой, думаю сейчас какое направление выбрать для обучения.Цель - доп. заработок, есть мысли освоить специальность It и возможно сменить работу. Работаю на производстве руководителем на участке, закончил вуз на инженера. По работе пользуюсь Word , Excel не углублённо. Подскажите направление в It, с чего начать обучение, какое направление выбрать, учитывая мой опыт работы??

Не вижу, чтобы в вашем опыте работы было что-то специфическое, за что можно «зацепиться» в выборе специальности. Вопрос в том, что вам самому интереснее - тестирование, работа с «железом», администрирование серверов, математика и дата саенс или программирование?

Какой стэк и на каком уровне нужен, чтобы «войти в IT» фронтендером?

HTML, HTML5 и CSS, желательно включая CSS-фреймворки и препроцессоры, JavaScript и популярные фреймворки на нём, разные CMS, SQL. Уровень вещь субъективная, думаю уровень должен быть такой, чтобы вы могли самостоятельно создавать полноценные проекты с нуля, а так же вносить изменения в уже написанные проекты.

Привет! Очень насущный вопрос! Мне 31 год и по образованию я юрист. Недавно поняла, что когда-то в своей жизни я свернула "не туда". Сейчас я изучают основы программирования и английский язык. Дело в том, что живу в России на Урале в очень маленьком городке и не планирую переезжать в Москву или Питер (точнее, я бы хотела переехать, но муж категорически против). В нашем городе нет никаких IT фирм, ближайший мегаполис в 100км. Вопрос такой: можно ли стартануть удалённо стажёром или трейни-разработчиком без опыта?

Думаю, да - можно нагуглить разные варианты. Для начала, возможно, неоплачиваемые варианты - поучаствовать в коллективном учебном проекте или в open-source проекте не на коммерческой основе - главное собрать себе некое портфолио и потренироваться на более или менее «боевых задачах».


Ваши вопросы можно присылать сюда: @hum_it_bot. Вопросов много, разгребаю постепенно, извините, если получается медленно.
Привет, наконец-то я свичнулся в область поближе к айти - стал продактом. Как относишься к продакт-менеджерам? Зло, наседающее с дедлайнами, или добрый друг, помогающий в общении с заказчиком?

Привет! Ну конкретно я никак не отношусь к продакт-менеджерам, потому что в нашей компании их просто нет. Но в целом задача любых менеджеров, что продакт-, что проджект-, что просто функциональных руководителей - в налаживании эффективных рабочих процессов. Хороший менеджер - это полезный человек, и, конечно, друг разработчика - он разруливает вопросы, не имеющие прямого отношения к разработке, и позволяет программисту спокойно сосредоточиться на своей работе - то есть писать код. Когда менеджер не помогает работе, а наоборот ощущается как некто, вставляющий палки в колёса - это значит, что бизнес-процессы в компании налажены плохо. Что касается дедлайнов - у нас нет «внезапных» не запланированных дедлайнов. Мы работаем по agile - перед началом спринта (отрезка времени), планируем, какие задачи собираемся выполнить за текущий спринт. И к концу спринта их выполняем.

В какой момент обучения должно прийти понимание, что уже пора брать первый заказ на фрилансе? Какими минимальными знаниями ты должен обладать? И что делать, если уже взял заказ, но понимаешь, что знаний недостаточно и ты его не тянешь? (frontend)

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

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

Боюсь, гугл найдёт больше ответов на ваш вопрос, чем я. Зарегистрируйтесь в linkedin для начала.

Здравствуйте! Расскажите, пожалуйста, о работе фронтэнд разработчика в разных странах. Куда лучше обращаться новичку? Как выбрать компанию? В каких странах ИТ более развита? Буду безумно благодарна!

На счет новичка - вероятно, для начала лучше приобрести опыт работы там, где ее проще всего найти, а потом уже смотреть в сторону заграницы. По разным странам я не специалист, я работала только в России. Поэтому отвечу исходя из того, что слышала от коллег. Говорят, довольно выгодно ехать работать в Белоруссию, потому что там базируются многие американские компании, зарплата индексируется в долларах, и платят айтишникам там очень хорошо. В Германии много IT-стартапов и в целом почва хорошая, но есть определенный потолок зарплаты, выше которого не прыгнешь (как и во всей Европе). Самые высокие зарплаты у разработчиков в США. Это всё, что я слыашала по теме, факт-чекингом не занималась, пересказала всё с чужих слов.

Добрый день. Мне 43, тема программирования мне интересна, но учитывая возраст не поздно ли начинать?

Если интересно, то попробовать можно. Не буду вас обманывать, начинать в 43 сложнее, чем в 20 лет. Но в этом нет ничего невозможного, всё зависит от конкретного человека. В ленте нет-нет да и проскальзывает новость о том, как какая-нибудь 88-летняя бабушка в США научилась кодить и написала мобильное приложение. Вопрос больше в том, хватит ли вам мотивации и упорства.

Присылайте вопросы сюда: @hum_it_bot
Всем привет! Продолжаю рубрику #вашивопросы.

С чего начать изучать верстку?

С HTML и CSS.

Какие книги и курсы посоветуете новичку?
Мне кажется, или вы меня троллите?) https://t.iss.one/it_human/61

Добрый день. А какой язык Вы используете для написания кода? Так же было бы очень интересно читать рубрику "Недельный отчет", сразу хочется равняться на уровень повыше.

В последнее время я использую преимущественно Python (и SQL). Реже - Go, Javascript или что-то ещё, недавно даже был Lua.
Про недельный отчет - к сожалению, пока сложно представить себе такой формат, так как задачи, которые я решаю на работе - это коммерческая тайна, и подробно про них рассказывать в публичном пространстве без согласования с руководством - не вполне законно.

Здравствуйте! Спасибо за ваш канал) интересно, но пока мало понятно)
Сейчас пока только присматриваюсь к it сфере.
Понятно, что вы там творите всякие коды и приложения, и на этом всё)
Было бы круто узнать как (и зачем 😅) в этой сфере всё работает. Какие бывают направления... Кто чем занимается - прям на пальцах... Что из себя представляют заказчики... И заказы…


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

Предположим, вы предприниматель и решили открыть свою фирму - ООО «Рога и копыта». Вот вы арендовали офис, наняли 3 человека - себя, менеджера и бухгалтера, закупили компьютеры и начинаете осуществлять свою деятельность. Кто-то должен настроить ваши компьютеры, поставить туда операционные системы, подключить к Интернету, поставить и настроить разные офисные приложения - почту, всеми (не) любимый майрософт, возможно, что-то для бухгалтера - и чтобы это сделать, вам потребуется системный администратор, если не в штате компании, то хотя бы приходящий. Самых «дешевых» админов называют «эникейщиками» от англ. press any key - у них нет каких-то особых навыков, все на уровне - поставить винду, настроить принтер. Но по сравнению с бухгалтером Марьей Петровной, которая с компьютером «на вы» такой человек - уже айтишник.

Дальше вы, конечно, захотите свой сайт с каталогом услуг или продуктов. Первым делом, вероятно, сайт будет писать ̶д̶е̶с̶я̶т̶и̶к̶л̶а̶с̶с̶н̶и̶к̶ какой-нибудь фрилансер за недорого (хочется же сэкономить), а располагаться сайт будет у какого-нибудь хостера. На первый взгляд сайт будет ничего, но потом окажется, что некоторые ссылки на нем не работают, страницы не грузятся, и через раз он показывает сообщение «500 internal error». Создателя этого сайта ищи-свищи - родители запретили ему пользоваться Интернетом, потому что нашли у него сигареты. Так что вы найдете еще какого-нибудь фрилансера, чтобы он поправил ошибки своего предшественника. И с каждым повторением этого сценария код сайта становится всё хуже и хуже, а багов становится только больше. Потом у вас появляется аж 50 клиентов, и с такой нагрузкой сайт уже не справляется, и дальше откладывать некуда - приходится нанимать своего разработчика. Он, конечно, будет fullstack-разработчиком (всё ещё хочется сэкономить, правда?). Посмотрев на код сайта он говорит, что это просто не может работать, и бесполезно его чинить, проще написать заново с нуля. Но на этот раз разработчик более или менее толковый, и через пару месяцев работы у вас появляется более или менее работающий сайт. Потом, правда, разработчику предлагают работу в Мюнхене, и сайт снова остаётся безхозным. Выводы сделаны и дальше приходится нанимать целую команду разработчиков - аж 2х людей.

(продолжение ниже)
…Тем временем клиентская база становится больше, отдел продаж у вас тоже растет. А где они хранят информацию о заказчиках и о том, как протекают продажи? Ясно, что не в тетрадочке. Для этого существуют системы CRM - туда заносятся данные обо всех клиентах - и существующих, и потенциальных, о ходах переговоров с ними, о том, в какой стадии находится продажа услуг, с кем из клиентов работает какой менеджер, и прочая нужная информация. Вероятно, для начала вы будете использовать crm как готовый продукт, написанный кем-то для вас (с платной поддержкой). Но со временем окажется, что эта crm неудобна для ваших целей и менеджеры очень на нее жалуются. Видимо, нужно написать свою crm под свои цели (или доработать существующую). Так что нужен кто? Еще один программист.

Наконец у вас появляется бюджет, чтобы сделать нормальный сайт. Так что вы нанимаете отдельных разработчиков под фронтэнд и бэкенд, и даже дизайнера. Бизнес процветает, клиенты приходят толпой. Вот их уже больше тысячи человек… и внезапно сайт снова начинает тормозить. Раработчики говорят, что хостер не справляется с нагрузкой - сайту нужен свой сервер. И еще отдельный сервер под базу данных - (база данных - это то место, где хрянятся все данные - и каталог товаров или услуг, и история заказов клиентов, и список клиентов - в общем, всё то, что клиент видит на сайте). Так что вы либо покупаете себе парочку железных серверов и ставите прямо в офисе (увольняете эникейщика и нанимаете админа посмекалистее, чтобы он за ними смотрел), либо арендуете их в облаке (что дороже, но хлопот меньше, и меньше вероятность, что всё сломается, а данные потрутся). А когда вы еще больше вырастете, и поймете, что вам нужно больше серверов, то придёте к тому, что пора арендовать стойку с серверами в дата-центре, а то и «заиметь» собственный дата-центр. И тут уже вам не обойтись без штата хороших админов. А если вы хотит всё по уму, то наймёте ещё и dba (database administrator), чтобы он следил за базами данных.

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

Вот у вас уже крупная компания, с известным именем, и множеством разнообразных продуктов. Каждый день вы выпускаете обновления для сотни приложений. Ясно, что вряд ли эти обновления вручную копируются на сервера вашими программистами, как это было на заре существования фирмы. Выкатка приложений - это уже автоматизированный процесс, всё налажено так, что в момент обновления сайты и всё остальное продолжает работать, а клиенты ничего не замечают. В худшем случае 5% клиентов будут затронуты, а обновление так же автоматически откатится к предыдущей версии. Так вот, обновлением приложений и налаживанием всего этого процесса занимаются Devops-инженеры. Они должны владеть технологиями ci-cd (continuous integration/continuous delivery). Не всегда это отдельные люди, бывает, что этим занимаются те же разработчики, что пишут приложения. Или админы. Потому что вообще-то «Devops - это процесс, а не человек»(с).
…Вы часто замечали, чтобы какой-нибудь Google сломался и не работал? Такое случается и с гуглом, конечно. Но в современном мире минуты простоя - это моветон и позор. Всё должно работать 24/7. Если вам кажется, что всё «само» работает и не ломается - это не так. Всё ломается и постоянно. Но в идеале это должно происходить незаметно для клиентов и очень быстро чиниться. И чтобы ничего не ломалось неожиданно - существует мониторинг. На графики выводится вся важная информация по вашим приложениям, серверам и прочему - как быстро отвечает сайт? Сколько клиентов сейчас активно? Сколько свободного места осталось на диске на сервере с базой данных? Если с чем-то из этих аспектов возникают пробелемы - то людям, которые отвечают за работоспосбность приложений (в зависимости от компании это могут быть сами разработчики, или отдельные инженеры или админы) приходит уведомление - «Аларм! Число пользователей на сайте упало с 1000 человек до 0!» Скорее всего, это значит, что сайт сломался. И его срочно надо поднимать. Да-да, срочно - это прямо сейчас, пусть даже в 4 утра. Чем серьезнее и крупнее компания, тем менее допустимы простои.

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

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

Это, разумеется, далеко не всё IT, а первое, что пришло мне в голову.

Ваши вопросы можно присылать сюда: @hum_it_bot