Это статья об основах программирования на Go. На канале я рассказываю об опыте перехода в IT с нуля, структурирую информацию и делюсь мнением.
Хой, джедаи и амазонки!
В предыдущих публикациях рассказывал, что стартанул изучать алгоритмы в связи с фиаско на Яндекс-контесте. Приостановил это дело в связи с объёмным тестовым заданием. А ещё у меня был тестовый технический собес, одним из пунктов обратной связи было отсутствие у меня coding-fluency, то есть беглого написания кода. В этом посте расскажу об этой проблеме и как её решаю.
1. Беглое написание кода
Интервьюер в конце техсобеса сказал примерно так:
Все базовые вещи о Golang должны храниться в подсознании и ты мог не задумываясь их применять.
Не, ну это, конечно, хорошо, думаю я. А как это реализовать? Совет интервьюера был поискать что-то вроде "100 рецептов Go". Поискал я, пока ничего интересного не нашёл. И решил написать такую штуку сам.
Идея такая: придумать код, состоящий из базовых вещей, который постепенно довести до часа непрерывного кодинга. И практиковать этот код каждый день.
За основу я взял задачу из техсобеса, с её условиями и решением можно ознакомиться на моём GitHub'е:
За сегодня я написал этот код в приличном виде (а не том, что получилось на собесе), переписывал его снова и снова в этом же виде, и постепенно довёл написание до 15 минут (UPD - на следующий день уже до 8 минут).
Код писал я фрагментами и повторял фрагменты снова и снова, и переходил к следующему фрагменту только тогда, когда более-менее усваивалось что и как, и почему происходит на текущем этапе.
- Первый фрагмент был - открыть все файлы и вывести их содержимое в терминал.
- Второй фрагмент - добавил срез, в который копировались все слова из файлов с разделителем по пробелу.
В ходе обратной связи интервьюер подсветил, что если я употребляю слово "карта", а не "мапа", то полезно употреблять слово "срез" а не "слайс" - либо все термины-англицизмы, либо все термины с переводом на русский язык.
- Третий фрагмент - добавил карту, в которую закидывал слова из среза, а значением элементов было количество вхождений слов в срез.
- Четвёртый фрагмент - нашёл топ самых часто употребляемых слов в карте (было два слова, которые встречались по три раза).
- Пятый фрагмент - переписал концовку кода так, чтобы программа находила топ 10 слов и выводила в форматированном виде.
Сделал я это за один день. Позже я буду добавлять сюда информацию, чтобы код разросся до часа. Что ещё буду добавлять? Интервьюер выделил несколько вещей в целом, которые нужно знать на зубок:
- Тестирование;
- Бенчмарки;
- Язык bash.
Ну с языком bash трудно что-то добавить в код, с тестированием я уже работал, а с бенчмарками ещё предстоит разобраться. Кроме того, точно добавлю в код создание сервера, работу со всеми структурами данных, многопоточность. Ещё работы с файлами добавлю и буфером обмена. Алгоритмы, конечно.
А ещё когда я услышал про 100 рецептов на Go, вспомнил об одной книге.
2. 100 ошибок на Go и как их избежать
Когда-то давно открывал эту книгу и сразу закрыл, потому что первый же пример был связан с http-пакетом, с которым ранее не работал.
Сейчас самое то, постепенно буду осваивать и её.
3. Выводы
Сам интервьюер сперва сказал о Codwars и LeetCode для coding-fluency, но потом подумал и сказал, что это хорошо, но нужно другое. Предложил пообщаться с нейросетью, чтобы она составила задач - не про алгоритмы, а про базовые вещи, которые нужны при программировании на Go. Поглядим, нейросетью тоже воспользуюсь.
А вообще у меня есть месяц-полтора, который могу активно посвятить программированию, а не как прежде - час в день в будни и часа по четыре в выходные. За это время планирую наработать навык codding-fluency, познакомиться с новыми пакетами и технологиями, и продолжать искать работу: откликаться, выполнять тестовые, проходить интервью. Поглядим, что из этого выйдет через пару месяцев.
Бро, спасибо, что дочитал эту публикацию до конца. У нас всё получится. Главное не только программировать, но и не забывать отдыхать, гулять, общаться.
И раз ты уже здесь, напиши что думаешь по этой теме и подпишись на канал 👉 «Войти в IT» в Telegram - будем изучать IT вместе 👨💻👩💻👨💻