Pull to refresh

Из госслужащего в разработчики, и советы по изучению программирования по принципу «малых и больших циклов»

Я вкратце расскажу о своем пути к разработке и поделюсь личными советами по изучению программирования.

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

И это при том, что основное направление — обработка информации и анализ данных. Не в объемах Data Science конечно, но все равно актуальная тема.

В плане профессионального развития стал ощущать какую-то безысходность.
Начал самостоятельно изучать различные аспекты IT (программирование, анализ данных, веб-разработку) на таких ресурсах как Codecademy, Udacity, Coursera, Udemy и конечно же YouTube и Google (благо английским владею неплохо).

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

Software Development — это, по моему мнению, именно та сфера, где бюрократия сведена к возможному минимуму как в процессе работы, так и в процессе обучения. Кстати, об обучении. Вот мои личные советы для начинающих разработчиков:

1. Время. Оно есть всегда для обучения, если Вы реально задались целью. Если у Вас его нет для обучения, Вы просто не хотите этим заниматься и Вам это не интересно.

2. Теория и практика. Здесь я для себя открыл принцип «цикличности», точнее «малых и больших циклов». Если вы возьметесь сразу читать толстую книгу по алгоритмам, то на 15 странице мозг просто перестанет воспринимать информацию. И наоборот, если вы задумаете сразу написать крутую онлайн-игру, вы не сможете к ней подступиться, потому что не знаете — с какого конца. Начните с «малых циклов», где за небольшим куском теории следует небольшая практика. Желательно найти видеоурок, где простым языком рассказывается, как создать примитивный (но прикольный) проект. Тупо повторяйте за лектором — делайте то, что делает он. Еще более эффективный старт — начните автоматизировать мелкие задачи на работе, «гугля» возможные решения. Пишите те же макросы. Придет понимание базовых понятий программирования и в достаточной мере раскроется его мощь. После этого можно приступать к «большим циклам» (не прекращая «малые»). То есть вы уже можете взять полноценную книгу по языку программирования и прочитать ее от корки до корки. Даже если какие-то моменты не понятны, мозг все равно уже пытается выстраивать до конца не понятные связи и ассоциации, потому что на данный момент уже есть между чем их выстраивать (вы прикасались к практике). Далее можно замахнуться на построение собственного проекта и использованием имеющихся знаний.

3. Технологии. Здесь действует тот же принцип «малых и больших циклов», но уже в другой плоскости. К примеру, для построения вебсайта с нуля требуется знание ряда технологий (областей знаний), изучение каждой из которых может занять месяцы и годы. Но построить свой первый сайт можно (и нужно) просто пройдя по «малому циклу» конкретных технологий (например, html, css, js, python, nginx, postgresql, deployment). После того, как сайт заработал, Вы им похвастались, получили порцию глубокого удовлетворения. Можно приступать к более тщательному изучению отдельных направлений, фреймворков или даже выбора специализации (backend, frontend).

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

5. Что запоминать? Если вы знакомитесь с материалом в первый раз, не нужно досконально запоминать код. Просто запомните какой функционал решает этот код и куда Вы положите этот материал после прочтения (то есть сохраните ссылку на него у себя в голове). Вы будете возвращаться к некоторым из них раз 30.

6. Используйте IDE, изучайте IDE. К примеру, PyCharm (не реклама). Это сильно ускорит и упростит как разработку, так и обучение, и не отобьет желание учиться. Вы еще успеете стать True-Hardcore-программистами, которые используют только Vim или Emacs.

7. Проекты. Придумывайте и запускайте свои проекты, но только если они реально полезны хотя бы 1-2 людям. Это дает мотивацию.

8. Английский. Учите англ. язык в процессе разработки и по жизни, но не выносите им себе мозг на начальном этапе. Берегите силы на программирование. Смотрите популярные сериалы на английском с субтитрами. Но английский очень нужен разработчику для развития, не забывайте.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.