Сообщество - Лига программистов
Добавить пост

Лига программистов

1 538 постов 11 434 подписчика

Популярные теги в сообществе:

ЗП в криптовалюте. Подводные камни

Всем привет!
Есть тут кто, кто имел опыт получения ЗП в криптовалюте? Какие могут быть сложности, подводные камни?
Просматриваю вакансии, на меня вышел американский криптовалютный стартап, одним из условий - зп в USDC криптовалюте, т.е. привязана к доллару и в принципе вопрос волатильности это снимает. Полагаю что способы снять крипту - найдутся, но наверняка есть тонкие моменты которые необходимо знать, чтобы не вляпаться.
Например, как можно платить НДФЛ, чтобы не докапывалась налоговая? Что еще нужно делать чтобы у государства не было ко мне вопросов?

Буду благодарен любой информации на эту тему.
Спасибо

Подробный план самообучения на бэкенд-разработчика (Python или Ruby) "c нуля до профи"

Предварительный замечания:

- план отражает мой личный опыт и не претендует на истину в последней инстанции

- целью плана является трудоустройство на позицию junior backend разработчика (Python или Ruby)

- план предполагает, что вы уже определились с выбором желаемого языка программирования и направлением, которым хотите заниматься. Здесь это именно веб-разработка в части бэкенда. Выбор направления выходит за рамки этого плана.

- что выбрать Python или Ruby? Если у вас нет никакого опыта программирования, то Python. Ruby выбираем только в том случае, если а) у вас есть хоть какой-то опыт программирования б) вы уже попробовали Ruby и вам понравилось.

- перед началом плана прочитайте все уровни и определитесь, на каком находитесь вы. С этого уровня и начинайте.

- нужно ли строго придерживаться того порядка изучения, который предложен в плане? Нет, это не обязательно. Очевидно, что нет смысла изучать фреймворки, если вы еще не выучили язык. Или изучать продвинутые понятия ООП, если нет понятия об основах. Но в то же время, например, базы данных я поместил в Уровень 2 совершенно произвольно. Можно их начать изучать хоть с самого начала.

- нужно ли все указанные книги прочитывать от корки до корки, а курсы проходить от начала до конца? Нет. Читайте то, что вам заходит сейчас. Бросайте книгу/курс, если вам стало скучно.

Уровень 0.

Отсутствует опыт программирования. Совсем.

На этом уровне главная задача - научиться азам программирования и основам выбранного языка. Освоить синтаксис и основные конструкции.

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

Книги и курсы для начинающих:

Бесплатные курсы на stepik:

https://stepik.org/course/58852/promo

https://stepik.org/course/67/promo

Книги:

Легкий способ выучить Python. Зед Шоу

Изучаем Python. Марк Лутц

Python на примерах. А. Васильев

Ruby:

https://stepik.org/course/87996/promo

https://rubyschool.us/

На всякий случай напомню, что просто читать книги без практики абсоютно бесполезно. Делайте примеры и упражнения из книг, придумывайте свои задачи. Чем больше практики, тем лучше.

Внимание! Начинаем учить английский и не заканчиваем на всех уровнях. Первоначальная цель: научиться читать технические тексты и документацию. Следующая цель: разговорный язык уровня B1 (лучше B2).

Уровень 1.

Уже разобрались с основами, теперь учимся писать хороший код.

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

Главная задача - изучить принципы ООП, научиться писать чистый код.

Побочная задача - освоить профессиональные инструменты разработчика: IDE/редактор (в том числе дебаггинг), Линукс, Git. Помимо самого языка изучаем его инфраструктуру: пакетные менеджеры, виртуальные окружения. Стандарты оформления кода, линтеры, статические анализаторы.

Что делаем:

- устанавливаем линукс в качестве второй ОС (ну или единственной, если прям в омут с головой). Если вы богатенький буратино, то просто купите себе Мак. Профессиональная разработка бэкенда на Питон/Руби не ведётся на Windows. Просто смиритесь с этим. Я рекомендую не заморачиваться с выбором дистрибутива, а просто установить Ubuntu.

- начинаем изучать Git: https://git-scm.com/book/ru/v2 и заводим аккаунт на Github

- КЛЮЧЕВОЙ ПУНКТ. Мы учимся применять на практике теорию, о которой пойдет речь дальше. Делаем маленькие (МАЛЕНЬКИЕ!) проектики. Это должны быть библиотеки и/или консольные программы, чтобы не заморачиваться с GUI или вебом (он нас ждёт на следующем уровне). Придумывайте себе задачи сами, можно погуглить идеи. Это может быть текстовая игра/квест, хранилище паролей, список дел, и т.п. Проекты обязательно ведём в Git и выкладываем на Github.

- разбираемся, что такое виртуальное окружение и используем его

python:

* venv https://docs.python.org/3/library/venv.html

* virtulenv https://virtualenv.pypa.io/en/latest/

* pyenv https://realpython.com/intro-to-pyenv/

ruby:

* rvm https://rvm.io/

* rbenv https://github.com/rbenv/rbenv

- используем пакетные менеджеры

python:

* pip

* poetry

ruby:

* gem

* bundler

- используем линтеры и учимся оформлять код в соотсветствии со стандартами

python:

* flake8

ruby:

* rubocop

- в python привыкаем ставить type hints и использовать mypy

Теория на этом уровне

Теории будет много. Прежде всего, это углубление в язык.

Для Python читаем книгу "Python. К вершинам мастерства" Лучано Рамальо.

Для Ruby читаем "Metaprogramming Ruby" Paolo Perrotto и "Ruby. Объектно-ориентированное проектирование" С. Метц

Далее теория по ООП. Читаем книги:

- "Чистый код" Роберт Мартин

- книги по паттернам проектирования

* Паттерны объектно-ориентированного проектирования. Э. Гамма, Р. Хельм, Р. Джонсон, Дж. Влиссидес. Это легендарная книга, в которой появилось само понятие паттернов проектирования. Авторов еще называют "бандой четырех" (Gang of Fourth, сокращенно GoF). Это первоисточник по данной теме, все остальные книги вторичны. Недостаток: академический стиль изложения.

* Шаблоны корпоративных приложений. Мартин Фаулер. Еще одно академическое издание. Сложно читается, читать всё не нужно, но можно брать что-то для себя.

* Любый другие книги по паттернам, в т.ч. применительно к вашему языку.

* начать можно с сайта https://refactoring.guru/ru/design-patterns/

- погуглить как можно больше материалов про SOLID. Начать можно с https://habr.com/ru/post/348286/

В целом, все материалы по паттернам надо воспринимать как сборник рецептов. Главное в них - это научится использовать на практике.

Уровень 2.

Изучаем разработку веб-приложений: базы данных, фреймворки. Делаем проекты. Начинаем рассылать резюме

Главная задача на этом уровне - научиться делать веб-приложения и сколотить из них портфолио.

Итак, для начала сосредоточимся на базах данных. Учить всё на Postgresql, это самая популярная СУБД.

Что надо знать:

- азы реляционной теории. Не нужно слишком глубоко здесь закапываться. Надо понять основные идеи. На уровне того, что есть "отношения" (это типа "таблицы"), которые состоят из "кортежей" (это типа строки таблиц), и есть еще "атрибуты" (это как бы заголовки столбцов). А между таблицами есть связи.

- язык SQL вплоть до извлечения данных из нескольких таблиц (join) включительно

По Postgresql есть документация на русском: https://postgrespro.ru/docs/postgresql/14/

Есть и бесплатный курсы: https://postgrespro.ru/education/

Ключевой пункт: изучаем фреймворки. Для python это Django, для ruby это Ruby on Rails.

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

Пара книжек по Django, которые лично мне помогли больше всего:

- Django 3.0. Практика создания веб-сайтов на Python. Владимир Дронов

- Two Scoops of Django. D.R. Greenfiled, A.R. Greenfiled

Список книг по Ruby on Rails:

https://blog.railwaymen.org/8-ruby-on-rails-books-you-should...

https://programmingzen.com/rails-books/

Примеры книг на русском: https://progerlib.ru/ruby-books

Самое главное: изучать нужно на практике, только так. Ваши источнки, будь то официальная документация или ютуб-канал, нужно читать/смотреть только до тех пор, пока вы не ухватили идею, как всё это работает. Должно быть ощущение "Ага, я понял!"

После этого придумываем маленькие (МАЛЕНЬКИЕ!) веб-проекты и начинаем делать. Книги, документацию и ютуб используем как справочные материалы. Всё выкладываем на Гитхаб.

Составляем резюме, в котором в качестве "опыта работы" у нас будут наши "пет-проекты". (как правильно составить резюме погуглите, это выходит за рамки данного плана). Веерно рассылаем куда только можно.

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

Вероятно, на этом этапе вы еще не сможете трудоустроится. Но может быть и так, что сможете :)

Полезные общеразвивающие книги:

- "Совершенный код". С. Макконелл

- "Программист-прагматик". Э. Хант, Д. Томас

- "Программист-фанатик". Чед Фаулер

- "Человек эпохи IT". Сомнез

Уровень 3.

Осваиваем деплой на реальные сервера

Главная задача - задеплоить наши проекты, которые мы делали на предыдущем уровне.

Для этого надо освоить:

- docker, docker-compose. Пожалуй самая сложна тема на данном уровне, но её освоение даёт огромное преимущество соискателю, плюс сильно облегчает жизнь разработчику. Вот несколько вводных статей с Хабра для начала:

* https://habr.com/ru/post/272145/

* https://habr.com/ru/company/ruvds/blog/438796/

* https://habr.com/ru/post/310460/

* https://habr.com/ru/company/ruvds/blog/450312/

- понятие о CI/CD на примере Github Actions

- думаю, понадобится научиться на элементарном уровне настравивать nginx

Как здесь действовать? Есть разные облачне сервисы типа heroku и pythonanywhere, куда можно деплоить. Но мне всегда нравилось купить самый дешевый VPS и деплоить туда. В любом случае, ваша задача в том, чтобы ваш веб-сервис был доступен в интернете по ссылке (думаю, домен второго уровня покупать смысла нет, достаточно что-то типа blalbal.herokuapp.com).

Заворачивайте ваши проекты в docker-compose.

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

Настройте CI/CD-пайплайн с помощью Github Actions. После этого ваш проект будет и с точки зрения разработки выглядеть почти профессионально. Еще плюсцы к вашему резюме.

По идее, если у вас будет 1-3 таких проекта, вас уже должны взять джуном без проблем. Если пока не берут, продожаем усиленно рассылать резюме и терпеливо ждём своего часа )

Уровень 4. Устроились на работу, что дальше?

Главное на этом уровне - найти хорошую команду с высокой инженерной культурой, желательно с тимлидом-ментором. Если при трудоустройстве будет выбор, обязательно спросите на собесе о команде, о том как выстраивается трек развития сотрудника внутри компании, будет ли у вас наставник.

Довольно часто бывает, что первая работа не самая удачная. Это нормально, потому что стояла задача заскочить в это поезд. Но когда вы уже в нём, то можно оглядеться и оценить ситуацию. Подходите к работе прагматично. Тут действительно классные дружелюбные ребята, с которым приятно работать? Или сборище мрачных снобов-мудаков? Или (что довольно часто бывает) просто нет никакой команды, и ты один сидишь со своими задачами и только google да stackoverflow твои лучше друзья и наставники?

Не надо бояться искать и выбирать. Работа - это не семья, начальник - не папа с мамой, а коллеги - не братья. Если работа говно - меняем без лишних сентименов.

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

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

В любом случае, если ты прошёл (прошла) весь этот путь, ты уже просто огромный молодец и крутой/крутая чувак/чувиха! Проделать такую колоссальную работу дорогого стоит. Даже не думайте позволять кому-нибудь (чаще всего самому себе) обесценивать свои достижения.

Всем удачи!

Создал чат в телеграме: https://t.me/+k7E2Wp80WpBjNjky

Показать полностью

Школа программирования от Альфа Банка. Чему учат в Alfa Campus?

Бесплатные курсы по java продолжение набора

Неделю назад я объявил о начале месячного курса, для тех кто уже знает java core, но не знает что делать дальше (Бесплатные курсы по java). За это время пикабушники активно интересовались, и 6 человек записалось в группу. В эту субботу в 15:00 по мск мы стартуем, и если вдруг, вы хотите присоединиться, то пишите мне в телегу @ablazzing.
Update: Набор закрыт)

Настройка чат бота в Телеграм. (Нужна помощь)

Добрый день!

Веду канал в телеграм, создал бота для упрощения жизни (но усложнил ее).

Но как его настроить - не знаю, не программист.

Погуглил, почитал, но не нашел нужных мне функций.

Чужих ботов использовать не хочу, это риск.

Нужны всего 2 функции:

- авто удаление дублируемых из основного канала сообщений в чате;

- удаление в чате автоматических сообщений "пользователь покинул чат", "пользователь вошел в чат"


Хочется разобраться и сделать самому и бесплатно (это возможно).

Сервисы по настройке чат ботов - хорошо, но платно и я не нашел там нужной мне возможности.

Может кто сможет на пальцах объяснить в какую сторону копать и получится ли вообще самостоятельно это сделать.


Можно без рейтинга.

Счёт на 100 тысяч долларов

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


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


Я игрался с различными сервисами и ресурсами в своём персональном облачном аккаунте. Обычные месячные затраты у меня были в пределах 20-30 долларов. Решил я попробовать автоматические пайплайны для Java приложений. Открыл туториал, понаделал разных конфигураций - работает! Мне понравилось. Отвлёкся, забыл.


Вчера захожу в аккаунт и смотрю счета. За март: 99,5 тысяч долларов 😦

Да как так-то?


Оказалось, что я забыл в конфигурации сервиса поставить звёздочки в нужном порядке, так что вместо того, чтобы запускать одну копию процесса раз в месяц, сервис стал запускать 100 параллельных копий каждую секунду и крутил всё это дело 24/7 в течение трёх недель.


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


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


(Скриншот добавил по просьбам в комментах.)

Счёт на 100 тысяч долларов IT, Айтишники, Облачный сервис, DevOps, Факап, Счет, Деньги, Интернет, Расходы, Раздолбайство, Текст

К счастью, мне не нужно оплачивать этот счёт. Это мой персональный аккаунт на работе, а так как я сам работаю в этом облачном провайдере, то и у работодателя нет проблем - деньги перетекли из левого кармана в правый. В общем, моя история о том, что какая-то мелочь в конфигурации легко может обанкротить за три недели, - мне просто повезло!

Показать полностью 1

Какому языку программирования учиться?

Какому языку программирования учиться? Программирование, Программист, IT, IT юмор
Показать полностью 1

Готовы к Евро-2024? А ну-ка, проверим!

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

А если не любите полагаться на случай и сразу отправляетесь за техникой Hisense, не прячьте далеко чек. Загрузите на сайт и получите подписку на Wink на 3 месяца в подарок.

Готовы к Евро-2024? А ну-ка, проверим! Футбол, Тест, Евро 2024, Болельщики, ВКонтакте (ссылка)

Реклама ООО «Горенье БТ», ИНН: 7704722037

Ответ на пост «Пробуем поменять свою жизнь (добровзрыв)»

Ответ на пост «Пробуем поменять свою жизнь (добровзрыв)» IT, Программирование, Обучение, ДоброВспышка, Джуниор, Трудоустройство, Программист, Собеседование, Учеба, Ответ на пост

#comment_232543982

По-моему, Tony написал очень хорошую мысль. По моему опыту (да я туповатый и ленивый, но всё же) 2 года до уровня джуниор - это не предел.


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


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


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


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

Показать полностью
Отличная работа, все прочитано!