Недавно разговаривала с коллегой на тему подбора персонала в IT, и вспомнилась зарисовка Александра Краковецкого на эту тему. Легко, весело и по полочкам:) Решила поделиться со всеми. Ссылка на оригинал статьи указана в конце.
Краковецкий Александр
Недавно меня спросили, чем разработка на C# отличается от разработки на C++. В результате родилась идея объяснить значение тех или иных ИТ терминов на примере процесса выращивания картошки.
Представим, что вам необходимо посадить картошку. У вас есть много способов решения этой задачи.
Вы можете найти человека с трактором, который приедет и посадит вам картошку, а также человека, который будет следить за тем, чтобы человек с трактором правильно посадил картошку. Они приедут со своей картошкой.
Это аутсорсинг (outsourcing).
Вы можете найти человека, который на вашем тракторе посадит вам вашу картошку.
Это аутстафинг (outstaffing).
Вы можете найти человека, который приедет, чтобы сделать замеры огорода, предложит несколько моделей тракторов и оптимальный режим работы тракториста. В этом случае картошку никто сажать не будет, но вы будете точно знать, как это сделать.
Это R&D, или научно-исследовательская работа.
Вы можете позвать соседа Колю, чтобы он посадил вам картошку за бутылку водки и 2 пачки сигарет.
Это фриланс (freelance).
Вы можете позвать всех свох родственников, соседей, друзей и вместе посадить картошку.
Это краудсорсинг (crowd sourcing).
Вы можете пройтись по друзьям, соседям, родственникам и рассказать о том, что вы лучше всех знаете, как сажать картошку, но для этого вам необходимы финансы. Вы обещаете, что как только вы соберете картошку, вы обязательно накормите всех, кто помог, первыми.
Это краудфандинг (crowdfunding).
Вы можете взять плуг, несколько ведер, картошку, книгу «Посадка картошки за 21 день» и самому посадить картошку. Но, если вам нужно будет посадить другой сорт картошки, то вам нужно будет перекопать огород еще раз. Риск: ночью может наведаться сосед и выкопать вашу закопанную картошку.
Это разработка на WordPress.
Вы можете взять лопату и посадить картошку на огороде, где уже есть удобрение, выкопаные ямки и стоят стрелки, в каком порядке сажать картошку.
Это разработка на .NET/C#.
Вы сначала с нуля делаете лопату, потом вёдра, изучаете состав почвы, после чего считаете вручную количество картошки. После чего вам необходимо выкопать столько ямок, сколько у вас картошки. Далее нужно последовательно заполнить все ямки картошкой. Пропускать ямки нельзя, так как вас ударит током.
Это разработка на C++.
Вы можете прийти к председателю колхоза, и сказать ему, что вы лучше всех знаете, как сажать картошку, однако в этом году вы её сажать не будете, но 100% вы займетесь этим в следующем году. И это будет реально круто, а урожай будет в 10 раз больше, чем урожай соседа. Поэтому вам нужны сейчас деньги, лопаты, трактор, тракторист (лучше два), пять копателей и секретарша.
Это питчинг стартапа перед инвестором.
Ваш прадед сажал картошку, ваш дед сажал картошку, ваш отец сажал картошку. И вы тоже продолжаете сажать картошку.
Это поддержка продукта (support).
Копая картошку, вы время от времени выкапываете ту, которую сажал еще ваш отец и дед.
Это legacy код.
В 8:00 утра вы со своим другом, отцом и соседом собираетесь на огороде, чтобы обсудить прогресс по посадке картошки. Вы рассказываете всем присутствующим о том, что вчера вы сажали картошку, сегодня тоже будете сажать картошку и у вас нет никаких проблем, которые мешают вам сажать картошку, кроме комаров, которые постоянно вас кусают. Но это не повлияет на качество и скорость посадки картошки и будущий урожай. После этого все берут лопаты и продолжают сажать картошку.
Это scrum-митинг.
Вы посадили картошку. Через некоторое время она начала прорастать. И в вашей картошке начали появляться колорадские жуки. Вы начинаете их травить, собирать вручную, давить и поджигать. Большинство из них вам удается уничтожить, но через некоторое время они кое-где появляются снова.
Это отладка (debugging) кода и исправление ошибок (bug fixing).
Вы посадили картошку. На огород пришел ваш отец и сказал, что картошка посажена криво и вы забыли оставить место для свеклы. Поэтому вам нужно пересадить часть картошки. Через два дня, когда вы заканчиваете работу, приходит ваш дед и говорит, что глубина, на которую вы закопали картошку, не достаточна, и поэтому вам нужно переместить всю картошку на 5 см ниже. А сам идет пить пиво с соседом Колей и вашим отцом.
Это руководитель команды (Team Lead), проджект менеджер (Project Manager) и рефакторинг (refactoring).
Вы хотите немного подзаработать. Вы идете к соседу Коле и говорите, что хотите помочь ему посадить картошку. Сосед просит вас показать самую большую картошку, которую вы вырастили в прошлом году, а также назвать имена других соседей, которым вы уже сажали картошку в прошлом. Сосед также спрашивает вас, почему вы пришли именно к нему сажать картофель, на что вы должны ответить, что всю жизнь мечтали сажать картофель только на его огороде. Затем вас попросят объяснить разницу между граблями и садовыми ножницами, рассказать о лучших граблях, с которыми вам приходилось работать, а также детально объяснить процесс заготовления сена и чистки колодца. И только после того, как мать соседа подтвердит, что «знает этого малого», вам выдадут самую тупую лопату и вы начнёте сажать картошку.
Это интервью в сервисную компанию.
Вы приходите к соседу Коле и набираете в его погребе картошку, чтобы посадить у себя на огороде. Обещаете, что когда ваша картошка вырастет, то часть вернёте назад или поможете в следующем году её посадить. Вы, конечно, ничего не делаете, и через год снова идете к соседу, чтобы взять у него немного картошки.
Это программное обеспечение с открытым исходным кодом (open source).
У вашего села есть большое поле, где люди из окрестностей выбрасывают свою картошку, а иногда и другие овощи. Кто-то выбрасывает гнилую картошку, а кто-то — хорошую. Поэтому вы принимаете решение не сажать свою картошку, а вместо этого периодически наведываетесь на поле, чтобы насобирать там картошку.
Это StackOverflow.com.
Вся ваша семья сажает в селе картошку. А вы в это время ходите по рынку и рассказываете всем о том, что у вас есть родственники, которые могут качественно и быстро посадить картошку, которую они смогут дорого продать на этом же рынке.
Это sales-менеджер, продающий свою offshore команду.
Вы просто хотите посадить картошку наедине. Но на огороде собралась сотня незнакомых вам людей. Они не помогают вам сажать картошку, но внимательно наблюдают за процессом. После того, как вы закапываете картошку в ямку, все быстро начинают записывать в блокнот количество ямок, рядов и сколько картофеля осталось в мире. Затем обмениваются своими блокнотами и бегут к вашему соседу, который тоже сажает картошку. Никто из наблюдателей не верит вам, что вы только что посадили картошку, пока не перепишут всю информацию с других блокнотов.
Это блокчейн (blockchain).
Вы печатаете на принтере 1000 фотографий с картошкой. Каждую фотографию продаете своему соседу за 1 долар, рассказывая, что сажать реальную картошку — это прошлый век и уже очень скоро эта реальная картошка никому не будет нужна, а все будут есть фотографии картошки. А поскольку напечатать новые фотографии в будущем будет невозможно, то эти фотографии будут расти в цене. Поскольку реальная картошка у всех, а фотографий нет ни у кого, то соседи с радостью покупают фотографии. Но на ужин всё еще варят реальную картошку. В это время в соседнем селе другие люди продают другие фотографии картошки и рассказывают, что только эти фотографии будут иметь ценность через 10 лет.
Это биткойн (bitcoin).
У вас есть 10 га с картошкой. Вы начинаете ее выкапывать. Но вас интересует не вся картошка, а только картошка квадратной формы, зеленого цвета и похожая на Микки Мауса. После того, как вы выкопали всю картошку, забираете найденных десять картошек, соответствующие вашим критериям, и идете домой.
Это Data Mining или поиск знаний в больших массивах данных.
Вы живете в селе, где уже 20 лет никто не сажал картошку. Но вы уверены, что где-то она есть. Поэтому вы берете лопату и начинаете перекапывать все подряд — огороды, тропы, поля, лесопосадки и даже озера. Через некоторое время упорного труда вам таки везет и вы действительно выкапываете картошку. Через некоторое время уже всё село начинает искать картошку, перекапывая всё подряд.
Это майнинг криптовалюты (cryptocoin mining).
Картошка много может рассказать о том, кто её вырастил. Например, добросовестный ли хозяин её вырастил, чем удобрял землю, какими инструментами пользовался, вырастил ли он её сам или, может быть, просто украл у соседа, а еще красивая ли у него жена.
За селом есть место, куда все жители должны отправлять образцы своей картошки, чтобы все желающие могли оценить их труд.
Но со временем это место превратилось в свалку. Кто-то картошку вообще отказался нести, кто-то принёс гнилую картошку, а кто-то начал рассказывать, что картошка у него есть, но показывать он её не будет. Некоторые люди установили охрану и начали брать деньги с каждого, кто хочет посмотреть на картошку.
Со временем, чтобы найти картошку конкретного человека, нужно перебрать горы мусора.
Это открытые данные (open data).
Вы накопали много картошки. К вам приехал председатель колхоза и выдал документ, где написано сколько картофеля вы накопали. Но чтобы прочитать этот документ, вам нужно ехать назад к председателю колхоза, потому что он единственный в селе умеет читать. Другие соседи могут видеть документ, но никто не понимает, что там написано.
Это хеширования (hashing, hash function).
У вас есть инструкция, как правильно сажать картошку. В ней описано как выкапывать ямки, какой глубины они должны быть, какой стороной нужно положить картошку в ямку.
Вы начинаете сажать картошку. После каждой закопанной картошки ваш отец проверяет, выполнены ли все инструкции правильно. И если хотя бы одна инструкция нарушена, вам нужно выкопать картошку, засыпать ямку и начать процесс заново.
Это test-driven development или TDD.
Ваши соседи копают картошку. Кто-то уже занёс выкопанную картошку в погреб, а кто-то выкопал, но еще не собрал, и она так и лежит на огороде. А кто-то еще даже не начинал процесс, и их картошка еще находится в земле.
Ваша задача — собрать точную копию всей картошки в своем погребе, даже той, которая еще не выкопана. Кроме того, вам важно подписать каждую картошку — кто её вырастил, на каком конкретно огороде её собрали, и какого она сорта.
К тому же, вам нужно это сделать таким образом, чтобы никто из соседей не узнал, что вы сделали точную копию их картошки и храните её в своем погребе.
Это скрепинг (data scraping) или парсинг данных (data parsing).
Вы приходите на огород, а там роботы сажают картофель. Оптимальный размер картошки, глубина ямок и скорость посадки рассчитывается в реальном времени на базе таких показателей, как скорость ветра, влажность, температура, стоимость картошки на мировом рынке и акций Kartoshka Inc. на Нью-Йоркской бирже.
Это искусственный интеллект (Artificial Intelligence).
Вам нужно посадить картошку, но никто в вашей семье не умеет это делать. Поэтому вы идете к соседу и смотрите, как он сажает картошку. Через некоторое время все сажают картофель как ваш сосед.
Это машинное обучение (machine learning).
P.S.
Вы выкопали картошку и складываете её в погребе — каждый сорт отдельно. Если по ошибке ваша картошка попадёт не на ту полку, прибежит ваш дед и начнет вас бить палкой.
Это реляционная база данных.
Однажды вам разрешили не сортировать картошку, а просто бросать её в погреб.
Это NoSql база данных.
Вы бросаете картошку не в погреб, а на чердак, где её распихивают по полкам, часть сносят назад в погреб, а часть — в погреб ваших соседей.
Это облачное хранилище данных.
У вас есть картошка. Но вместо того, чтобы её садить, вы из разных подручных средств делаете нечто, похожее на вашу картошку. Есть её нельзя, но сходство очевидное.
Это 3D-принтер.
В процессе посадки картошки вы записываете GPS координаты села, вашего поля, и, наконец, конкретной ямки, таким образом получая некий уникальный идентификатор, по которому можно легко вычислить, где закопана та или иная картошка.
Это IP адрес.