Поуки от пътуването ми като самоук разработчик

Пътят на самоукия разработчик е труден и изпълнен с несигурност. Няма права линия от начинаещ до програмист в кариерата. Поради това вярвам, че всички самоуки разработчици имат уникална история, която да разкажат.

В тази статия ще споделя моето пътуване по кодиране през поредица от уроци, които научих по пътя. Надяваме се, че четейки за моя опит, когато се обучавам как да кодирам, ще ви помогне да размислите върху собственото си минало и ще ви мотивира да продължите напред.

Урок №1: Фокусирайте се върху процеса

Когато за първи път започнах да се уча да програмирам, никога не съм имал намерение да правя кариера. Просто исках да направя конкретно приложение.

Пътуването ми започна, когато бях старши в колежа. Току-що завърших биографията на Ричард Брансън и вероятно четох твърде много TechCrunch. Бях изпомпан с предприемаческа енергия.

Постоянно четях за това как децата от колежа получават огромни суми инвестиции за своите идеи за мобилни приложения. Мислех, че мога да бъда едно от тези деца в колежа.

Един ден, докато се разхождах между часовете, една идея за приложение ме удари. Бързо се убедих, че съм намерил следващото голямо нещо.

Бях погълнат от идеята и спрях да обръщам внимание на лекциите. Вълнението ми за идеята за приложението бързо нарасна до такава степен, че почувствах, че трябва да предприема действия.

Имаше един голям проблем. Идеята ми беше мобилно приложение и не познавах никой, който да може да създава мобилни приложения.

Затова си помислих, "какво, по дяволите, колко трудно може да бъде програмирането?" Губих интерес към специалността си и прекарвах много време в Xbox. Бих могъл да насоча част от свободното си време към изграждане на идеята за мобилно приложение.

Понякога това, че сте наивен, ви помага да предприемете действия, когато обикновено не бихте.

Бях студент в колеж, без опит в програмирането, бизнеса или дизайна, опитвайки се да науча Android, за да мога да създам сложно мобилно приложение. Предполагам, че това е, което получавате, когато смесвате голяма идея с хипер машината от Силициевата долина.

Иска ми се да можех да ви кажа, че нещата минаха добре оттук.

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

Времето продължаваше и приложението се превърна във Франкенщайн за копиране и поставяне на код. Приложението нямаше много функции и едва работеше, без да се срива.

Едва когато случайно попаднах в клас по компютърни науки, разбрах, че трябва да се съсредоточа повече върху това да се опитам да науча разработката на софтуер.

Неспособността ми да програмирам ме накара да изоставя първоначалната си идея за приложение. Щях да осъзная, че няма да направя следващото голямо нещо, поне още не.

С течение на времето коригирах поведението си и взех ученето по-сериозно. Започнах да се наслаждавам на програмирането и в крайна сметка започнах кариера като разработчик на софтуер.

Моята голяма идея за приложение ме погълна дълго време. Това фокусира вниманието ми върху крайния резултат, а не върху процеса на достигане там.

Когато се фокусирате прекалено много върху крайния резултат, започвате да използвате преки пътища. Преките пътища могат да доведат до краткосрочен напредък, но в дългосрочен план липсата на знания винаги ще ви настигне.

Важно е да запомните, че ученето на нещо голямо, като програмиране, изисква много малки стъпки. Всяка стъпка ще трябва да се третира внимателно.

Да научиш нови неща е като да построиш къща. Започвате с основата и изграждате. Ако основата е дефектна, всичко ще се разпадне рано или късно.

Понякога изграждането на здрава основа изисква да забавите темпото. Няма срам да вървиш бавно. Хората, които разбират основите за първи път, в крайна сметка ще изпреварят хората, които трябва да се върнат и да ги научат отново.

Има стара китайска поговорка, която гласи:

"По-добре е да направите много малки стъпки в правилната посока, отколкото да направите голям скок напред, само за да се препънете назад."

Не е колко бързо можете да направите нещо, а колко бавно можете да го направите правилно.

Бях идеален пример. Отвън може да изглеждаше така, сякаш бях дете от програмисти. В действителност не можах да създам приложение, което да спаси живота ми.

Фокусирайте се върху процеса и ще се изненадате с това колко голям напредък постигате всеки ден.

Урок №2: Преливането на стека е страхотно (но опасно)

Докато изграждах приложението си-убиец, Stack Overflow стана най-добрият ми приятел.

Всеки път, когато заседна, бих се опитал да създам заедно идеален въпрос, който да задам на общността на Stack Overflow. Направих средно по няколко въпроса на ден.

Не само бих публикувал въпроси, но и бих третирал отговорите в Stack Overflow като Евангелие. Бих прекарал лудо време в разглеждане на сайта, за да се опитам да намеря точно парче код, което би решило проблема ми.

Когато намерих подходящ отговор, бих го копирал и поставил направо в моята кодова база и се опитах да го накарам да работи със съществуващия ми код. Прекарах малко време в опити да разбера кода, който добавях.

Направих груба сила чрез проби и грешки нова форма на изкуство.

Този процес продължи известно време, докато в крайна сметка осъзнах и осъзнах недостатъците на моя подход.

Преливането на стека е благословия и проклятие. Страхотно е да ви помогне да решите проблеми - ако обаче не сте внимателни, можете бързо да станете зависими от уебсайта.

Понякога уебсайтът е твърде добър в решаването на проблеми. Създава фалшиво чувство на увереност, което може да доведе до повече главоболия по пътя.

Stack Overflow ви показва как да накарате нещо да работи, но обикновено не ви казва изрично защо работи.

Разбиране на това как е важно. Грешките трябва да бъдат отстранени и кодът трябва да се изпълни.

Разбирането защо нещо работи е това, което ще ви помогне да приложите знанията отново в бъдеще.

Това е като цитата ...

"Дайте на човек риба и вие го храните за един ден. Научете човек да лови и го храните за цял живот."

Копирането и поставянето на код от Stack Overflow е все едно да дадете на някой риба. Разбирането защо фрагмент от код работи е като да ги научите да ловят.

Няма нищо лошо в копирането и поставянето на код. Всички го правим. Проблем е само когато се превърне в патерица и забави растежа ни като разработчик.

Нещото, което трябваше да науча по трудния начин, беше, че е невъзможно да науча нищо, ако отговорите постоянно ви се дават. Няма преки пътища в учебния процес.

Когато сте заседнали, опитайте се да разрешите проблема си с кодирането поне няколко пъти, преди да отидете в Google.

Когато откриете, че копирате и поставяте код, прекарайте малко време, опитвайки се да разберете кодовия фрагмент, преди да продължите напред.

Урок №3: Научете как да намерите опитната помощ

Първото нещо, което направих, след като реших, че искам да се науча на програмиране, беше да купя две книги за разработка на Android.

В началото следях отблизо упражненията в книгите и работих по примерните проекти. Въпреки това бързо се разочаровах от напредъка, който постигнах след книгата, и реших да изляза и да разбера как да програмирам сам.

Както прочетохте по-горе, това бавно доведе до бедствие.

Прекарах безброй часове изолиран в стаята си, опитвайки се да разбера прости проблеми с програмирането. Забивах се на всеки нов ред код и не ми се струваше, че напредвам много.

Бях безпомощно заседнал и животът ми беше коктейл от съмнение, разочарование и непреодолимо усещане за загуба.

За да влоша нещата, имах добра идея да започна да използвам масивна C библиотека, наречена FFMPEG. Приложението ми трябваше да редактира видеоклипове, затова смятах, че е добра идея да се използва стабилната функционалност на библиотеката.

Това не беше най-умният ми ход, като се има предвид, че по това време едва успях да активирам приложението си за Android.

Загубих много време, опитвайки се да прочета кода C и да разбера как мога да го използвам в приложението си. Трудно се опитах дори да импортирам библиотеката в моя проект за Android. Кодът на Android и кодът C не искаха да играят добре.

След много часове, в които не стигнах до никъде, в крайна сметка се разочаровах и изоставих библиотеката.

Приблизително по същото време като провала на FFMPEG се записах в клас по обектно ориентирано програмиране. Честно казано не съм сигурен как влязох. По-късно разбрах, че бях единствената специалност, която не се занимава с компютърни науки в класа. Мисля, че имаше грешка в софтуера за записване.

Първата задача беше да се изгради програма за Блекджек. Бях преподавал себе си програмиране от 5-6 месеца на този етап и се чувствах донякъде уверен в своите умения.

Завърших заданието и се почувствах добре в работата си.

Не след дълго това усещане изчезна.

Цялата ми програма беше написана по един огромен метод. Почти всички останали в класа успяха да разберат факта, че програмата трябваше да бъде разделена на класове.

Не е добре.

За щастие класната работа и напътствията от учителя ми позволиха да направя крачка назад от приложението си за Android и да разгледам способностите си за програмиране. Започнах да ценя обучението и възвърнах желанията си да направя завършено приложение.

Сега осъзнах, че ако бях говорил само с един опитен разработчик в онези ранни дни, те щяха да видят какво правя. Можех да си определя приоритетите направо и да вкарам някакъв смисъл в себе си. Те щяха да ми помогнат да коригирам пътя си, когато слизах в безполезни задънени улици (като опит за работа с FFMPEG).

Вместо това се изолирах от света частично, защото чувствах, че няма никой, който може да ми помогне.

Изолацията е нож с две остриета. От една страна, това ви помага да се съсредоточите върху разглежданата задача. От друга страна, той ви премахва от света, гладувайки ви от решаваща обратна връзка.

Имаше много начини да намеря помощ. Можех да се опитам да намеря професор / студент в университета с опит с Android или да потърся помощ от местната общност. Също така можех да опитам да намеря онлайн общност за Android.

Опитните разработчици са като компас. Те няма да ви отведат до вашата дестинация, но ще се уверят, че сте насочени в правилната посока. Тяхната помощ често може да бъде разликата между успеха и неуспеха.

Уверете се, че търсите насоки навсякъде, където можете да ги намерите. Това ще ви спести време и разочарование по пътя.

Урок # 4: Изработете своята среда

Това може да е единственото нещо, което чувствах като правилно, когато се обучавах на програмиране.

През целия си живот бях наистина зле да уча за тестове или да си правя домашните вкъщи. Просто има твърде много разсейвания във всеки един момент. Често се опитвах да намеря убежище в библиотеки или кафенета.

За щастие приложих това правило, когато се обучавах на програмиране.

В крайна сметка станах редовен в няколко местни кафенета. Предпочитах кафенета пред други места за проучване, защото те предлагаха известно разнообразие и е лесно да се скрие (лесният достъп до кофеин също не вреди).

Ако учех у дома, се уверих, че вратата ми е затворена и съквартирантите ми знаят да не ме безпокоят за определен период от време.

Независимо къде се намирах, щях да се уверя, че музиката ми е достатъчно силна, за да не чуя какво става около мен.

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

Наличието на подходяща работна среда често е пренебрегвана част от обучението.

Фокусът е основен компонент на придобиването на памет и умения. Когато се опитвате да научите нещо ново, силата на обучението е пряко свързана с интензивността на вашия фокус. Когато фокусът ви е слаб, новата информация ще бъде по-малко лепкава, което ще доведе до по-бавно учене и повече време за учене.

Работната ви среда трябва да бъде без разсейване и да позволява дълги непрекъснати участъци от фокуса. Дори когато COVID-19 налага да се работи отдалечено, все още има действия, които можете да предприемете, за да проектирате вашата учебна среда.

Ето няколко неща, които можете да направите:

  • Намерете място, където хората няма да ви прекъсват
  • Поставете телефона си в самолетен режим
  • Използвайте някакъв вид блокиран уебсайт за социални медии и новинарски сайтове
  • Носете слушалки и слушайте неразсейваща музика (за предпочитане дълъг плейлист, за да не се налага непрекъснато да превключвате песни)
  • Избягвайте телевизия или друга силно стимулираща обстановка
  • Имайте наблизо тетрадка, за да запишете всякакви задачи или идеи, които се появяват в главата ви
  • Уведомете хората около вас, че не искате да ви безпокоят

Само вие можете да решите къде и как да създадете своята среда. Но не забравяйте да го направите, защото си струва.

Урок №5: Излезте в света и се запознайте с хора

Приземяването на първата ми работа по програмиране беше нещо случайно.

Току-що се преместих в Омаха, Небраска и имах около година самоук развитие под моя пояс.

Познавах много малко хора в Омаха, затова потърсих Meetup.com, за да се опитам да намеря други хора, заинтересовани от разработката на Android. Намерих Meetup, фокусиран върху мобилното развитие, който обхваща както iOS, така и Android, и реших да отида.

Отиването на тази първа среща беше нервно. Прекарах около 10 минути в колата си на мястото, за да реша дали да вляза или да потегля.

Бях сплашен. Не бях уверен в уменията си за програмиране и знаех, че всички в Meetup имат много повече опит от мен.

Накрая казах, завийте го и влязох вътре.

Радвам се, че го направих.

Започнах да присъствам редовно и по време на един Meetup, не след дълго след като се преместих в Омаха, срещнах рекрутер, който търсеше изпълнител на Android. Говорихме известно време и по-късно същата седмица получих интервю за работата.

Преди интервюто се чувствах уверен. По време на интервюто бях елен на фаровете.

Интервюиращият говореше за проекта, по който ще работя, и всичко ми мина над главата. Опитах се да остана сгоден, но те можеха да разберат, че това е извън обсега ми.

След интервюто ме помолиха да се навъртам за час, за да мога да говоря с някой друг. Знаейки, че съм го взривил, обиколих центъра на града, опитвайки се да си прочистя главата.

В крайна сметка интервюирах някой друг в компанията и малко след това ми предложиха стаж.

Бях толкова шокиран, че след като подписах всички документи и пуснах работния си лаптоп, отидох при изпълнителния директор и попитах дали това е платен стаж или не.

Стажът се превърна в работа на пълен работен ден и аз започнах кариерата си като разработчик на софтуер.

Когато сте самоук, хората няма да идват да ви търсят. Ще трябва да намерите възможности за себе си.

Завършилите четиригодишни университети и кодови училища имат предимството да използват мрежата на своите училища, когато си намерят работа. Самоуките разработчици нямат този лукс.

Самоуките разработчици ще трябва да излязат в света и сами да изградят своите мрежи.

Студеното обаждане на работодатели и изпращането на автобиографии може да работи. Открих обаче хора като наемането на хора, които са близки до тях, в тяхната социална мрежа.

Уеб сайтове като Meetup.com са чудесни за намиране на месечни групи, специфични за програмиране. Дори при пандемия все още има много виртуални срещи, които са много информативни и полезни.

Има и други Slack канали или Discord общности, които можете да използвате, за да създадете смислени взаимоотношения. Можете също така да опитате да се свържете с различни хора във вашия район и да поискате да изпиете бързо 15-минутно виртуално кафе с тях.

Направете каквото можете, за да изградите нервите, за да протегнете ръка и да говорите с хората. Бъдете приятелски настроени и говорете с тях за преживяванията си. Уверете се, че хората знаят за вашата дългосрочна цел да си намерите работа.

Поставете се в ситуации, в които може да се случи нещо положително. Не можете да спечелите томбола, ако никога не купите билет.

Помислете за всяка възможност, която ви попадне, защото дори да изглежда като задънена улица, тя има потенциал да доведе до нещо по-голямо.

Стажът ми беше огромно намаление на заплатите за другите оферти, които имах по това време. Знаех обаче, че ако работя усилено, ще имам възможност да пробия в технологичната индустрия.

Ключът е да мислите за възможностите за работа в дългосрочен план. Стажовете или работата на непълно работно време може да не ви дадат предварително желаната заплата, но може да отворят врати в бъдеще.

Надявам се да се поучите от грешките си и да направите свои вълнуващи нови грешки

Както можете да видите, направих много грешки в пътуването си като станах самоук разработчик.

Да се ​​научите да кодирате никога не е прав път. Всички наши истории са уникални.

Ключът е да продължите и да не се обезсърчавате, когато нещата не вървят по вашия начин.

Насърчавам други самоуки разработчици да споделят своите истории. Те не само ще предоставят ценни прозрения, но и ще помогнат за осветяване на уникалните пътеки, по които сме поели.

Надяваме се, че моята история и уроците, които научих, ще ви помогнат да продължите напред.

Благодаря за четенето. Ако искате да чуете за други прозрения, които съм научил по пътя, следвайте моя акаунт Zero to Programmer в Twitter. Целта ми е да ви помогна да научите програмирането по-ефективно.