Как стать автором
Обновить

Комментарии 29

Помимо чтения туторилов необходима практика! Ставишь себе задачу — и постепенно ее выполняешь, обращаясь к тем или иным источникам информации при возникновении трудностей. Можно даже на каком-нибудь IT-форуме выполнять лабораторные задания, которые так любят размещать студенты в разгар сессии.
Лабы и реальная работа имеют очень маленькое пересечение.
Полностью согласен, но это хоть какое-то закрепление теории :)
Помимо чтения туторилов необходима практика! Ставишь себе задачу — и постепенно ее выполняешь, обращаясь к тем или иным источникам информации при возникновении трудностей.

Такой способ лично мне кажется единственно верным
ставь + если узнал на постере статьи быстрый обратный квадратный корень по методу Джона Кармака ;)
Тоже зашёл про это написать :)
https://en.wikipedia.org/wiki/Fast_inverse_square_root
А также если узнал в синей книге самого Кармака.
На самом деле это не его метод, он был разработан в Silicon Graphics.
это правда, но свою популярность он получил как раз как «метод Кармака» и под этим именем он чаще всего и известен в среде программистов.

Дело в том, что весь код SGI (как минимум до создания на базе урезанной IrisGL открытой библиотеки OpenGL, но это уже закат силиконов) был закрытым, а Джон наоборот, свои движки после достижения ими определенного коммерческого успеха всегда выкладывал под открытыми лицензиями. Соответственно, программисты и знакомились с ним в основном читая исходные коды Quake, и соответственно, автоматически ассоциировали его с Кармаком и компанией ИД
Логично, просто копипаста кода из руководства не требует понимания работы. Смотришь на код: вот это вроде понятно, это тоже, можно переписать к себе. А как нужно будет отойти от шаблона, то возникают новые проблемы и неспособность из решить.
Поэтому нужно поставить цель в написании своего проекта, со соими целями и задачами. И тогда, решая реальные проблемы, появляются знания. А проект потом можно добавить к портфолио, его будет не стыдно показать другим людям.
Я даже где-то читал, что вместо копипаста кода надо его перенабирать вручную. Как раз типа, понимание работы, глубже вникаешь и точнее запоминаешь.
Оригинальная точка зрения, но кому-то, быть может, подходящая.

А по поводу выбора проекта всё просто: огромное количество функционала, нужного — по крайней мере мне в повседневной жизни — не реализовано. Собственно, я так и начал писать код.
Электронное фортепиано с неБаховским строем, парсер нот из pdf в midi, кастомный скаффолд трёхслойки, большие числа и так далее.
И у каждого из нас есть программки, которые вроде бы и мелкие, но которые так хочется иметь под рукой. Их и надо разрабатывать в первую очередь, имхо.
Вместо набора вручную надо решить задачу «сделать так же, но с перламутровыми пуговицами».
НЛО прилетело и опубликовало эту надпись здесь
Еще меня как новичка вводил в заблуждения начальный туториал где сначала решается задача одним методом а потом говорится что вот лучше делать так на шагах где главная тема совсем не та. Потом когда ищешь как правильно делать нужно копаться среди всех страниц выискивая подходящий пример. Хотя может это и к лучшему, заставляет выучить получше с первого раза чтобы потом не копипастить методы а обдуманно их использовать.
сразу надо делать свой проект, причем не для портфолио, а на продажу или для зарабатывания денег

если язык/технология вас заинтересует, то вы всегда можете почитать мануал уже совсем другими глазами, а если нет, то этого уровня знаний будет достаточно, чтобы указать его в вашем skill set

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

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

Самый короткий и наглядный пример этого безобразия запомнился мне из одной книги по js:
«Оператор delete используется когда вам надо удалить свойство из объекта»
И ни слова о том, зачем и для чего это применяется))

С курсами тоже самое — «мы учим синтаксису и фреймворкам — копипастите код очередного todo-app, улыбайтесь и ставьте лайки».

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

Никогда не понимал как люди что-то учат по туториалам или книгам. Дали задачу — запили или умри.

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

Правильность и оптимальность — это точно не про туториалы.

Когда я первый раз пришел на работу разработчиком, мне выдали портянку Pl/SQL-кода и сказали: «Надо, чтобы работало так-то». Ничего, разобрался.
Потом на той же работе первый раз в жизни увидел очень древний перловый код, на нем какие-то отчеты строились. Тоже ничего, разобрался и даже ничего не сломал.

Практика — она такая, полезная штука.

Еще интересную байку про практику вспомнил. У меня первый ноутбук был Dell какой-то там, на P133 проце, большой черный кирпич. Стояла там 98-я. А еще там был заменяемый флопик/дисковод в одном гнезде, причем на горячую менять нельзя. Хочешь читать диски — вырубай ноут, выдергивай флопик, ставь дисковод.

В какой-то момент винда слетела. BIOS с диска грузиться не умеет, только с дискеты. Соответственно загрузочную дискету я загрузить могу, а дальше никак. Ничего, придумал решение — грузился с дискеты, с другой дискеты грузил NC, переносил руками загрузочные файлы на диск, правил пути, загружался уже с диска, ставил систему.

Кажется, именно с той поры я и увлекся компами и всем сопутствующим.
Язык программирования — обязательное условие для работы программистом.
Но как говорит начальник отдела (и я с ним полностью согласен) при приеме юниоров — главное умение работать в команде и иметь базовые навыки по процессу разработки.
А для этого нужны ряд компетенций
http://it-check-list.asvoip.com
НЛО прилетело и опубликовало эту надпись здесь
Забавно… Только сегодня(точнее уже вчера) об этом зашла речь(https://habrahabr.ru/company/wrike/blog/330900/#comment_10300708)… Согласен с мужиком на все 146%. У меня с этим всё ещё экстремальнее. Я вообще не могу ничего изучить, если под изучаемый предмет нет абсолютно конкретной и реальной задачи. Причём не для того чтобы показать в портфолио какому-то дяде, а исключительно для себя. Например я так и не смог изучить хаскель, хотя и пытался. Ну просто не было под него никакого реального проекта! И сейчас нет. Зато сейчас с успехом и с удовольствием изучаю скалу, считающуюся значительно более сложным языком, делая на ней проект, на котором собираюсь зарабатывать. Хотя точнее будет сказать делаю проект, параллельно с изучением скалы. Серьёзный недостаток тут в том, что на работу Вас почти всегда принимают как уже готового специалиста и начальство просто не даст Вам участвовать в проекте на чем-то чего Вы не знаете, но хотели бы изучить. Поэтому во-первых учиться приходится «без стипендии». Во-вторых смена сферы деятельности чаще всего сопряжена со сменой работы. Мне тут правда немного легче. Сейчас сижу без работы и сам выбираю чем мне заниматься.
Пошаговый туториал — это не обучение, а экскурсия по новой технологии. Вы проходите по ней, осматриваетесь, и принимаете решение хотите ли с ней связываться.
Самая большая проблема при любом обучении — это наличие времени на это самое обучение.
Но при достаточной мотивации, возможно всё, ну, или почти всё.
Потом, что касается туториалов, Practice makes perfect. Софт эволюционирует, туториал может просто устареть, и написанное в нём потерять свою актуальность. И это может случиться намного быстрее, чем вам это кажется.
То же самое касается документации. По личному опыту знаю, что то, что написано в документации, и то, что в реальности, не всегда совпадает с вашим пониманием прочитанного.
Нередко, после прочтения доков, начинаешь делать, и, внезапно, понимаешь, что ничего не понимаешь, и всё на самом деле не так, как понималось и думалось.
Так что, что касается разработки софта, тут без практики вообще совсем никак.
Тупая копипаста ничего не прибавит в голове, поэтому просто бессмысленна.
Успехов Вам в освоении новых горизонтов!
Последние несколько месяцев я постоянно только этим и занимаюсь.
Чтобы работать в софтверной компании, за три месяца мне пришлось с нуля усвоить материал по нескольким технологиям. Я ещё продолжаю.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий