11

Программист-любитель: крокодил не ловится, не растёт кокос

Программист-любитель: крокодил не ловится, не растёт кокос

Читаю давно, написать решил только сегодня. Может, у кого-то этот пост будет резонировать с собственными наблюдениями. Еще лучше, если кто-то знает, что с этим делать.


Есть у меня давнишнее увлечение: программирование. Последние лет пять мой язык - JavaScript. Начинал с других, но уже относительно давно переключился на него. Основная деятельность не связана напрямую с IT, так что применение скиллу - это автоматизировать что-нибудь для знакомых или для себя: тут проверка текста на повторы, там веб-скрейпинг (без жести, все прилично), здесь сбор адресов и рассылки (виноват, здесь PHP был), там допилить страницу на WP. Сайт знакомых поддерживаю, но не потому, что я такой крутой спец, а потому, что они не очень умеют пользоваться даже готовыми решениями (совсем не спецы, то есть).


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


А нет ни одного серьезного проекта или участия в нем. Вообще. Покупал домены, что-то пытался придумать - фантазии не хватило. Сделал сайт, который по идее должен был помогать в изучении иностранного языка - десять пользователей, каждого из которых лично попросил зайти и зарегистрироваться. Через год закрыл.


Недавно решил подкачать межушный нервный узел при помощи Codewars. Есть такой сайт с задачками по программированию, которые проверяются уже готовыми тестами (но вы их при этом не видите). Можно сказать, что эта система учит test-driven development. Дошел до определенного уровня, получил ачивки, был очень этим доволен.


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


Вот я и решил перейти к фреймворкам. Когда я попробовал React, у меня сразу возник ряд вопросов. Правильно ли, что у меня при создании нового пустого проекта в его папку каждый раз копируется несколько десятков тысяч файлов? А зачем так делать? А как мне вот это все, работающее на localhost-е, выложить в интернет? Там же какой-нибудь сборщик нужен, да?.. А с чего это мой компьютер ото всей этой каши подвисает? Неужели я не так что-то настроил? И так далее.


Уроки по Django вызвали примерно такие же ощущения. Прежде чем несчастный Hello World написать, нужно установить Virtual Environment, ибо версии Python разные. И для этого нужно выполнить несколько команд в терминале, которые вообще не имеют отношения к фреймворку, но неплохо бы их понимать, ибо все, что под sudo делается, рекомендуется через мозг пропустить. Теперь у меня несколько тысяч файлов в пустом проекте, и что-то я не пойму, куда код писать. Нет, не сюда, эта куча текста - это конфиги...


Разработка под Android поставила меня в тупик с самого начала. Тяжелая Android Studio, эмулятор Android-устройств, которому не понравился мой процессор, а когда что-то где-то наконец щелкнуло и заработало, я осознал, что не умею даже прикручивать код к нажатию кнопки, и знание Java (ее я до этого учил по книгам) мне вообще никак не помогло.


Возникает четкое ощущение, что я папуас, который не знает, что такое буквы, и ему не поможет ни ручка, ни тетрадь, ни книга. Хотя алгоритмы и структуры данных я в каком-то объеме знаю, равно как и (если говорить о JS) всякие XMLHttpRequest, Callback, events, exceptions, call stack, стрелочные функции и тому подобное. Историю вычислительных машин и языков программирования тоже примерно себе представляю, ибо нравится, а заодно и с парочкой старых языков знаком (BASIC, C).


Но чтобы превратиться из любителя в спеца, не поможет, если вы загуглите все подряд. Если не знаешь, чем ограничен тот материал, что тебе нужно выучить, тогда можно скачать 10 Гбайт мануалов в формате plain text и умереть от старости, прочитав 1%, и то без толку. Кроме того, пассивные знания прекрасно выветриваются.


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


Интересно, есть ли здесь люди, которые успешно вышли из такого кризиса программиста-любителя?

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

2.1K постов11.9K подписчиков

Правила сообщества

- Будьте взаимовежливы, аргументируйте критику

- Приветствуются любые посты по тематике программирования

- Если ваш пост содержит ссылки на внешние ресурсы - он должен быть самодостаточным. Вариации на тему "далее читайте в моей телеге" будут удаляться из сообщества

Вы смотрите срез комментариев. Показать все
1
Автор поста оценил этот комментарий

"Вижу, что чего-то для превращения в профессионала не хватает, но не пойму, с какого конца к этой проблеме подступиться." (c)


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

Во-первых, Если говоришь, что знаешь, как создавать проекты на реакт через CRA, то тащить за собой тонны node_modules действительно такая себе идея. Попробуй создать сайт на реакте без кра. Всё то же самое - разбивка каркаса на компоненты, импорт реакта, импорт твоего выбранного стейт-менеджера, упаковка css'a, импорт бабеля, импорт остальных либ. Настрой parcel или webpack, чтобы они тебе правильно всё собирали. Если есть бэк - добавляешь бэк. Можно накрутить типизацию, можно добавить тесты (всех видов). Можешь не сильно упарываться по архитектуре в плане - разбивка проекта по фичам или по файлам. Просто, как можешь, так и пиши. Архитектуру тебе потом на рабочем месте подскажут, какая будет принята. Хочешь - сам покопай в эту сторону.

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

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

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

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Спасибо большое. Вы прямо целый пост написали, и здесь есть что загуглить, отталкиваясь от ваших рекомендаций!


Многое непонятно по причине, условно говоря, моей тупости, начиная с таких вещей как "импортировать babel"  - уже здесь я не понимаю, какому софту дается команда на импорт. Интерпретатору javascript, т.е., Node? Или npm?


Или: настроить parcel/webpack. Настроить его конфиг-файлом? Прочитать, что ли, азбуку какую для фронтендера. А то вопрос на вопросе выходит :)


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


Вот пример. Как мне, нубу, написать консольное приложение на С? А вот как.

0. Открыть окно терминала в любой GNU/Linux

1. nano sample.c

2. Написать шаблонный код в начало файла (можно скопипастить)

3. Указать хедеры (можно скопипастить)

4. Воткнуть свой нубовский код в int main и в другие функции

5. Объявить функций - написать прототипы в начале файла.

6. gcc -o executable-file sample.c

Когда перестали выползать ошибки:

7. ./executable-file

Все, можно радоваться.

Как передать код на другую машину?

0. Скопировать sample.c

Есть ли такой прямой путь, скажем, для React? Наверное, если есть, то он где-нибудь написан.

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества