Под катом подробности – описание методики, выводы, контент курса и описание того, как вы можете сделать подобную вещь в своем городе.
Зачем вам это нужно?
Если вы – профессиональный разработчик, то вы знаете, что наша профессия – лучшая в мире. Мне всегда было немного жаль людей других профессий и раньше даже казалось, что у них не хватает какой-то части мозга, которая должна быть у современного человека.
При этом многие дети – особенно в глубинке – когда делают свой профессиональный выбор, этого не осознают. Они видят кучу выпускников программистских специальностей современных ВУЗов, которые работают “тыжпрограммистами” в разных конторах, чинят бухгалтершам виндовс, и как-то не похоже, что меняют мир и зарабатывают кучу денег. В результате дети делают неправильный выбор и сами становятся этими бухгалтершами или какими-нибудь мерчендайзерами.
Я всерьез считаю, что если больше детей будет становиться разработчиками, это кардинально повлияет на ситуацию в стране – с бедностью, отупением, алкоголизмом и вытекающими из них проблемами. Фокус в том, что вы – как профессиональный разработчик – можете на эту ситуацию повлиять. Просто зайдите в ближайшую школу и предложите им провести бесплатный курс программирования.
Формат занятий
В моем случае выбранной школой стал лицей №9 города Слободской – города, поблизости от которого мы строим Поселок программистов. Я немного рассказал директору про поселок и предложил бесплатно научить желающих школьников современной веб-разработке.
Курс работал с ноября 2015 года по май 2016. Я тратил примерно 3 часа в неделю – полтора часа на написание контента программы, и полтора часа – на само занятие в компьютерном классе. При этом, если вы решите воспользоваться этой уже более-менее готовой программой, у вас будет уходить всего полтора часа, а не три.
При этом в самом классе я занимался только решением конкретных проблему учеников. Ребята заходили в трекер задач, брали оттуда очередное задание, читали краткое описание технологии и документацию по ссылкам, а затем пытались сделать. Когда у них не получалось – я подходил и мы вместе находили и устраняли ошибку.
Стоит отметить важный момент – весь курс устроен так, чтобы не зависеть от технического обеспечения класса. Для выполнения заданий ученику должно хватать только браузера. При этом все client-side задачи решаются в jsfiddle, а весь server-side – в Cloud 9 IDE.
Результаты
В результате за пять месяцев школьники с нуля научились верстать HTML, писать на чистом JS, потом на React, потом на Node, делать роутинг и обработку HTTP-запросов вручную, потом использовать для этого express-based фреймворк Sails.js, а в финале – делать полноценный изоморфный рендеринг на основе React Router и пользоваться гитом.
При этом освоение технологий происходило на фоне конкретных практических задач, с которыми сталкивается каждый разработчик – bcrypt-аутентификация, компиляция ES6 => js, клиентская сборка и т.п.
Базовые принципы
Я выделил несколько ключевых принципов, которые повлияли на успешность этой методики, и на которые стоит ориентироваться при создании аналогичных курсов – в том числе не только по программированию, а по обычным дисциплинам.
1. Фан
После выполнения задачи ученика всегда должно ждать “Вау, заработало!”. Вещи, которые не подчиняются этому правилу, лучше оставлять на потом – они будут освоены самостоятельно, когда в них появится потребность. Простой пример – когда происходит освоение верстки, не стоит морочить голову правильной структурой документа с head и body, потому что это скучно. Лучше заставить нарисовать красный квадратик и дать почувствовать магию.
2. Роль ментора
Надо понимать, что все ученики по любой образовательной программе двигаются с разной скоростью. Поэтому учитель, объясняющий всему классу какую-то теорию – это пережиток. Ведь часть этих учеников еще не освоила до конца опорные для этого предмета знания и просто не смогут усвоить новую информацию.
Поэтому теорию ученик должен освоить самостоятельно – а к учителю обращаться только за менторской поддержкой – помощью в решении конкретной проблемы.
3. Сначала практика
Теория должна быть подчинена практике, а не наоборот. В курсе фокусом любого мыслительного процесса является задача, которую нужно сделать – теория и документация дается ровно в таком объеме, чтобы хватило на успешное выполнение.
4. Сначала низкий уровень (спорный вопрос)
На курсе мы сначала проходили, как задача решается на низком уровне, без применения современных средств. Мне казалось, что только прочувствовав до конца весь геморрой, который приходится терпеть разработчику при решении задачи базовыми средствами, ученик поймет, зачем вообще нужен фреймворк, иногда довольно сложный для понимания (как, например, React Router).
Безусловно, такой подход делает курс медленней. Оправдано это или нет – крайне спорный вопрос, на который у меня пока нет однозначного ответа.
5. Никакой алгоритмизации (спорный вопрос)
На программистских специальностях ВУЗов обучение начинают со скучной алгоритмизации, не имеющей отношения к реальным современным задачам. Вычислить формулу, потом развилка, потом цикл. Считается, что освоив эти “кирпичики”, человек поймет, как справляться с реальными задачами. На практике – ни разу не видел, как кому-то такой подход помогает – люди, скучая, пробиваются через эту фигню, а потом все равно не могут сделать алгоритм в реальной задаче.
Я считаю, что алгоритмы должны изучаться только в применении к реальным задачам – например, аутентификации (проверить сессию, получить credentials, поискать в базе, установить сессию).
Подчеркну, что этот вопрос тоже спорный, и я не уверен, правильно ли исключать базовую алгоритмизацию из курса. Пока это сработало. Никаких сложностей с реализацией довольно сложного алгоритма аутентификации у ребят не возникало.
6. Реальные задачи
Мы делали панель интернет-магазина – с аутентификацией и заказами. Это хорошо понятная современному школьнику проблема, решение которой вызывает энтузиазм. Если решать что-то абстрагированное, устаревшее или оторванное от современного мира – это отрицательно повлияет на мотивацию.
7. Ученик учит других
Нам в школе учительница истории рассказывала, что в 20-х годах в СССР было колоссальное отставание по грамотности – на ликвидацию которого, по всем прогнозам, должны были уйти десятилетия. Фактически проблема была решена всего за несколько лет – путем построения в школах системы, где один научившийся читать обучал других. Никаких подтверждений этому факту я в дальнейшем не нашел, но идея кажется довольно клевой.
Я попытался применить это на курсе. Когда какой-нибудь юнит получался у меня не очень, все ученики “застревали”, и я постоянно был занят с кем-нибудь из них, решая его проблему – пока остальные ждали очереди. Когда очереди ждал кто-то из хорошо продвинувшихся, я просил его помогать остальным. На начальных стадиях курса это работало – но затем сложность возросла, далеко продвинувшимся приходилось все тяжелее, и свободного времени у них не оставалось. Как это превратить в стабильно действующую систему, я пока не знаю.
Выводы
До самого конца курса пробились всего 4 человека – из 18, пришедших на первое занятие. К сожалению, по мере повышения сложности аудитория постепенно таяла. Самой сложной точкой, которую не смогли преодолеть большинство – переход от верстки непосредственно к программированию.
Естественно, это проблема курса. Из-за его несовершенства мир опять получил несколько мерчендайзеров вместо разработчиков. Суть этой проблемы – неравномерное распределение сложности. Для нас с вами это очень сложно почувствовать – ведь все эти вещи кажутся такими очевидными. Поэтому фикс этой проблемы можно сделать только после боевой обкатки.
Еще одна деталь – я просил учеников продумывать идею своего проекта – чтобы, когда курс закончится, они могли бы перейти к его воплощению под моим кураторством и обкатать полученные навыки в бою. К сожалению, этого не произошло – курс затянулся до мая, там начались эти самые ЕГЭ и каникулы, за время которых полученные незакрепленные скиллы скорее всего потеряются. Вывод – такие курсы надо начинать в сентябре, чтобы хватило времени для реальной практики.
Ну и основной вывод – эта штука работает. На одной чаше весов – 5 лет в ВУЗе и багаж неактуального барахла, на другой – 5 месяцев занятия раз в неделю и у тебя – навыки по современным технологиям.
Что дальше
Как я уже говорил, было бы круто, если бы вы нашли время провести подобный курс в ближайшей школе. Вы можете воспользоваться моим контентом, либо сделать собственный курс (например, по iOS-разработке), используя обкатанные принципы.
Я раздавал задания через баг-трекер (Асану), и это было жутко неудобно. Все существовавшие на тот момент конструкторы курсов показались довольно убогими, а потратить серьезный ресурс на улучшение формы контента у меня не получилось – основная работа и поселок забирают довольно много времени. Существующий контент выгружен из асаны в Google Drive в виде «как есть» – без дополнительного форматирования и, возможно, с какими-то ошибками, которые не успел исправить.
По идее этот проект должен быть в форме специального бесплатного опен-сорс сервиса – куда авторы смогут выкладывать курсы, кураторы – проводить по ним занятия, а студенты – вносить результаты для проверки. Есть полное понимание того, как этот сервис должен быть устроен и есть каркас, который можно развивать (Sails.js + React). Не хватает только времени (требуется 2-3 недели фулл-тайма). Если есть желание помочь и присоедниться к проекту – пишите в контакты на сайте Поселка.
Новости по поселку
Мы довольно давно не писали на Хабре/GT – в основном это было связано с неоднозначной политикой администрации по поводу тарифа “Стартап” и вопросом по поводу того, разрешать ли нам писать на нетехнические тематики.
В общем, у нас все хорошо, только медленно. Поселок в итоге обходится без инвесторов, развивается за счет собственных средств и денег за участки от присоединившихся к нам соседей. Сделано два коммуникационных узла (оптика + электрика + водопровод), строится гостиница.
По жилью – готов первый дом (семья уже живет), до сентября заканчивается отделка во втором, до нового года планируем закончить еще два. Еще три семьи выкупили участки, но пока копят финансирование на стройку, Недавно присоединилось еще две семьи, сделки зарегистрированы, скоро запускаем стройку.
Ну и самое главное – то, ради чего все, собственно, и затевалось. Ребята на время стройки переезжают в Слободской, и у нас постепенно формируется отличная компания с клевой дружеской атмосферой. Это люди, с которыми интересно общаться, отдыхать и даже просто находиться рядом.
За нашими новостями лучше всего следить в инстаграме и на сайте Поселка.
Комментарии (73)
DMGarikk
29.07.2016 14:05+3что наша профессия – лучшая в мире
А я считаю что машинист поезда — лучшая в мире профессия. И из-за недостаточно острого зрения я попал в ИТ и в итоге в программисты.
Или ещё как говорит мой друг — электрик. «Мне достаточно повернуть рубильник. и программист будет курить бамбук со всем своим пафосом, и его драгоценный код без электричества не будет стоит ни копейки» (с)
safari2012
29.07.2016 14:28Подскажите пожалуйста, как вы в своём замечательном поселке решаете проблему с отоплением?
Вроде газа у вас нет. Электричеством обогреваетесь или может тепловые насосы освоили?alevkon
29.07.2016 14:33Тепловые насосы по нынешним временам мягко говоря, дороговато.
Мы используем (на выбор) либо твердотопливные котлы длительного горения, или электрику (если дом не сильно большой).safari2012
29.07.2016 15:11Если использовать немецкий (или др.европейские) котлы, то да. Но есть варианты гораздо дешевле, например, в Казахстане есть завод.
В своё время искал источники, вроде это самый большой и старейший форум по теме ТН: https://www.forumhouse.ru/threads/107737/
У вас хозяйство молодое, самый большой геморой для ТН — это тепловой коллектор. На ещё непаханом участке его можно сделать очень и очень дёшево. Поинтересуйтесь там нынешими расценками.alevkon
29.07.2016 15:13Мы когда рассматривали этот вопрос, смотрели только тему «воздух-воздух». Грунтовые не рассматривали – говорят, они почву сильно охлаждают, что на растительности на участке сказывается негативно.
safari2012
29.07.2016 15:39Говорят не те люди, что знают. Мало того, вы летом, в обратную сторону можете тепло загонять в землю (режим кондиционера), по сути подогревая её в тот период когда там что-то растёт и запасая тепло на зиму (серьёзно). И сэкономите на кондиционерах для всего дома (по крайней мере на наружных блоках).
Вы спросите там знающих людей, они подскажут. Потом, когда всё будет засеяно и засажено, будет вдвойне обидно.
А ещё у вас рядом там водоем есть, что критически может удешевить стоимость контура.
А если ещё и грунтовые воды в 15м от поверхности, это вообще дар божий.
kudesnik86
29.07.2016 15:41+1Не давно была статья https://geektimes.ru/post/276204/ там автор в коментариях пишет что за год на отопление электричеством потратил 45 т.р. на дом в 200 квадратов при тарифе на электроэнергию 3.5 рубля днем, 2.5 ночью. (в поселке тариф 2.83 на 1.97). Я думаю что при таких ценах тепловой насос не окупается.
Я лично планирую электричесвом отапливаться.safari2012
29.07.2016 16:11Всё верно. Только надо ещё кондиционеры на весь дом посчитать. Без них ведь никак летом. ТН даст вам удешевление, т.к. понадобятся только фанкойлы, которые стоят гораздо дешевле внутренних блоков сплитов.
kudesnik86
29.07.2016 16:22В Кировской области летом хорошо, не жарко, и кондиционер не особо нужен. Лично для себя я возможно поставлю один кондиционер на дом. Реально живя в Кирове за два лета я свой кондей включал часов на 40 в сумме, а за городом с этим должно быть еще проще.
safari2012
29.07.2016 17:26Это да, нюанс. У вас ещё, по идее, дровами (или пеллетами) топить сильно дешевле, чем по стране. Леса много.
imbeat
29.07.2016 17:51Насчет дров соглашусь. Горбыль вообще бесплатный (лично видел несколько свалок горбыля на обочинах, бери не хочу). А пеллеты вроде (глубоко не изучал цены) стоят как и в среднем по стране.
safari2012
29.07.2016 20:36Пеллеты делают как раз из отходов, в т.ч. можно из горбыля.
Вам надо тогда бизнес открывать по их производству :)
Izy125
29.07.2016 14:331. С образование не шикарно, но вполне себе.
2. Нет лучшей профессии, есть странные только:)
3. Из 18 дошли 4 — мне кажется или вы просто ориентировались на сильных в составление программы?
4. Есть у меня знакомые, которые тоже пропустили основы алгоритмизации. У меня волосы дыбом встают, когда мне рассказывают, как у них строится система управления парковкой.
П.С. А вообще молодцы, что открыли курс. Я вот пока не решился влезать в эту область:(
yea
29.07.2016 15:29А я вот считаю, что чтобы учить программированию — не надо учить программированию. Надо учить математике. С уклоном в дискретную математику, комбинаторику, теорию графов, теорию вероятностей. А программирование потом само придёт, если желание будет. А «выкидывать скучные штуки» — это максимум способ создать мотивацию, но никак не способ научить чему-то хорошему. Это только моё мнение, повторюсь.
Gokjer
29.07.2016 17:28Как говорил мой еще школьный преподаватель информатики, чтобы научиться программировать — надо программировать. То есть, теория важна и без неё никуда, но она не нужна(программисту) в отрыве от практики. В идеальном вузе студент должен постоянно делать какие-то проекты разной сложности и направленности и параллельно ходить на лекции за теорией.
yea
29.07.2016 20:06Дело здесь в том, что процесс программирования в большинстве случаев претерпевает изменения намного быстрее, чем это может позволить себе делать учебная программа любого института. Соответственно, чтобы выращивать программистов, нужно не учить программировать, а учить учиться программировать. И математика здесь очень кстати, поскольку одновременно является базой для понимания многих вещей и учит мыслить нужным образом. Бесполезно пытаться угнаться за изменениями нашей отрасли, в общем. Самообразование — наше всё. А с правильным фундаментом самообразование будет в разы легче. Поэтому обучение студентов какому-то одному, пусть даже актуальному в данный момент направлению — тупиковый путь.
t0pep0
29.07.2016 15:53При всём уважении к автору, меня как выпускника данного лицея немного коробит.
Когда я учился изначально было два преподавателя по предмету "Информатика" — у одного преподавателя учили Word, Excel, PowerPoint
У второго — Logo, Visual Basic, особо упоротые товарищи грызли php и Borland C, основы действительно "информатики" — машинные представления, мощности алфавитов, расчёты
Ну и html у обоих. Критерия распределения не было, кому как повезёт
К сожалению, второй преподаватель вышел на пенсию (уже после моего выпуска), насколько я знаю, на его место пришёл молодой преподователь, чему он учит сказать не могу.
А коробит меня от того, что когда я учился нам действительно второй преподаватель давал хоть какие-то основы алгоритмизации, понятия алгоритмов да и просто давал необходимую (хоть и минимальную) базу. Сейчас, как понимаю, этого нет.
Хотя радость за родной лицей тоже есть. Прогресс, новые технологии и всё такое.
[sarcasm]А подсаживать школьников на js вообще законно? [sarcasm]
alevkon
29.07.2016 16:01я так и не понял, от чего вас «коробит»
t0pep0
29.07.2016 16:08Отсутствие алгоритмизации. Всё понимаю, нудно, скучно, не интересно, но ИМХО — нужно. Без этого Вы им даете только знание инструментов и варианты решения типовых задач.
Повторяюсь — всё вышесказанное ИМХО, не болееalevkon
29.07.2016 16:20Вы статью повнимательнее прочитайте.
1) Я не преподаватель информатики в лицее и понятия не имею, что там на информатике преподают. Если там всем в обязательном порядке преподают алгоритмизацию – это очень печально, потому что на кой черт она нужна гуманитариям.
2) Вчитайтесь еще раз – на курсе не было алгоритмизации в классическом виде, потому что это ИМХО неэффективно. ИМХО алгоритмизацию надо осваивать на реальных задачах типа аутентификации, что и было на курсе. Если вас от этого прямо «коробит», мне непонятно, как вы вообще живете – вас от всего должно коробить.
Gokjer
29.07.2016 17:19Поэтому теорию ученик должен освоить самостоятельно – а к учителю обращаться только за менторской поддержкой – помощью в решении конкретной проблемы.
Возможно, это одна из причин сокращения числа учеников до четырех. Много ведь на данную тему писали. Далеко не каждый человек хорошо усваивает информацию самостоятельно, кому-то гораздо проще воспринять вербальную речь(лекцию), а не прочитать учебник/мануал.
Конечно, со временем ребята научатся самостоятельно извлекать и усваивать информацию. Но в образовательных проектах обязательно должно быть несколько подходов.alevkon
29.07.2016 18:00На первых занятиях, посвященных верстке, такой проблемы не было – люди сами осваивали теорию, и все было окей. Видимо, дело тут все-таки в резком скачке сложности. И да, тут важный момент – нужно сразу приучать к самостоятельному изучению документации, потому что в реальности разработчики именно так и учатся – вербально тебе никто ничего объяснять не будет.
naneri
29.07.2016 17:27По поводу того, нужны начинать с алгоритмов или начинать с практики, я считаю, что оба подхода имеют право на существование, но в лоб алгоритмы будут интересны только «задротом», в то время как практика будет ещё и интересна тем, кто не так сильно заинтересован в области программирования. Для примера приведу изучение иностранного языка — взять человека, который учит его в вузе и человека который уехал за рубеж учить этот язык на срок равный длине обучения, в 99% уехавший будет разговаривать лучше, при условии, что изучить данный язык они хотели одинаково сильно.
Дополнительная аналогия тем, кто пишет «видел код тех то, видел у тех то», могу сказать, что 90% людей вообще ничему не хотят учиться. Я изучал китайский в Китае, большая часть ничего не учит, не общается с китайцами (хотя оправдаю, с ними не интересно как-то), приехал к себе, здесь в вузах на Китаеведении у ребят знаний ещё меньше чем у тех кто ничего не учил.
Разумеется программирование — это немного другая история. Например тут есть такая особенность, что деньги могут удержать на месте, знаю полно разработчиков, которые привыкли к определённым инструментам, отладили себе процесс и 10 лет клепают на условном вордпрессе, для них чтобы серьёзный бонус получить, надо очень много времени потратить и просто на один уровень глубже копнуть это потеря времени = денег. Такие если изначально алгоритмы не знали, то и потом уже никак их не толкнуть в эту сторону. Проблема в том, что такого могут по ошибке куда нить тим лидом запихать, вот тут то и повод для холи варов и много чего весёлого.
skyeff
29.07.2016 17:31+1«До самого конца курса пробились всего 4 человека – из 18»
Потрясающая «эффективность»! А чем тогда такое «инновационное» образование лучше уже существующего?DMGarikk
29.07.2016 17:41ну вообще измерять эффективность обучения цифрами окончивших курсы плохая идея. Всётаки программирование это не катание на велосипеде которое даже животные осиливают.
lex_infohunter
29.07.2016 17:38всегда было немного жаль людей других профессий и раньше даже казалось, что у них не хватает какой-то части мозга, которая должна быть у современного человека.
Steve Jobs was never a programmer. He was a product visionary, astute businessman, and excellent if eccentric salesman.
Waxer
07.08.2016 01:07+1Вы круты. Вы молодец. Надеюсь, что не бросите это доброе дело и продолжите дарить знания. Все кто минусят ваши сообщения это диванные теоретики, которые в жизни ничего для других не сделали, умеют только критиковать, не обращайте на них внимания.
alevkon
07.08.2016 11:22Спасибо!
К сожалению, не обращать внимания на подобные испарения довольно сложно – они сильно демотивируют и отбивают желание писать что-то на хабре.
Kanut79
> Если вы – профессиональный разработчик, то вы знаете, что эта профессия – лучшая в мире. Мне всегда было немного жаль людей других профессий и раньше даже казалось, что у них не хватает какой-то части мозга, которая должна быть у современного человека.
Вы бы там поаккуратнее с этим. Оглянитесь вокруг. Облако пафоса ещё не начало образовываться? :)
>На программистских специальностях ВУЗов обучение начинают со скучной алгоритмизации, не имеющей отношения к реальным современным задачам.
А потом удивляемся откуда берётся кривой и неэффективный код…
Assada
Вообще отвратительная фраза. Если бы я в универе учил «скучной алгоритмизации» (а не спал (: ) то было бы куда проще на реальных проектах реализовывать всякие крутые штуки.
alevkon
Серьезно считаете, что сортировку недоучили? И это корень проблем?
Kanut79
А Вы серьезно считаете что алгоритмизация заканчивается на сортировке? :)
alevkon
В части современной веб-разработки, в 99% случаев алгоритмизация заканчивается даже раньше.
Современные ORM и фреймворки при правильном применении позволяют абстрагироваться от алгоритмизации как таковой. Да, будет 1% случаев, когда понадобится сделать что-то сложное – но в таких случаях, не покрытых фреймворками, ВУЗовские знания будут бесполезны. Так что вы не зря спали на лекциях – ничего бы это не поменяло.
Kanut79
Ну во первых я на лекциях не спал.
Во вторых IT на веб-разработке не заканчивается. И даже не начинается.
В третьих Ваши веб-разработки обычно тоже содержат и бизнес-логику и базы данных. И взаимодействие между ними. И всё это требует понимания алгоритмов.
Ну и в четвертых понимая алгоритмы и фреймворки можно использовать более эффективно чем без этого понимания.
alevkon
вы же сами сказали
У меня ощущение, что вы невнимательно прочитали пост.
Моя мысль заключается в том, что алгоритмизацию нужно изучать в применение к реальной задаче (как, например, аутентификации). Но не в том виде, в котором ее преподают в ВУЗах – там она действительно вызывает скуку и отбивает интерес к профессии.
Kanut79
>вы же сами сказали
Где я это говорил?
>У меня ощущение, что вы невнимательно прочитали пост. Моя мысль заключается в том, что алгоритмизацию нужно изучать в применение к реальной задаче
Алгоритмизация, как например и та же математика, это необходимая база. И студенты ВУЗов должны быть достаточно взрослыми людьми и иметь достаточно интеллекта чтобы быть в состоянии понимать теорию. А не требовать «реальных задачек» а ля " У Пети три яблока, ау Васи две груши"…
Metus
Студенты ВУЗов на первых курсах ещё с мамкой живут или на мамкины деньги почти все.
sashabeep
Ну, например, когда работал на одном городском портале, два прогера делали картографический веб-сервис из забугорных карт, купленных на диске в польском формате (карты только-только официально разрешили), и у них какое-то время все разговоры были про задачу коммивояжера и теорию графов
sashabeep
Booring! Всякие дейкстры с минисуммами
kudesnik86
Я вот тоже спал на алгоритмизации. Может быть в этом и проблема?
Важность алгоритмизации я понял на реальных задачах, сильно позже.
В целом, вопрос с алгоритмизацией спорный, но вполне возможно в школе лучше начинать не с него.
alevkon
Со скромностью у меня все в порядке, не беспокойтесь. Есть много достойных профессий, но ни одна из них не поменяла мир за последние 20 лет так, как это сделала наша.
С кодом у меня тоже все в порядке. Разработка сейчас сильно смещается в декларативную плоскость, а не алгоритмическую – в ВУЗах же, по старинке, считают, что алгоритмизация – основа всего.
Kanut79
>Со скромностью у меня все в порядке, не беспокойтесь. Есть много достойных профессий, но ни одна из них не поменяла мир за последние 20 лет так, как это сделала наша.
Извините, но мир поменяла не Ваша или наша профессия, а отдельные люди. Большинство из которых информатиками не были. И уж тем более его не особо меняют миллионы code monkeys и админов.
>Разработка сейчас сильно смещается в декларативную плоскость, а не алгоритмическую – в ВУЗах же, по старинке, считают, что алгоритмизация – основа всего.
Потому что алгоритмизация это действительно основа всего. и если вы не понимаете базовых принципов и алгоритмов, то код у вас конечно будет красиво «задекларирован», но вряд ли особо эффективен.
alevkon
Я так понимаю, под «информатиками» вы понимаете как раз программистов. И кто, по вашему, сделал возможной информационную революцию, если не программисты? И нормальные админы (не те, которыевиновсы чинят – а те, которые сервера с highload обслуживают), еще как мир меняют. И даже code monkeys еще как меняют – потому что позволяют другим людям задешево что-то создавать.
Эффективность – это в том числе и соотношение затраченных ресурсов к полученному результату. Да, современные фреймворки в конечном итоге работают медленнее, чем если бы весь код писался руками – зато они позволяют за недели решать то, на что раньше уходили месяцы. И для их эффективного применения не так уж важно знать низкий уровень.
Впрочем, это вопрос спорный – в курсе я как раз придерживался того, чтобы показать сначала решение проблемы на низком уровне, а потом – современными декларативными средствами. Сейчас я больше склоняюсь к мысли, что это потеря времени. Да, низкий уровень иногда может понадобиться, но тогда и стоит тратить время на его изучение. Иначе – получится изучение теории без практической задачи – которая почти всегда забывается.
Kanut79
>И кто, по вашему, сделал возможной информационную революцию, если не программисты?
Ну вообще-то возможной сделали её математики, физики и электротехники. Потому что программистов тогда считай не было.
>И даже code monkeys еще как меняют – потому что позволяют другим людям задешево что-то создавать.
Если следовать этой логике, то меняют мир все. В том числе и уборщицы. И тогда непонятно откуда этот айтишный пафос…
>И для их эффективного применения не так уж важно знать низкий уровень.
Алгоритмы они как бы далеко не на самом низком уровне нужны и важны. А на всех. Вы даже GUI криво написать можете если с пониманием алгоритмов проблемы. Или точнее если у Вас есть понимание, то и напишите вы его быстрее и лучше.
alevkon
Все верно. И программист – это просто логическое продолжение вот этих профессий.
У меня ощущение, что вы невнимательно прочитали пост.
Моя мысль заключается в том, что алгоритмизацию нужно изучать в применение к реальной задаче (как, например, аутентификации). Но не в том виде, в котором ее преподают в ВУЗах – эти кирпичики без реальной задачи просто не усваиваются.
Kanut79
>И программист – это просто логическое продолжение вот этих профессий.
Если бы эти профессии исчезли, то об этом можно было говорить. Но этого не произошло.
>Моя мысль заключается в том, что алгоритмизацию нужно изучать в применение к реальной задаче (как, например, аутентификации). Но не в том виде, в котором ее преподают в ВУЗах – эти кирпичики без реальной задачи просто не усваиваются.
И ещё раз: мы о студентах ВУЗов говорим, а не о первоклассниках. Если они не могут усваивать теорию, то им в ВУЗе делать нечего.
alevkon
Вот именно – в ВУЗе им делать нечего. Им есть что делать в реальных компаниях. Когда я первый раз попал в крупную компанию, я был единственным в группе с высшим образованием – все остальные бросили ВУЗ и пошли в реальную работу. Угадайте, у кого зарплата была больше?
Kanut79
Подозреваю что у тех кто лучше работал.
П.С. А я с другой стороны на лекциях не спал, ВУЗ не бросил и алгоритмизацию учил. И теперь работаю в Германии. Угадайте больше я получаю чем Ваши коллеги или нет? :)
alevkon
Понятия не имею, но скорее всего, меньше.
Вообще, если вы считаете, что переезд в другую страну — это мерило успеха, то глубоко ошибаетесь.
Kanut79
>Вообще, если вы считаете, что переезд в другую страну — это мерило успеха, то глубоко ошибаетесь.
Я считаю? Опять начинаются фантазии как со сном на лекциях?
Это Вы привели деньги, а точнее более высокую зарплату, как «мерило успеха». А я всего лишь продолжил Вашу же мысль.
alevkon
Да, деньги в профессии – это мерило успеха.
А вот причем тут переезд в другую страну – я вообще не понимаю.
Kanut79
Так и не надо про него ничего понимать. Понимать надо что в результате денег у меня больше и следовательно по Вашей логике получается что я «успешнее» :)
alevkon
Я все-таки решительно не помниаю, почему вы считаете, что переезд в другую страну кореллирует с деньгами. Действительно квалифицированному разработчику легко найти удаленку в т.ч. в западных компаниях, с такой же рыночной зарплатой. Если у вас это не получилось, и пришлось ехать –то почему вы считаете, что у вас «больше денег»?
Kanut79
>Я все-таки решительно не помниаю, почему вы считаете, что переезд в другую страну кореллирует с деньгами.
Потому что я знаю уровни заработных плат в обеих странах. Что позволяет мне предположить что вряд ли Ваши коллеги зарабатывают столько сколько я. Особенно учитывая что они без высшего образования и похоже не особо уважают алгоритмизацию :)
>Если у вас это не получилось
А с чего Вы решили что у меня не получилось найти нормальную зарплату в России? И что причиной переезда была именно зарплата? Может мне например хотелось с квалифицированными людьми работать? Ну теми, которые понимают важность алгоритмизации? :)
alevkon
Уровни заработных плат в обеих странах одинаковые – если у вас достаточно квалификации, чтобы любой работодатель, не торгуясь, взял на удаленку… Если недостаточно – тогда да, придется ехать.
Kanut79
>Уровни заработных плат в обеих странах одинаковые
Это кто Вам такое сказал? :)
>если у вас достаточно квалификации, чтобы любой работодатель, не торгуясь, взял на удаленку… Если недостаточно – тогда да, придется ехать.
Придётся? Ещё раз: с чего Вы решили что переезд сам по себе был каким-то «необходимым злом»? :)
Labunsky
Из частного не следует общее, из частного даже частное не всегда следует
К слову, это одна из тех базовых вещей, которые в тех самых ВУЗах и преподают
faiwer
Ради интереса открыл ваш профиль. Увидел, что вы "занимаетесь посёлком программистов". И ссылка на официальный сайт. Стало интересно. Открыл сайт. Итак:
Глубже смотреть не стал. Декларативное программирование без использования мозга говорите? Фреймворки и CMS? Плагины на Wordpress и Drupal? К чёрту Кнута? Ну да, ну да.
alevkon
Это распространенная ситуация – сапожник без сапог.
У меня банально не хватает времени, чтобы выделить его на оптимизацию сайта — летом активизировалась стройка, а по основной работе интенсив как бы не спадает.
Что касается сути – сайт сделан на своей платформе с WYSIWYG-редатором, которую я развиваю в качестве еще одного хобби. Там довольно много недоработок, в частности – отображение картинок с автоматическим подбором размера в зависимости от размера браузера.
Shaco
А как вы этого добились? Речь точно идёт просто о загрузке страницы, без последующего просмотра фото в лайтбоксе, например, или использования карты? Безотносительно качества кода, хотелось бы понять, откуда у меня такое расхождение цифр с вашими:
http://funkyimg.com/i/2eKrq.png
p.s. на всякий случай, на часах 17:44 мск — после подтверждения комментариев r&c-пользователей время комментария становится временем подтверждения.
faiwer
Вы меня озадачили. Полез смотреть в Chrome те же результаты, что и у вас. Стал грешить на Vivaldi (в нём смотрел), тоже < 8MiB (что тоже более чем ужасно). Попробовал раза 3 и снова 54 MiB. Вот скриншот. Мышью не водил, курсор вообще в отдельном окне developer tools (Vivaldi пока не научился его внедрять в основное окно браузера). Попробовал повторно и записал скринкаст. Вот. 1.6 MiB. Вот этот рисунок весит 6.1 MiB. А вот он на странице.
Labunsky
Это вы еще на адаптивность не смотрели
Даже интересно, зачем там намеки на нее
xamelion
По сути много профессий поменяли мир за последние десятилетия «CERN, Смартфоны, Квантовая физика», но это одна сторона медали. С другой стороны это программное обеспечение позволяющее обрабатывать петабайты данных, системы искусственного интеллекта (нейронные сети глубокого обучения), программное обеспечение управления квантовым компьютером. То есть без программной части смартфоны это всего лишь железка, церн не смог бы найти бозон хигса. Квантовый компьютер не мог бы производить вычисления. Даже для того чтобы собрать микроконтроллер, чуть сложнее чем Atme, необходимо при помощи различных генетических алгоритмов, искать оптимальные варианты решения. Как говорил Михалков «Все профессии важны», но не все революционные. Программирование, Физика, Математика — на мой взгляд в наше время это основополагающие профессии для технической революции.
Hidralisk
Всё верно автор говорит. Алгоритмизация и прочая ненужная на тот момент развития человека «ерунда» не воспринимается мозгом. В свои 15-18 лет мало кто может усвоить азы алгоритмизации, дискретной математики и прочих «абстрактных вещей», которые они и не знают толком где применить. У нас в университете на усвоение данного материалы были способны наверно только люди программирующие с пелёнок. Оно не только не усваивается, а даёт прямо противоположный эффект — делает изучение программирования нудным занятием непонятно для чего существующим — отбивает желание учиться. Сухая теория и тонны трудно усваиваемой информации просто убивают любой запал и желание. Никто не начинает программировать с определения «а хороший ли у меня алгоритм» — все начинают с реальных и интересных задач. У меня программирование как таковое началось на 2 курсе второй семестр с ассемблера. До этого момента были десятки предметов (основы) которые осилить не мог никто, и все имели мучение лишь бы сдать их. Университет убил желание учиться почти у всех, включая меня. Изучение таких основ как теория алгоритмов, дискретная математика, теорвер, конструирование ЭВМ, теория систем и прочего прочего за 2 курса в отрыве от собственно программирования это просто провал образовательной системы. В итоге как результат из потока больше чем 120 человек — не более 5-8 IT-шников вообще.
Для запала и введения в программирование требуются реальные интересные задачи и их выполнение. Охват всего «целиком».
А потом уже когда есть некое «машинное мышление» углубление в различные ветки даёт результат. И люди уже начинают понимать для чего собственно и учат алгоритмы, как их применить в реальных условия и для чего то нужно.
Подход автора считаю абсолютно правильным. Согласен со всеми пунктами.
alevkon
Согласен с вами на все 100%.
Современный универ просто отбивает интерес к профессии, в результате чего все учат «из-под палки», а потом уходят работать не по специальности.
Kanut79
> В свои 15-18 лет мало кто может усвоить азы алгоритмизации, дискретной математики и прочих «абстрактных вещей», которые они и не знают толком где применить.
Значит в ВУЗ таким людям надо идти не в 15-18, а в 19-21. Или ещё позже. Или вообще не идти.
Хотя я не спорю что преподавание в ВУЗах можно сделать лучше. Но всё равно если человек не способен воспринимать и понимать теорию, то на мой взгляд в ВУЗе ему не место.
alevkon
см коммент выше
Hidralisk
Согласен. В Университет нужно идти когда есть хотя бы небольшой фундамент, на который можно наложить полученные от преподавателя на лекциях знания. Когда есть какой-никакой опыт разработки, сбора всевозможных костылей, наработки ошибок и тд… Когда есть некая уже картина в голове. На неё уже налаживаются хоть и не целиком — но уже большАя часть материала. Поэтому подход автора я считаю отличным — миную все тонкости и глубокие основы — научить людей писать хотя бы плохой но код, чтобы потом разбирая его на интересных задачах они могли создавать себе картину в голове.
А потом уже идти в университет прорабатывать глубину знаний.
А если человеку написавшему один раз «Hello world» рассказывать о глубинах строения ЭВМ и паттернах программирования — это бессмысленная трата времени.Человек должен быть готов к получению знаний.
vconst
Metus
По хорошему программисты могут готовится и в средних специальных учебных заведениях. А в ВУЗ-ы пусть идут те, кто уже поработал и осознал что хочет изучать, анализировать и разрабатывать новые алгоритмы, всякие большие О-нотации и куча другой высшей математики.
maxpsyhos
А всё проще — экзамены и базовые предметы. За три года вы просто забудете половину школьной программы, вам будет сложно, например, сходу въехать в вышку, если школьный уровень алгебры основательно подвыветрился. А до ЕГЭ надо было ещё вступительные экзамены сдавать, то по второму разу пол года к ним готовиться, но уже самостоятельно.
Izy125
Без обид, но у нас в среднем по школе процентов 80-90% осваивали и логику, и алгоритмы и понимали, зачем нужна блок-схема программы. Да, у нас матлицей, это накладывает некоторые моменты, но не более.
Мучаются — потому что идут не туда, куда хотят. Это вопрос к родителям, а не к универу. Опять же на своем примере. Да, у нас были якобы не нужные курсы в универе, но факту нам дали мощную базу, с которой все ушли туда, куда хотели. А кто ошибся универом, тот ушел с первого курса. Отсев примерно 50%
П.С. а чистые высокоуровневые программисты — это отдельная категория людей. Это к вопросу о том, что у всех своя колокольня)
kudesnik86
Я с alevkon знаком лично, и он уж точно не пафосен :-) Скорее резок на поворотах.
Просто ему искрене нравится его работа и то что он делает. В этом отношении я всегда немного завидую таким людям.
Я бы сказал, что алгоритмы крайне важны, но не на первой стадии обучения.
У меня была очень сильная алгоритмическая база, информатика со второго класса, олимпиады, cпециальность прикладная математика и информатика. Это не мешало мне писать кривой код :-) правда очень эффективный. Потом пришлось отучать себя писать «эффективный код» ;-)