Доброго времени суток.
Меня зовут Дмитрий, мне через пару месяцев 30 лет из которых около 10 лет я «тыжпрограммист» и пол года назад я решил создать что-то свое (хромое, косое, вторичное, но мое).
Пару дней назад я общался со знакомым студентом и в нем я узнал себя образца 2009 года — те же проблемы, те же мысли. Данный текст является компиляцией нашего разговора и переписки ночью 24 сентября. Были упущены личные моменты и конкретные примеры, но текст стал более логичным и обобщенным.
Что помогло одному человеку, возможно поможет другому.
Вступление можно не читать, но из него можно будет понять площадку первоначальных знаний.
В 11 классе у меня был выбор на кого пойти учиться — учитель истории или программист. Историю я любил и понимал, программирование мне казалось очень интересным и перспективным занятием. Выбрал второе, ведь историей можно и в свободное время позаниматься.
Выбирать учебное заведение мне не довелось — родители пощелкали калькулятором и отправили меня в местный техникум, который под 1 сентября стал колледжем. О проблемах нашего образования я не буду расписывать, но желание писать код у меня очень сильно убавилось. После получения средне-специального я наотрез отказался учиться дальше и решил работать. Знакомый зазвал поработать системным администратором в бюджетную организацию: «Скоро намечается информатизация здравоохранения, надо и компы собрать, и зажеванную бумагу из принтеров вытаскивать, и людям все доходчиво объяснять. Два-три годика поработаешь, а там видно будет что и как дальше». О проблемах реформ в России не буду писать, но взгляды на жизнь и людей я пересмотрел. Отработав почти 6 лет, я уволился, так как все стало совсем печально. Отдохнул, сменил работу и тут ожило желание программировать.
В начале была идея — «вот бы сайт на котором можно было посмотреть более развернутую статистику и историю изменения данных». Речь идет о рейтинге игроков по серверам одной онлайн игры (никнейм, уровень, клан и т.д.). Официальный ресурс выдает только текущие значения, которые обновляются раз в сутки. Никакой истории изменений, никакой наглядности, трудно что-либо выбрать и ограниченные возможности сортировки. Имеется неофициальная версия в которой уже больше функционала, но и она мне неудобна, да еще и с майнером. Посему за первой мыслью пришла вторая мысль: «Нужно сделать что-то свое! Удобное и без майнера». И желательно чтобы процесс создания занимал по 1-2 часа вечером, так как свободного времени мало, а урезать сон не хотелось. За вечер я расписал примерный план действия и начал его воплощать в реальность.
Но чтобы что-то сделать, надо научиться это делать. Несколько дней я изучал статьи и видео на тему «что нужно для создания сайта?», через пару дней переключился на «сравнение разных ЯП — их плюсы и минусы». Примерно за неделю, смотря видео и читая статьи каждые день по 2-3 часа, я пришел к примерному набору технологий:
Некогда полученные знания были забыты и все нужно было начинать с нуля.
Самообучение — этот навык многим людям дается очень трудно. Постоянно кто-то или что-то отвлекает: котик решил помурчать на коленях, позвонил сосед, новая серия любимого сериала, новый мемчик в соц.сетях и сотни других примеров. Кроме силы воли, решительности и желания создавать у вас не будет союзников (есть еще голод, но он не всегда присутствует). Закрывайте социальные сети, закрывайте вкладку с сериалом, выключайте звук на телефоне, закрывайте дверь в спальню — временно убирайте все отвлекающие факторы. В информационном голоде мозг сам захочет получать информацию и тут перед ним основы SQL, которые будут неплохим кормом.
SQL интересен тем, что мало it-вакансий где бы он стоял на первом месте, но есть масса вакансий где он идет на 2 или 3 месте. Если вы только начинаете вливаться в программирование, то основы SQL могут стать неплохим началом. В качестве СУБД выбрал postgresql так как часто пишут что это хороший выбор для python (насколько это правда я не могу судить). Спасибо Postgres Professional за перевод документации.
Если вы учитесь по материалам доступным в интернете, то возможно, что вам не всегда удается все понять — где-то неточно передали теорию, где-то пример не отражает суть темы, где-то вовсе не объяснили интересный для вас момент. После прочтения одной статьи закрепляйте изученное прочтением похожей статьи или просмотром видео на подобную тему.
И в завершении реализуйте пройденный материал на примере своей задумки, даже если это в дальнейшем будет переделано или вовсе выкинуто как ненужный элемент. Не бойтесь экспериментировать. Добавлять в закладки браузера интересный материал.
Вот мы ознакомились с SQL, выбрали СУБД, создали базу данных под нашу идею и решили перейти к следующему пункту — как-то записать информацию со страницы в интернете в свою базу данных. На помощь приходит python, который приносит с собой свои пакеты psycopg2, json, datetime, requests. Ох и весело было разбираться во всем этом. Примерно за неделю экспериментов получился работающий скрипт, который пишет в базу данных изменения о 20-25 тысячах персонажей.
Теперь нужно все это выводить в табличном виде на сайте. Плавно перешел к основам html5 и css3 — скелет страницы и таблицы. В поисках хорошего материала я наткнулся на один портал который за небольшую денежку обещает сделать из меня фронтенд-разработчика. Первые пара уроков бесплатно, а дальше небольшая сумма, в этих уроках как раз дается минимальные базовые знания. Проходим бесплатные уроки, применяем полученные знания и получаем вот такие блоки:
Все понятно объясняется, можно у них будет при необходимости пройти курс. И через пару дней узнал, что это устаревшая форма записи и можно просто писать теги header, main и т.д. И на этом шаге понял, что на начальном этапе изучения покупать онлайн курсы не стоит. Я просто не смогу понять насколько они актуальны (а ведь часто авторы не указывают дату статей) и какой в них объем нужных мне знаний. Посему удалил закладку и чуть позже нашел то, что искал.
Стоит отметить, что покупая курс вы сами себя финансово обязываете на его прохождение — «ну не зря же денюжку отдал, а ведь мог за интернет заплатить». И начинается изучение информации которая вам не нужна для текущей цели, а если и понадобится, то не факт что вы ее вспомните. А если вы забросите курс, то будете себя упрекать — «и зачем брал курс? вот повис он мертвым грузом и вообще через 3 дня заканчивается, и сертификат этот никому не нужен… все боль».
Из интересного хотелось бы выделить следующие:
Просто читаем официальный сайт и перевод для версии 1.9, который в большинстве случаев подходит для версии 2.0. Все. Непонятные ошибки копируем и вставляем в поисковик. С вероятностью 90% через 1-5 минут вы найдете похожую ситуацию с решением проблемы, иногда с разбором решения.
Основным нашим помощником будет stackoverflow — популярная система вопросов и ответов о программировании. Изначально был только английский, но в данный момент имеется еще 4 версии из которых нас интересует русская.
Вот тут хотелось бы обратить внимание на некоторые ресурсы, которые иногда появлялись у меня в поисковых результатах — вопросы/ответы со stackoverflow переведенные машинным переводом и с рекламой (например qaru.site). Иногда они стояли выше самого stackoverflow. Перевод местами был вполне неплох, а местами просто набор слов — скорее всего это связанно с правильностью построения предложения, так как на stackoverflow пишут люди с разным уровнем владением английского (и не только его).
Как бы не был качественно сделан этот машинный перевод — читайте оригинальный текст, а если ваши знания английского не позволяют полностью понимать текст, то пользуйтесь онлайн переводчиками — со временем вы начнете все больше и больше слов понимать и однажды просто посмотрите ответ и поймете что там написано.
Вторым по популярности ресурсом, куда меня приводили поиски ответа, является toster — спасибо всем кто оставляет ответы и объясняет эти ответы.
С момента начала обучения прошло примерно чуть более 3-х месяцев — были и перерывы в 2 недели, и повторное чтение статей и мануалов, и проблемы на которых спотыкался по 2-3 вечера. Закладки браузера распухли, в телеграмме каждые 15 минут новая статья по интересующей меня технологии, ВКонтакте пестрит перепечатками этих статей. Информации море — захлебнуться легче легкого.
И в этот момент пришло осознание — а ведь начал захлебываться. И ночью я пересмотрел весь свой план — от внешнего вида сайта и его функционала до технологий, которые используются или планировались использоваться.
Сам план пополнился подпунктами и каждому подпункту была присвоена важность, очередность, обозначил критические точки без закрытия которых запретил сам себе двигаться дальше. Но больше всего было вопросов — сам себе задал вопрос, сам нашел ответ, сам себе его объяснил, сам внес изменения в план.
Следующий месяц был шоковой терапией — поставил Debian 9 (который изучал с нуля), на котором первый месяц не было никаких социальных сетей, форумов, сериалов, фильмов, скайпа, дискорда. Я просто пропал на месяц из обычного для меня (и для большинства пользователей) интернета.
Расписание моих вечеров стало таким:
— проблема или вопрос
— поиск решений и ответов
— реализация
— либо записываем в тетрадь решение, либо закладка в браузере
— если наше творение выходит из под контроля, то удаляем все и начинаем делать с чистого листа (в данный момент используется 4-я версия)
Где-то к августу я восстановил часть социальных контактов — вернулся в соц.сети, поставил Discord, каждые 2-3 дня захожу на windows и проверяю то, то еще не перевел на Debian. Темп исполнения плана снизился, но меня это не сильно испугало, ведь первая черновая версия сайта уже крутилась на локальном компьютере и до 1 сентября я наметил переезд на VDS.
И я не успел. Пока разбирался с тонкостями настройки VDS, пока разбирался как запустить свое творение, пока правил косяки сайта, пока решал проблемы в реале, пока отвлекался на соц.сети, пока решал проблемы со здоровьем — сайт удалось запустить с опозданием в 4 дня. По какой-то причине это чертовски сказалось на мне — был запас почти в месяц, нужно было сделать совсем ничего, но я опоздал и не все еще было сделано. Я и ранее нарушал свой же график, но практически не замечал этого, а эти 4 дня опоздания меня задели. Погрустив и подумав вечер я принялся дальше за работу. И я начал я с того, что отправил 3-м знакомым адрес сайта. Дождавшись реакции я воспрянул духом — средняя оценка была «норм тема, допили вот это и круто будет».
Теперь к моему плану подключились пожелания пользователей — большинство пожеланий были в моем плане (и до сих пор есть). Значит мне не одному это нужно.
И вот на этом моменте я остановился.
Сменилась работа (я все дальше и дальше от it и это меня печалит еще больше чем 4-х дневное опоздание запуска сайта), ежедневные дела, осенняя хандра и сотня других причин растаскивают время, которого все меньше и меньше. За последнюю неделю я лишь пару раз садился за проект. И меня пугает, что я не закончу его. И больше всего меня пугает как живут люди в похожих ситуациях, но с женами и детьми? Как вы все успеваете делать?
Еще раз напомнить читателям прописные истины:
За последние пол года я узнал массу новой и интересной информации, поменял часть привычек, от чего-то избавился, к чему-то привык.
Коротко из интересного:
Всем добра.
Just do it
p.s. Я реально комплексую и сейчас морально не готов к предоставлению ссылки на сайт для широкой публики. В данный момент есть 3 «красных» пункта, после которых откроется пункт «можно хвастаться своей поделкой».
p.s.s. чуток переделал свой поток мыслей, спасибо за критику и замечания
Меня зовут Дмитрий, мне через пару месяцев 30 лет из которых около 10 лет я «тыжпрограммист» и пол года назад я решил создать что-то свое (хромое, косое, вторичное, но мое).
Пару дней назад я общался со знакомым студентом и в нем я узнал себя образца 2009 года — те же проблемы, те же мысли. Данный текст является компиляцией нашего разговора и переписки ночью 24 сентября. Были упущены личные моменты и конкретные примеры, но текст стал более логичным и обобщенным.
Что помогло одному человеку, возможно поможет другому.
Вступление
Вступление можно не читать, но из него можно будет понять площадку первоначальных знаний.
В 11 классе у меня был выбор на кого пойти учиться — учитель истории или программист. Историю я любил и понимал, программирование мне казалось очень интересным и перспективным занятием. Выбрал второе, ведь историей можно и в свободное время позаниматься.
Выбирать учебное заведение мне не довелось — родители пощелкали калькулятором и отправили меня в местный техникум, который под 1 сентября стал колледжем. О проблемах нашего образования я не буду расписывать, но желание писать код у меня очень сильно убавилось. После получения средне-специального я наотрез отказался учиться дальше и решил работать. Знакомый зазвал поработать системным администратором в бюджетную организацию: «Скоро намечается информатизация здравоохранения, надо и компы собрать, и зажеванную бумагу из принтеров вытаскивать, и людям все доходчиво объяснять. Два-три годика поработаешь, а там видно будет что и как дальше». О проблемах реформ в России не буду писать, но взгляды на жизнь и людей я пересмотрел. Отработав почти 6 лет, я уволился, так как все стало совсем печально. Отдохнул, сменил работу и тут ожило желание программировать.
Март 2018 — сентябрь 2018
В начале была идея — «вот бы сайт на котором можно было посмотреть более развернутую статистику и историю изменения данных». Речь идет о рейтинге игроков по серверам одной онлайн игры (никнейм, уровень, клан и т.д.). Официальный ресурс выдает только текущие значения, которые обновляются раз в сутки. Никакой истории изменений, никакой наглядности, трудно что-либо выбрать и ограниченные возможности сортировки. Имеется неофициальная версия в которой уже больше функционала, но и она мне неудобна, да еще и с майнером. Посему за первой мыслью пришла вторая мысль: «Нужно сделать что-то свое! Удобное и без майнера». И желательно чтобы процесс создания занимал по 1-2 часа вечером, так как свободного времени мало, а урезать сон не хотелось. За вечер я расписал примерный план действия и начал его воплощать в реальность.
Но чтобы что-то сделать, надо научиться это делать. Несколько дней я изучал статьи и видео на тему «что нужно для создания сайта?», через пару дней переключился на «сравнение разных ЯП — их плюсы и минусы». Примерно за неделю, смотря видео и читая статьи каждые день по 2-3 часа, я пришел к примерному набору технологий:
- html5
- css3
- python 3
- django 2
- sql (postgresql 10)
- linux (debian9)
Некогда полученные знания были забыты и все нужно было начинать с нуля.
Самообучение — этот навык многим людям дается очень трудно. Постоянно кто-то или что-то отвлекает: котик решил помурчать на коленях, позвонил сосед, новая серия любимого сериала, новый мемчик в соц.сетях и сотни других примеров. Кроме силы воли, решительности и желания создавать у вас не будет союзников (есть еще голод, но он не всегда присутствует). Закрывайте социальные сети, закрывайте вкладку с сериалом, выключайте звук на телефоне, закрывайте дверь в спальню — временно убирайте все отвлекающие факторы. В информационном голоде мозг сам захочет получать информацию и тут перед ним основы SQL, которые будут неплохим кормом.
SQL и скрипт для записи данных в БД
SQL интересен тем, что мало it-вакансий где бы он стоял на первом месте, но есть масса вакансий где он идет на 2 или 3 месте. Если вы только начинаете вливаться в программирование, то основы SQL могут стать неплохим началом. В качестве СУБД выбрал postgresql так как часто пишут что это хороший выбор для python (насколько это правда я не могу судить). Спасибо Postgres Professional за перевод документации.
Если вы учитесь по материалам доступным в интернете, то возможно, что вам не всегда удается все понять — где-то неточно передали теорию, где-то пример не отражает суть темы, где-то вовсе не объяснили интересный для вас момент. После прочтения одной статьи закрепляйте изученное прочтением похожей статьи или просмотром видео на подобную тему.
И в завершении реализуйте пройденный материал на примере своей задумки, даже если это в дальнейшем будет переделано или вовсе выкинуто как ненужный элемент. Не бойтесь экспериментировать. Добавлять в закладки браузера интересный материал.
Вот мы ознакомились с SQL, выбрали СУБД, создали базу данных под нашу идею и решили перейти к следующему пункту — как-то записать информацию со страницы в интернете в свою базу данных. На помощь приходит python, который приносит с собой свои пакеты psycopg2, json, datetime, requests. Ох и весело было разбираться во всем этом. Примерно за неделю экспериментов получился работающий скрипт, который пишет в базу данных изменения о 20-25 тысячах персонажей.
HTML5 & CSS3
Теперь нужно все это выводить в табличном виде на сайте. Плавно перешел к основам html5 и css3 — скелет страницы и таблицы. В поисках хорошего материала я наткнулся на один портал который за небольшую денежку обещает сделать из меня фронтенд-разработчика. Первые пара уроков бесплатно, а дальше небольшая сумма, в этих уроках как раз дается минимальные базовые знания. Проходим бесплатные уроки, применяем полученные знания и получаем вот такие блоки:
<div id="header"> тут будет шапка сайта </div>
<div id="main"> основная часть страницы </div>
<div id="content"> основной контент </div>
Все понятно объясняется, можно у них будет при необходимости пройти курс. И через пару дней узнал, что это устаревшая форма записи и можно просто писать теги header, main и т.д. И на этом шаге понял, что на начальном этапе изучения покупать онлайн курсы не стоит. Я просто не смогу понять насколько они актуальны (а ведь часто авторы не указывают дату статей) и какой в них объем нужных мне знаний. Посему удалил закладку и чуть позже нашел то, что искал.
Стоит отметить, что покупая курс вы сами себя финансово обязываете на его прохождение — «ну не зря же денюжку отдал, а ведь мог за интернет заплатить». И начинается изучение информации которая вам не нужна для текущей цели, а если и понадобится, то не факт что вы ее вспомните. А если вы забросите курс, то будете себя упрекать — «и зачем брал курс? вот повис он мертвым грузом и вообще через 3 дня заканчивается, и сертификат этот никому не нужен… все боль».
Из интересного хотелось бы выделить следующие:
- htmlbook.ru и — большинство запросов html-тегов приводили меня на этот сайт
- webref.ru — наследник htmlbook.ru
- htmlacademy.ru — где-то увидел рекомендации этого ресурса и решил посмотреть их бесплатный набор уроков. Вооружившись знаниями из бесплатных уроков уже можно сверстать страницу: шапку, подвал, основной блок, меню, таблицу и прикрутить css ко всему этому
Django 2
Просто читаем официальный сайт и перевод для версии 1.9, который в большинстве случаев подходит для версии 2.0. Все. Непонятные ошибки копируем и вставляем в поисковик. С вероятностью 90% через 1-5 минут вы найдете похожую ситуацию с решением проблемы, иногда с разбором решения.
Основным нашим помощником будет stackoverflow — популярная система вопросов и ответов о программировании. Изначально был только английский, но в данный момент имеется еще 4 версии из которых нас интересует русская.
Вот тут хотелось бы обратить внимание на некоторые ресурсы, которые иногда появлялись у меня в поисковых результатах — вопросы/ответы со stackoverflow переведенные машинным переводом и с рекламой (например qaru.site). Иногда они стояли выше самого stackoverflow. Перевод местами был вполне неплох, а местами просто набор слов — скорее всего это связанно с правильностью построения предложения, так как на stackoverflow пишут люди с разным уровнем владением английского (и не только его).
Как бы не был качественно сделан этот машинный перевод — читайте оригинальный текст, а если ваши знания английского не позволяют полностью понимать текст, то пользуйтесь онлайн переводчиками — со временем вы начнете все больше и больше слов понимать и однажды просто посмотрите ответ и поймете что там написано.
Вторым по популярности ресурсом, куда меня приводили поиски ответа, является toster — спасибо всем кто оставляет ответы и объясняет эти ответы.
Океан информации и черновая версия сайта
С момента начала обучения прошло примерно чуть более 3-х месяцев — были и перерывы в 2 недели, и повторное чтение статей и мануалов, и проблемы на которых спотыкался по 2-3 вечера. Закладки браузера распухли, в телеграмме каждые 15 минут новая статья по интересующей меня технологии, ВКонтакте пестрит перепечатками этих статей. Информации море — захлебнуться легче легкого.
И в этот момент пришло осознание — а ведь начал захлебываться. И ночью я пересмотрел весь свой план — от внешнего вида сайта и его функционала до технологий, которые используются или планировались использоваться.
Сам план пополнился подпунктами и каждому подпункту была присвоена важность, очередность, обозначил критические точки без закрытия которых запретил сам себе двигаться дальше. Но больше всего было вопросов — сам себе задал вопрос, сам нашел ответ, сам себе его объяснил, сам внес изменения в план.
Следующий месяц был шоковой терапией — поставил Debian 9 (который изучал с нуля), на котором первый месяц не было никаких социальных сетей, форумов, сериалов, фильмов, скайпа, дискорда. Я просто пропал на месяц из обычного для меня (и для большинства пользователей) интернета.
Расписание моих вечеров стало таким:
— проблема или вопрос
— поиск решений и ответов
— реализация
— либо записываем в тетрадь решение, либо закладка в браузере
— если наше творение выходит из под контроля, то удаляем все и начинаем делать с чистого листа (в данный момент используется 4-я версия)
Где-то к августу я восстановил часть социальных контактов — вернулся в соц.сети, поставил Discord, каждые 2-3 дня захожу на windows и проверяю то, то еще не перевел на Debian. Темп исполнения плана снизился, но меня это не сильно испугало, ведь первая черновая версия сайта уже крутилась на локальном компьютере и до 1 сентября я наметил переезд на VDS.
И я не успел. Пока разбирался с тонкостями настройки VDS, пока разбирался как запустить свое творение, пока правил косяки сайта, пока решал проблемы в реале, пока отвлекался на соц.сети, пока решал проблемы со здоровьем — сайт удалось запустить с опозданием в 4 дня. По какой-то причине это чертовски сказалось на мне — был запас почти в месяц, нужно было сделать совсем ничего, но я опоздал и не все еще было сделано. Я и ранее нарушал свой же график, но практически не замечал этого, а эти 4 дня опоздания меня задели. Погрустив и подумав вечер я принялся дальше за работу. И я начал я с того, что отправил 3-м знакомым адрес сайта. Дождавшись реакции я воспрянул духом — средняя оценка была «норм тема, допили вот это и круто будет».
Теперь к моему плану подключились пожелания пользователей — большинство пожеланий были в моем плане (и до сих пор есть). Значит мне не одному это нужно.
И вот на этом моменте я остановился.
Сменилась работа (я все дальше и дальше от it и это меня печалит еще больше чем 4-х дневное опоздание запуска сайта), ежедневные дела, осенняя хандра и сотня других причин растаскивают время, которого все меньше и меньше. За последнюю неделю я лишь пару раз садился за проект. И меня пугает, что я не закончу его. И больше всего меня пугает как живут люди в похожих ситуациях, но с женами и детьми? Как вы все успеваете делать?
Для чего я написал весь этот текст?
Еще раз напомнить читателям прописные истины:
- хочешь что-то сделать — бери и делай
- экспериментируй, не бойся ошибаться — компьютер все стерпит, главное чтобы в итоге получился качественный продукт
- если ты студент, который потерял интерес к учебе, или просто изучаешь что-то новое, то попробуй изучить материал по альтернативным источникам, если и это тебе не помогло, то меняй профессию — работа на нелюбимой и непонятной работе вымотает тебя и будет раздражать твоих коллег
- учиться никогда не поздно, но лучше начать как можно раньше
Эпилог
За последние пол года я узнал массу новой и интересной информации, поменял часть привычек, от чего-то избавился, к чему-то привык.
Коротко из интересного:
- сменил google.com на duckduckgo.com, так как duckduckgo интегрирован со stackoverflow и ответ на ваш вопрос уже может быть выведен сразу на странице поиска
- отказался от windows, skype, удалил последний аккаунт в социальных сетях
- уже не пугаюсь nano и даже знаю как выходить из vim
- задумался о приватности в сети, после того как увидел какую информацию может оставлять пользователь просто зайдя на сайт
- подтянул чтение английского
- влюбился в консоль и анализирование вывода информации о запросах к сайту (как же я радовался когда из 100 запросов к бд сделал 1 запрос, а потом еще и снизил время его выполнения ограничив выборку только нужными столбцами и строками)
- осознал насколько я не знаю технологии которые использую
- и сожалею о том, что лет 5-7 назад мне никто не показал python и не смог доходчиво объяснить SQL (кстати, тот преподаватель до сих пор преподает, студенты все так же его объяснений не понимают и учат SQL самостоятельно)
- я смог создать что-то свое, и однажды оно перестанет быть хромым и косым.
Всем добра.
Just do it
p.s. Я реально комплексую и сейчас морально не готов к предоставлению ссылки на сайт для широкой публики. В данный момент есть 3 «красных» пункта, после которых откроется пункт «можно хвастаться своей поделкой».
p.s.s. чуток переделал свой поток мыслей, спасибо за критику и замечания