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