«Для создания компании недостаточно хороших разработчиков»: Джефф Просайз о бизнесе и машинном обучении

в 12:31, , рубрики: .net, dotnext, Jeff Prosise, машинное обучение, Программирование

«Для создания компании недостаточно хороших разработчиков»: Джефф Просайз о бизнесе и машинном обучении - 1

Для большинства дотнетчиков Джеффри Рихтер — гуру и важнейший автор. А вот для Джеффа Просайза он в первую очередь друг и бывший коллега: они вместе основали компанию Wintellect (в числе её клиентов — Microsoft). Сейчас профессиональные пути Джеффа и Джеффри разошлись, но оба по-прежнему посвящают свою жизнь .NET.

В прошлом году Джеффри Рихтер выступил на нашей конференции DotNext, мы тогда взяли у него интервью для Хабра, и в числе прочего спрашивали, каково айтишнику идти в бизнес. А теперь Джефф Просайз тоже приезжает на DotNext, поэтому стало интересно расспросить об этом и его. Как возникла такая «звёздная» компания? Что Джефф может посоветовать разработчикам, подумывающим о собственном деле? От какой ошибки может предостеречь опыт Wintellect?

А поскольку на DotNext Просайз выступит с докладом про ML.NET, также задали несколько вопросов о машинном обучении.

Биография и книги

— У вас долгая карьера — расскажите, как она начиналась.

— Я получил диплом инженера-машиностроителя в 1982 году в США. Это было время, когда только-только появились первые персональные компьютеры. Я ими заинтересовался, накопил денег и купил одну из первых моделей. Оказалось, что мне очень нравится программировать, а также писать о программировании, о компьютерах и обучать пользователей компьютеров, в особенности разработчиков.

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

— О чём была эта первая книга?

— Она была посвящена DOS 5. Выход DOS 5 был важным событием, так же, как впоследствии выход Windows 95. Моя первая книга была длиной около тысячи страниц. Мой агент тогда сказал, что обычно люди начинают с коротких книг, а я родил слона. Потом я написал ещё несколько книг о DOS, а затем перешёл на Windows и некоторые другие темы.

В 2001 году вышла моя последняя книга, она была посвящена Microsoft .NET — это была первая книга о .NET, изданная в Microsoft Press. С тех пор я больше не пишу книги, отчасти потому, что люди теперь по-другому усваивают информацию. Раньше обучение происходило в основном по книгам, сейчас же есть интернет и много чего ещё. Мой метод преподавания не изменился, но вместо книг я сейчас использую конференции, онлайн-курсы и прочее.

— А сам процесс сочинения книг с 1990-х ощутимо изменился, или для авторов всё остаётся по-прежнему?

— Да, изменился. В 1990-е автору вначале нужно было набрать текст в текстовом редакторе, затем распечатать в формате через два интервала и отправить по FedEx в издательство, а после нескольких недель редактирования текст возвращался весь в красных пометках. Сейчас весь этот процесс происходит в электронной форме.

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

— В интернете часто можно встретить упоминание вашей книги «Programming Windows with MFC» — она стала самой популярной? Как она появилась?

— Да, она была одной из двух наиболее популярных моих книг, наряду с книгой про DOS 5. У неё были очень высокие продажи, и я довольно долго получал от неё неплохой доход. Большинство из тех, кто знает меня как автора, знакомы именно с этой книгой.

«Для создания компании недостаточно хороших разработчиков»: Джефф Просайз о бизнесе и машинном обучении - 2

В то время большой популярностью стало пользоваться программирование под Windows, и многие учились ему по классической книге Чарльза Петцольда «Programming Windows», которая ориентировалась на язык C. Но к середине 1990-х большинство профессиональных разработчиков под Windows писали уже не на C, а на C++, и использовали MFC, библиотеку классов C++ для Windows, сделанную Microsoft.

Я удивился, когда узнал, что Microsoft Press не издала книги для MFC, аналогичной книге Петцольда. На тот момент я уже давно был знаком с Петцольдом, и я спросил его, собирается ли он написать книгу про программирование под Windows на C++. Он ответил, что нет, поскольку с C удобнее обучать людей наиболее базовым вещам. После этого я заключил договор с Microsoft Press на книгу про MFC, и в итоге она стала довольно важным пособием для программистов, которые хотели писать под Windows на C++, а не на C. У меня до сих пор лежат на полке её копии, и я по-прежнему встречаю людей, которые в своё время читали её и помнят меня по ней. Всегда приятно узнавать, что твоя книга помогла чьей-то карьере.

Wintellect, бизнес, Джеффри Рихтер

— Вы уже второй из со-основателей Wintellect, приезжающий на DotNext. Поэтому хочется узнать: как вы познакомились c Джеффри Рихтером и как появилась компания?

— Мы с Джеффри дружим уже давно, и по-прежнему много общаемся. Сейчас он работает в Microsoft, и ему там очень нравится. Познакомились мы в середине 1990-х годов; если я не ошибаюсь, то это произошло в Редмонде, где нам показали Windows 95. В Microsoft провели эту встречу, потому что хотели получить фидбек. На тот момент я уже читал одну из книг Джеффри про программирование для Win32, и на этой встрече я подошёл к нему и сказал, что мне очень нравится то, что он пишет.

После этого мы быстро подружились. В 1990-е мы практически каждую неделю проводили тренинги для различных компаний вроде Intel и Microsoft, в основном в США. Этим же занимался и третий основатель Wintellect, Джон Роббинс, с ним мы тоже дружили. В конце 1999 года мы приняли решение создать Wintellect, потому что нам нравилось то, чем мы занимались, и мы хотели делать это совместно.

«Для создания компании недостаточно хороших разработчиков»: Джефф Просайз о бизнесе и машинном обучении - 3
Джеффри Рихтер на прошлогоднем DotNext

Если мне не изменяет память, компания была зарегистрирована в апреле 2000 года. Поначалу мы в основном проводили тренинги. В 2005 году к нам в компанию пришёл Тодд Файн, который сейчас является нашим генеральным директором. Тогда его задачей было создать отдел консалтинга. Я, Джеффри и Джон хотели заняться консалтингом, но наш опыт в этой области был ограниченным, поэтому нам понадобилась помощь Тодда.

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

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

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

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

— Как вы с Джеффом и Джоном распределили роли между собой, когда начали компанию?

— И у Джона, и у Джеффа, и у меня уже были клиенты, которых мы консультировали и для которых проводили тренинги. Поэтому поначалу мы работали в основном со своими старыми клиентами. Это и определило распределение ролей на том этапе. Джон Роббинс является одним из ведущих экспертов в мире по отладке, поэтому он занимался всем, что так или иначе было связано с тренингами по отладке или решением трудных и неожиданных проблем с софтом.

Джеффри, как правило, работал с вещами, связанными с Win32 или .NET. Я тоже писал на .NET, и неплохо разбирался в ASP.NET, поэтому я помогал Джеффри с .NET и брал на себя всё, что связано с ASP.NET. Если же возникала необходимость в навыках, не связанных с этими областями, мы нанимали других людей.

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

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

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

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

Мой третий совет такой: нужно иметь видение не только в том, что компания должна достичь, но и в плане культуры компании. Лучше иметь представление об этом с самого начала, чем пускать это на самотёк. Очевидно, что по мере роста вашего бизнеса ситуация будет меняться, точно предсказать будущее невозможно, и к этим изменениям нужно быть готовым. Но даже с учётом этого важно с самого начала иметь представление о том, каким должен быть ваш бизнес.

— Поначалу все всегда делают ошибки — можете ли рассказать о какой-нибудь ошибке в управлении Wintellect, чтобы это помогло кому-нибудь другому избежать её в своём бизнесе?

— Могу. Урок, который следует вынести из моего рассказа, будет такой: очень важно диверсифицировать свой бизнес и своих клиентов, и не класть все яйца в одну корзину. Мы этого не делали, и это обернулось довольно существенными трудностями для Wintellect.

В 2005 году мы создали отдел консалтинга, но при этом продолжали проводить тренинги. В течение многих лет мы получали много миллионов долларов в год от Microsoft за обучение их разработчиков. Джон, Джеффри и я постоянно летали в отделы Microsoft по всему миру и проводили там тренинги — в Редмонде, Хайдарабаде, Дублине, Пекине, Шанхае и много где ещё.

И всё бы ничего, но в 2014 году Microsoft довольно существенно изменили свою политику и решили больше не проводить централизованного обучения своих сотрудников. В один прекрасный вечер в сентябре 2014 года мы получили по электронной почте письмо от Microsoft, в котором нас поблагодарили за нашу прошлую работу и сообщили, что больше контрактов на тренинги не будет. Отдел консалтинга это никак не затронуло, а вот отдел тренингов за один день из прибыльного стал убыточным, потому что там работало много очень умных и отлично знающих свою область людей, а две трети дохода этого отдела шло от Microsoft.

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

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

— Вы правы в том, что для любой корпорации, которая нанимает сторонних преподавателей, всегда встаёт вопрос того, насколько эти преподаватели квалифицированы.

Но нам помогло то, что у нас преподаванием занимались не новички, которые на .NET пишут два года, а люди, которые участвовали в создании самого фреймворка и знают тех, кто его разрабатывает сейчас. Например, когда нужен был курс по .NET, мы отправляли Джеффри Рихтера, который участвовал в создании .NET и написании CLR, поэтому он может дать такой материал и ответить на такие вопросы, на которые, скорее всего, больше никто на этой планете не может ответить. У нас есть контакты в Microsoft, мы отлично знаем те системы, по которым мы консультируем, и, на мой взгляд, именно это нас больше всего отличает от других компаний.

И мы уже имели большой опыт преподавания — я, Джон Роббинс и Джеффи Рихтер много лет обучали программистов в других корпорациях, Wintellect просто позволил нам объединить усилия и предложить более полный набор курсов.

— К сожалению, не в каждой тренинговой/консалтинговой компании есть свой Джеффри Рихтер — можете ли вы дать совет тем, у кого суперзвёзд нет?

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

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

И ищите людей, которые не только хорошо знают свой предмет, но и умеют работать с аудиторией. Есть много людей, которые хорошо знают техническую сторону дела, а вот передать это знание группе в 10, 20 или 30 человек у них получается плохо. Это талант, который не всегда сопутствует техническим навыкам.

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

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

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

Есть и другое отличие, которое, как я подозреваю, относится в такой же степени к Facebook или Google: в Microsoft работает много очень умных людей, они нанимают лучших программистов не только из США, но и со всего мира. Поэтому на занятия там приходят люди, для которых софт — это не просто заработок, а дело их жизни. Я получаю огромное удовольствие от преподавания в такой аудитории, потому что такие люди задают хорошие вопросы, значительно лучше мотивированы, и качество обучения в итоге оказывается выше.

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

За годы работы в Microsoft мы проводили много занятий в Редмонде, где находится главный офис компании, и там на занятиях обычно присутствовало по 85 человек, иначе удовлетворить спрос не удавалось. Даже с учётом таких больших групп на занятия всё равно выстраивались очереди, иногда из-за этого возникали недоразумения, один раз люди даже подрались! Это произошло ещё в то время, когда широко в ходу был Silverlight, и я тогда вёл по нему занятия, которые из всех моих курсов пользовались наибольшей популярностью в Microsoft, на них очень трудно было попасть. Как-то утром около аудитории собралось где-то 30 или 40 человек, и двое из них повздорили друг с другом, в конечном итоге дело дошло до кулаков и пришлось вызывать охрану. Конечно, это плохо, но при этом мне как инструктору приятно осознавать, что люди готовы дойти до драки, чтобы попасть на занятие.

— Сейчас у компании есть видеокурсы WintellectNOW — можете рассказать про них? Онлайн-курсов сейчас много, ваши чем-то отличаются?

— Мы создали WintellectNOW в 2012-м. Поводом для этого послужила просьба Microsoft: они сказали, что не хотят слишком напрягать нас постоянными перелётами для проведения курсов вживую, а также им было необходимо более масштабируемое решение. Поэтому WintellectNOW изначально предназначался исключительно для Microsoft, но впоследствии стал доступен и широкой публике.

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

Мы не хотели создавать платформу, на которой будет по 50 курсов для .NET или Angular. Нашим клиентам мы говорим, что для нас важно качество, а не количество. У нас есть только один курс по Node.js и только один — по Angular, но зато мы вкладываем в них все усилия. И я не раз слышал от менеджеров тренингов в крупных компаниях, что им нужно не 40 курсов по Angular, а один, зато первоклассный. Именно эту нишу мы и пытаемся занять.

Машинное обучение

— В докладе вы поговорите о ML.NET, а пока хочется поспрашивать вас про машинное обучение в целом (не только применительно к .NET). Правильно ли понимаем, что вы сейчас считаете полезным разбираться в ML даже тем разработчикам, работа которых с ним не связана?

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

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

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

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

— Вы сказали, что алгоритмическое распознавание изображений всегда можно обмануть — но ведь и нейросети работают не безошибочно?

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

На этот вопрос можно отвечать по-разному, поэтому я остановлюсь на одной теме: в последние месяцы много критики было направлено в адрес систем распознавания лиц из-за того, что они работают не «беспристрастно». Например, зачастую эти нейронные сети лучше распознают лица белых людей, чем представителей других рас. Эта проблема действительно существует, но важно понимать, что это проблема не нейронной сети как таковой, а того способа, которым эта сеть была обучена. Если в тренировочных данных преобладают белые лица по сравнению с лицами выходцев из Латинской Америки, то сеть действительно будет не объективна.

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

— Недавно у нас на TechTrain был доклад Григория Бакунова о возможности намеренно обмануть ИИ (например, заставить систему распознавания лиц принять тебя за кого-то другого). В заключении говорилось, что может получиться как с компьютерными вирусами: этим начнут пользоваться злоумышленники, а противостоять им будет «антивирусная индустрия». Как вы думаете, стоит ли ожидать подобного?

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

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

— С тем, что машинное обучение очень полезно для Microsoft или Google, вряд ли кто-то поспорит. Но у разработчиков может быть ощущение «это компаниям-гигантам нужно, а мы тут люди простые». Насколько полезно машинное обучение для небольших компаний?

— Думаю, его можно использовать как крупным компаниям, так и не очень. Приведу пару примеров. Мой сын изучает data science, в декабре он закончил магистратуру. Прошлым летом он проходил стажировку в небольшой компании, которая продаёт товары для домашних животных. Там он работал в отделе аналитики и создавал модели машинного обучения, которые занимались анализом отзывов клиентов на их сайте. То есть вместо найма человека, который бы просматривал комментарии и говорил, являются ли они в целом положительными или отрицательными, они сделали модель, которая делала то же самое.

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

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

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

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

Что касается математики, то тут многое зависит от того, как происходит обучение. Когда я преподаю машинное обучение, я показываю несколько уравнений, но в целом у меня математики немного, потому что моя аудитория — это программисты, и им интересна не столько математика, сколько то, как устроена система, и как её реализовать в коде. А моя дочь учится сейчас на последнем курсе по специальности computer science, и им тоже преподают машинное обучение, и там, наоборот, сплошная математика.

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

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

На DotNext я буду рассказывать о методе опорных векторов, и за две минуты моего доклада вы лучше в нём разберётесь, чем после чтения 50 научных статей по этой теме. То есть тут очень многое зависит от того, как представлен материал. Именно поэтому мне нравится преподавать — у меня прагматический подход к предмету, а не такой, как в учебниках, и я получаю огромное удовольствие, когда вижу, как у людей проясняется взгляд, когда им удаётся разобраться в новой теме, и то, что казалось сложным, оказывается простым.

Кстати говоря, я очень рад появлению ML.NET, потому что когда я учился машинному обучению, оно было исключительно на Python. Я пишу на C#, и самостоятельного интереса к Python у меня никогда не было, но лучшие библиотеки для машинного обучения (Keras, Scipy) — это библиотеки Python. Мне пришлось научиться программировать на Python исключительно из-за этого. Поэтому я очень обрадовался, когда узнал от Microsoft, что они работают над ML.NET, потому что это значило, что я наконец могу не только изучать машинное обучение, но и использовать его в коде на C# без единой строчки Python. Так что если вы пишете на C#, но при этом хотите не отстать от времени в области машинного обучения, то сейчас, наконец, есть такая возможность.

Джефф выступит на DotNext с докладом «Machine learning for C# developers: Introducing ML.NET». С близкой темой выступит Дмитрий Сошников: «Всё, что разработчик .NET хотел знать про глубокое обучение, но боялся спросить». А если ML вас не интересует совсем, обратите внимание на остальные десятки докладов — они все будут по другим темам.

Автор: Евгений Трифонов

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js