Удача новичков хороша для новичков. Новички не знают, чего они не могут, поэтому невозможное доступно. Это также характеристика мастерства: допущение невинности в поле опыта.

Некоторое время я летал вниз по склону горы Кодолимпус. Врываюсь в алгоритмы Free Code Camp и глажу свою бороду, как сморщенный гуру, на соревнованиях по зиплайну.

Разбираться в тонкостях и абстракциях Javascript было действительно довольно приятно. Хотя создание небольших интерфейсных приложений помогло применить эти принципы на практике. Или я так думал…

Я узнал о важности участия в сторонних проектах из постов на Medium или в подкастах Code Newbie. Но я всегда находил предлог, чтобы не начинать собственное дело. Так было до тех пор, пока кто-то не пришел ко мне с довольно простой просьбой на работе.

Коллега: «Хорошо, Хью, ты немного разбираешься в компьютерах, не так ли? У нас есть эта таблица CSV, загружаемая на FTP каждый день, мы просто немного автоматизируем ее, чтобы отфильтровать ее, а затем отправить в Google Sheet».

Мой внутренний диалог: «Слишком просто», «За день закончу», «Нет. Проблема"

Эти уверенные ответы петуха быстро пришли на ум. Уже имея опыт работы с Google Docs, я был уверен, что мне просто нужно немного поработать со скриптом, и мои зарождающиеся навыки Javascript помогут мне пройти через это. Как же я ошибался…

Эта простая задача привела меня в мир хостинга Node, Vim, Linux и VPS. Мои учебные заметки и знание циклов for — это лишь небольшая часть большой цели — заставить что-то чертовски хорошо работать.

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

Производительность важна даже для новичков

Моей первой мыслью было просто использовать скрипт для загрузки CSV каждый раз, когда кто-то открывает Лист. Что может быть проще? Просто погуглите в поисках нужного скрипта, измените несколько переменных, чтобы получить нужные мне столбцы, и понеслось. Там может быть даже приложение на рынке!

Я мало что учел, что сам размер и форматирование файла, о котором идет речь. С одной ячейкой, содержащей более 1000 слов описания, включая HTML. Любой автоматический перенос CSV на листы был грязным и настолько медленным, что исключал любые пробы и ошибки, чтобы все работало правильно.

Поэтому мне уже приходилось учитывать потенциальную производительность моего решения и запускать его на каком-то удаленном сервере. Конечно, после того, как я провел время с FCC, я понял, что ответ должен лежать в хорошем эффективном файле JSON, не так ли? В конце концов, бесчисленные потоки информации проносятся по Интернету каждую секунду через API.

Иногда самое сложное решение — самое простое

Теперь, когда я знал, что одношагового решения не избежать, я начал искать другие приложения более высокого уровня. В Google App Engine предусмотрен автоматический импорт данных, которые затем могут быть отфильтрованы и сохранены в Big Query. Через некоторое время я понял, что даже для этого потребуется код на стороне сервера для авторизации.

Менее высокий уровень, но все же удобный для начинающих. Я посмотрел на Heroku и выполнил шаги, чтобы создать свое первое базовое приложение там. Хотя было очень весело возиться в терминале в первый раз, я двигался в направлении, которое было довольно далеко от моей реальной цели. Кроме того, когда дело дошло до добавления дополнительных сервисов, я обнаружил, что природа управляемой среды абстрагирует вещи и часто больше сбивает с толку, чем помогает.

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

Командная строка

Я уже довольно претенциозно установил интерфейс командной строки Bash в Windows 10 и добавил его в свою панель «Пуск», а затем редко использовал его.

Теперь этого было не избежать. Мне нужно было настроить и запустить Node JS для этого преобразования CSV в JSON, плюс я знал, что задания cron — хороший способ автоматизации задач на серверах Linux.

Действительно, задания cron также являются отличным примером принципа «сложно — это просто». Поначалу непрозрачные, задания cron значительно проще и эффективнее, чем когда-либо было для меня планирование задач Windows.

Раньше я баловался Linux, запуская облегченный дистрибутив Ubuntu на своем устаревшем ноутбуке. Однако редакторы Excel и изображений всегда тянули меня обратно в Windows. Мой опыт работы с Javascript на самом деле дал мне некоторую уверенность в навигации по интерфейсу командной строки, и я купил простой настольный компьютер Dell, чтобы использовать его в качестве дополнительного компьютера с Ubuntu. Терминал WSL в Windows 10 великолепен, но имеет определенные недостатки, и использование Linux-машины для кодирования улучшит мое знакомство с серверными командами, демонами и, конечно же, такими приложениями, как…

Вим, Уродливое Красиво

Я читал о Vim, и он известен тем, что сбивает с толку начинающих пользователей. Отчасти из-за порочной склонности, а отчасти из-за того, что мне понравилось разбираться с командной строкой, я решил проигнорировать Nano и попробовать.

Это великолепно! Конечно, это не самая интуитивная часть программного обеспечения в мире, но навигация по редактору с точки зрения строк, слов и выражений в квадратных скобках имеет большой смысл. Изучая аудиотехнику в университете, я очень сильно напомнил о Pro Tools или Final Cut, наблюдая за людьми, которые могли перемещаться и нарезать звук с минимальным движением мыши.

Точно так же, когда я использовал Vim и командную строку, я вспомнил слова Роберта Фриппа из King Crimson.

У музыканта есть три дисциплины: рук, головы и сердца. В совокупности они составляют одну дисциплину.

По сути, находясь в зоне, но там, где интерфейсы с графическим интерфейсом поощряют творческие ответы, они не всегда помогают вам сосредоточиться и решать проблемы на нескольких уровнях одновременно. Конечно, в отличие от Windows, где я перепробовал несметное количество текстовых редакторов, Vim чувствует себя прекрасно.

Если переполнения стека недостаточно, делайте пошагово

Для моих интерфейсных проектов и задач такие ресурсы, как MDN, Stack Overflow и форум FCC, были всем, что мне действительно было нужно для устранения проблем. Теперь, когда я вошел в дикую местность Side Project Land, линейное решение моих проблем было довольно ошеломляющим. Кроме того, первые задачи FCC, похоже, были связаны с решением типичных головоломок программирования.

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

Однако, по сути, принцип всегда один и тот же: просто продолжайте идти, ломая вещи и продвигаясь вперед по одному маленькому шагу за раз.

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

Фото Натана Думлао