2 заметки с тегом

разработка

Придумал новый программистский термин: upgrage

Это когда ты решил использовать новую версию пэкеджа для NodeJS, а она требует обновления NodeJS, а чтобы её обновить, тебе нужно обновить chocolatey... ну и т. д. А там конфликты, проблемы с сетью, и ты проклинаешь тот день, когда сел за баранку этого пылесоса.

2017   разработка

28/30. 7 правил изучения нового

Я умею делать некоторые вещи. По-крайней мере, находятся люди, согласные мне за них платить. Значит, по их мнению я это умею.

Руковожу клиентской разработкой в фирме «Медлайнсофт», то есть выполняю роль главного дизайнера и главного разработчика браузерных приложений. Об этом мне не рассказывали родители, не учили в школе и не заставляли зубрить в институте. Всему этому я научился сам, с помощью хороших людей.

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

Поэтому специально для себя пишу этот жизненного опыта пост. Если вам он покажется полезным, напишите об этом камент. И поделитесь своим.

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

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

2. Помни, что ты — лох. И в этом нет ничего необычного. Все начинают с этого. Быть нубом, зелёным юнцом, дилетантом в каком-то деле — не стыдно. Эйнштейн был полный лох в рукоделии. Стив Джобс — прикинь! — в восемь месяцев не умел ходить. А Демосфен, прежде чем стать величайшим оратором античности, и вовсе заикался.

Все начинают с нуля. Это не повод переживать о своей некомпетентности и париться, что же подумают другие. Есть отличный способ не волноваться о чужом мнении. Ты просто говоришь начальнику, заказчику, клиенту... Или во, ты говоришь жене:
— Дорогая, я впервые в жизни выполняю аорто-коронарное шунтирование. Поэтому скорее всего Мурзик уже никогда не будет писать в твою герань. Смирись с этим или давай отправим его на лечение в Швейцарию, если тебе нужен гарантированный результат.

Тут всё дело в том, чтобы не обрекать себя на успех. Говоришь начальнику:
— Виктор Иванович, вы просите сделать эту хрень за два дня. А я этой технологией не владею абсолютно, и результат не могу гарантировать. Если вам очень важно, чтобы всё было качественно и красиво, лучше заплатите фрилансеру.
А начальник такой:
— Ничего, Агафон. Если сделаешь — хорошо, если не сделаешь — переживём. В следующий раз получится.

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

Разреши себе ошибаться. Такая ещё известная поговорка:

Семь раз упади, восемь раз поднимись!

3. Много практикуй. Ещё больше. Практика важнее всего в любом деле. Я потерял огромное количество времени, пытаясь научиться дизайну по учебникам. Ты читаешь, конспектируешь, смотришь картинки и тебе всё понятно! Потом берёшь заказ, начинаешь что-то пытаться нарисовать — и не идёт. Выходит такая порнография, что даже маме стыдно показывать.

Прежде чем выходить в свет со своим новообретённым знанием, сделай хотя бы десяток работ. Делай каждую на полную катушку, применяй всё что знаешь, не халявничай. Но помни второе правило: ты — лох!

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

Чтобы не убивать годы, которые когда-нибудь убьют тебя, ты должен превратить тренировку в игру. Чтоб стало интересно.

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

4. Найди себе критика. Допустим, решил я овладеть искусством электропроводки. Взял два провода, зачистил, скрутил. Замотал синей такой изолентой, всё как положено. И зову Валерку, знакомого электромонтёра, чтобы он поглядел. И Валерка такой:
— Это, ###, скрутка что ли? Ты где, на, такую скрутку видел? Такую скрутку можешь в #### себе засунуть!

Некоторые критики на этом заканчивают. Нам они неинтересны. Неинтересны и те, которые отбирают провода и делают скрутку сами. А хороший критик — это тот, который объяснит, где у тебя ошибка.

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

5. А как же теория? Если ты почувствовал материал, освоил инструмент и у тебя возникли вопросы наподобие:

  • Почему оно такое?
  • Как это так получается?
  • Откуда это всё вообще взялось?

Тогда можно почитать что-нибудь теоретическое. Сразу получишь левел-ап и плюс в карму. Но зерно знания должно падать на подготовленную почву. Политую потом и кровью, ага.

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

6. О пользе курсов. На курсы можно идти, когда ты уже чего-то умеешь и даже думаешь, что чего-то можешь. Бессмысленно идти на графический дизайн, если не владеешь фотошопом и не нарисовал в нём парочку плакатов для пижамной вечеринки своей сестры. Только когда есть реальный опыт мучений и граблей, курсы будут полезны. Для систематизации знаний.

Дополнительный бонус: можешь принести свои работы и показать преподавателю. Он выступит в роли критика (см. пункт 4).

7. Но ведь нельзя же практиковать наугад? Вообще-то можно. Если тебе дали топор и полено, можно попытаться сделать Буратину. В крайнем случае, получится хорошая растопка для печи. А если есть врождённый талант...

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

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

Реальная польза в том, что я:
а) знаю, какие вообще бывают домики;
б) когда вижу особенно крутой домик, внимательно его изучаю, чтобы понять: как это сделано?

Это всё куда-то на подкорочку записывается, и в нужный момент руки сами делают.

* * *

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

Напоследок недавний живой пример.

На работе начался новый проект. За основу взято чужое программное изделие. Оно написано на трижды незнакомой технологии. Дальше будут программистские заморочки, но сути это не меняет.
Изделие написано на языке Тайпскрипт, которого я не знаю. В его основе лежит система Ангуляр, которую я почти не знаю (изучал в теории). И там есть каркас системы и набор компонентов, которых я тоже не знаю.
Самой большой ошибкой было бы начать изучать все эти технологии теоретически. Читать учебники, решать задачи, смотреть видеоуроки. Я провозился бы месяц и ничего не умел. Вместо этого я просто стал фигачить. Мне приходили реальные задачи: сделай то, сделай сё. Надо чтобы работало, клиент ждёт, не волнует. Ну и я фигачил как мог. И не я один. И оно как-то работало.
Весь код в одном файле, глобальные переменные, сборка непонятно как происходит. Ну и ладно. Нам же не на выставку этот проект.
Постепенно я насмотрелся чужого кода в этом проекте. И в мозгу стало что-то вырисовываться. Накопился опыт и наблюдения, мозаика, что называется, сложилась. И я понял, как там оно устроено. Переделал, что было написано уродского. Новое пишу уже по-нормальному.

Так что, ребятушки, практика впереди всего. Успехов.