
От началото на септември, публикации за успешния успех по темата «Детство на програмиста», «Как да станеш програмист след N години», «Как се преместих в IT от друга професия», «Пътят в програмирането» и така нататък, буквално заляха Хабр. Подобни статии се пишат постоянно, но в момента наистина идват в особено голямо количество. Всеки ден пишат или психолози, или студенти, или някой друг.
И във всяка статия звучи позната песен: основният съвет на авторите е «да се стараеш», «да не се отказваш», «да не се страхуваш» и «да следваш мечтите си»; а в коментарите много често можеш да срещнеш мнение, че ако от дете си обичал компютри, работата с тях не е изненадваща. Искам на примера на моята биография да накарам читателите да помислят, че началните условия могат да бъдат по-важни от положените усилия. спомага за психологическия комфорт, но не отразява точно реалността.
Не е позволено: начало

Енциклопедията на професор Фортран за старши гимназистиИсторията ми започва в ранното детство с компютъра «Корвет» от кабинета по информатика. Но това беше случайно проблясване на светлина в тъмното царство на постсъветското образование — в онези времена официалното изучаване на информатика трябваше да започне в 11 клас. Просто се записах на случайно стартиралия допълнителен курс по компютърно обучение за по-малки класове. Веднъж седмично за нас откриваха тежката желязна врата на тъмния кабинет с решетките на прозорците и ни показваха как да изведем на екрана «Hello» с помощта на корвет-бейзика. Това беше чудесно, но не трая дълго.
Явно това беше някакъв образователен експеримент, завършил буквално след половин година. Не успях да науча много, успях само да се заинтересувам. Но когато курсът приключи, ми обясниха популярно: компютрите всъщност не са за деца, преди единадесети клас хората не достигат до изучаване на информатика.
Тук е важно да се отбележи, че около царуваха бурните деветдесет години, когато различните технически кръжоци при дворците на пионерите вече бяха в масата си затворени, а домашните компютри все още не бяха обикновеност. Така че не можеше да получиш достъп до техниката — или до компютрите — просто защото искаш да ги изучаваш. В предимство са били децата или на тези, които се вписали в новата пазарна икономика, или на тези, които имали достъп до компютри в работен ред — инженери, преподаватели по информатика, „технически специалисти“ в различни ведомства.
Например, много години по-късно научих, че приблизително в същата година на моя (бъдещ) съученик родителите му подарили ZX Spectrum. Разбира се, за игри.
Скоро вероятно щях да остана извън новия цифров свят. Уча и израствам с пълната увереност, че сега ще стигна до компютър не по-рано от единадесети клас. Забавно е, че в крайна сметка така и стана. Но около две години преди това се случи истинско чудо — получих компютър в рамките на местна благотворителна акция.
На пръв поглед, тук щях да наваксам пропуснатото — но животът отново внесе своите корекции.
Съществува добре позната приказка, че ако на бедняк му дадат милион долара, той няма да знае какво да прави с тях. Разбира се, ако това е умен бедняк, той ще похарчи част от милиона за образование, включително ще научи как да се справя с парите. Но все пак това не може да се сравни с това, което може да направи човек, израснал сред пари. Такава беда настъпва всеки път, когато човек падне извън границите на своя социален слой.
Тъй като в обикновени обстоятелства никога не бих могъл да имам компютър, нямаше как да имам и пари за курсова работа и свързани стоки. По същата причина нямах контакти с хора, които биха могли да ми помогнат, просто не бях част от този кръг. Компютърът беше буквално парче от друг свят. Не обикновен уред, като сега, а нещо като елфийски артефакт. Затова не можех да експериментирам и да изучавам нещата на собствен опит — "ще счупиш скъпа вещ". Затова не можех да говоря на връстниците за това, че вкъщи имам компютър — лошите деветдесет години около мен, помните ли? Съответно, възможностите за обмен на информация бяха значително ограничени — не можех да попитам никого за съвет, не можех да задавам въпроси и да споделям опит. Интернет? Какво? Какъв интернет? Може би Фидо? Дори телефона нямаше.
Можеше да се отиде в библиотеката, да се търсят безплатно книги или справочници и тук изникваше вторият проблем. Това беше твърде напредничав компютър за онези условия. Имаше инсталиран Windows 95.
Взех основната (единствена) книга за компютри, която имаше в библиотеката — известният учебник на Гейн / Житомирски "Основи на информатиката и изчислителната техника" с червена корица. Можете сега да я намерите в интернет и да усетите контраста между нейното съдържание и съдържанието на един полноценен компютър с Windows 95 на борда. Ситуацията беше още по-лоша, тъй като беше трудно да се намери дори пиратски софтуер — до разцвета на магазините DVD с привлекателни имена "Целият офисен софтуер — 2000" оставаха още няколко години. А и когато се появиха, пак нямах пари за дискове.
Между другото, някъде тук дойде времето на "официална" информатика в 11-ти клас — получихме вече споменатия от мен учебник от 91 година, а реалните задачи бяха свързани с рисуването на несложни алгоритмични дървета (с молив на хартия) и използването на текстовия редактор "Лексикон".
Формошлепство

Истински програмисти и азВ резултат на моето компютърно развитие през последните две години, всичко изглеждаше мизерно. Четях ръководството на Windows, с всички средства стараех се да намеря различни програми за компютъра на дискетки и учех се да бъда "напреднал потребител", редактирайки файла autoexec.bat. "Лексиконът" го донесох от училище, разбира се. В общи линии, когато най-накрая успях да се върна в детството и да започна да програмирам в qBasic, вече царяха визуални интерфейси.
Този контраст пощипа значително моята мотивация за дълбочинно изучаване на обикновеното текстово програмиране. Причината беше подавящото несъответствие между графиката на Windows 95, с която започнах истинското си потапяне в компютърния свят, и мизерния текстов екран на известните ми тогава езици. Предишното поколение програмисти се радваше единствено на факта, че при написване на POINT(10,15) на екрана се появява точка. За тях програмирането беше "да нарисуваш на екрана нещо, което не съществуваше там". За мен екранът вече беше запълнен с форми и бутони. За мен програмирането беше "да накараш бутона да прави нещо след натискане" — а направата на същия този бутон беше просто скучна.
Като лирично отклонение, искам да отбележа, че сега развитието на програмните езици отново е достигнало до подобна ситуация. Сега всички "истински програмисти" отново изглежда, че проектират интерфейси в Notepad, а всеки програмист като че отново е задължен да бъде дизайнер. Отново е необходимо строго с помощта на код да разполага на екрана бутони, полета за въвеждане и други контролни елементи. В резултат на това класическото правило 80 / 20 изглежда по следния начин: "80% от времето прекарваме в създаване на интерфейса чрез ръчно въвеждане на код и 20% от времето задаваме поведението на елементите на интерфейса". Защо беше така по времето на DOS и Паскал — разбирам; нямаше алтернатива. Защо това съществува сега, когато всички вече са виждали и работили с VB, Delphi и C# — не знам; подозирам, че проблемът е в платността или безплатността на средата за разработка. Удобното винаги е скъпо, а безплатните версии на споменатите среди не се появиха преди много време.
Това беше една от причините, поради които интернет програмирането ми убягна. Въпреки че, както се оказа много по-късно, най-лесно можеше да се създаде портфолио и да стана програмист. Опитах се да се запозная с PHP и JS, но не исках да "пиша код в текстов редактор". А друга причина е, че интернет появи при мен или през 2005, или през 2006 година — преди това той беше някъде на периферията на световната картина. Заедно с мобилните телефони — "нещо, с което богатите хора се ползват".
Така че оставих всичкото това dos-програмиране и се потопих в учебната база данни „Борей“ от Access, която ми даде форми, бутони, макроси и върха на приложното програмиране — VBA. Вероятно точно тогава окончателно реших, че в бъдеще искам да работя като програмист. Намерих диск с Visual Studio, купих печатна книга (!) за VB и започнах да правя калкулатори и Х-О, радвайки се, че целият дизайн се създава на формата за няколко минути, а не се пише на ръка. Тъй като компютърът спираше да бъде рядкост, най-накрая можех да изляза сред хората и да обсъждам програмиране с моите съмишленици.
В тези обсъждания ми стана ясно, че VB е минал век, умиращ език, създаден за секретарки, а всички истински мъже пишат на C++ или Delphi. Тъй като все още помнех Паскал, избрах Delphi. Може би това беше моята поредна грешка в дългата поредица от препятствия на пътя, за да стана програмист. Но следвах пътя на най-малкото съпротивление, защото исках да видя резултатите от труда си по-бързо. И ги виждах! Купих книга и по Delphi, свързах го с Excel и Access, които вече знаех, и в крайна сметка направих в първоначален вариант това, което сега се нарича „BI-система“. Тъжно е, че вече съм забравил целия Паскал, защото не съм се докосвал до него поне десет години.
Да, разбира се, два пъти се опитвах да кандидатствам за институт по програмиране. В нашия малък град възможностите за това бяха ограничени. Първия път, по глупост, кандидатствах за специалността „Приложна математика“, откъдето издаваха именно с такава диплома — програмист, но изискваха строги познания по математика, далеч над нивото на училищната програма. Така че на изпита не получих необходимия бал. Припадна ми да изчакам в колежа и да получа средно образование. Втория път малко намалих изискванията си и се насочих към инженерна специалност — работата като инженер не ми беше особено привлекателна, но оттам беше по-близо до работа с компютри. Само че вече беше късно — хората бяха оценили предимствата на техническите специалности и се тълпяха там. На бюджетните места преминаха само медалистите.
Затова сега имам хуманитарна диплома. Тя е червена, но не е техническа. И именно тук тъжната история на израстването започва да се пресича с тъжната история на търсенето на работа.
Цигулар не ми трябва

...но не е сигурно, че ще оцелея...Съществува много широко разпространен мит, че „на програмиста не му питат дипломата“. Този мит има няколко причини, ще се опитам да изброя основните.
На първо място, в началото на деветдесетте — и малко в късните деветдесет — познанието на компютърни технологии по принцип беше рядкост. Ако човек знаеше къде се включва компютърът и можеше да стартира програма — той правеше това, което бизнесът изискваше. Общият хаос на пазара на труда караше работодателите бързо да намират всеки, който може да извърши необходимата работа — не беше важно какво е учил, важното е какво може да прави в момента. Затова значителен брой самоучители спокойно демонстрираха уменията си на интервюта и получаваха работа.
На второ място, в същите години бизнесът се развиваше бурно, но все още нямаше модерното разбиране за HR. Човешките ресурси бяха все още съветски, оформяйки трудови книжки и трудови договори, а интервютата провеждаха специалисти или ръководители лично. Понеже повечето от тях се интересуваха от резултата, формалните критерии като образование наистина се разглеждаха на последно място.
Това доведе до ужасен изкривяване в масовото съзнание. Хората, получили работа при тези условия, могат напълно искрено да разказват, че на програмиста диплома не му е нужна, и да дават за пример себе си. Вие разпознавате този типаж, разбира се. Ако човек ви каже „достатъчно е да покажеш, че умееш, и ще те вземат“ — това е точно такъв програмист, от онова време, така са го взели, а той е повярвал в непоклатимостта на света. По подобен начин съветските пенсионери казват нещо от сорта на „ти работиш на компютър и можеш да четеш на английски, с такива умения, ох!“. Те вече не разбират, че с такива умения „ох“ беше само в съветските времена, а сега такова нещо умее всеки втори.
После точно същото се случи в ранните нулеви, когато цената на нефта започна да расте, икономиката да се развива, и тълпи новопоявили се бизнесмени нахлуха на трудовия пазар в търсене на всеки, който умее поне да включва компютър.
Но едновременно с това потокът на нефтените пари роди непроизводителни кадри — HR отделите. Там попаднаха същите стари съветски кадри, но на тях изненадващо беше възложена задачата да определят качеството на всеки работник. Те, разбира се, не можеха да вземат решения от такъв род. Затова разработиха собствени критерии за оценка, доста далеч от реалността, основани на преведени книги от благословената запад и формални критерии като образование. Така се състоя великият обрат: от реални умения — към формални критерии.
Митът остана жив, само че малко се видоизмениха.
Икономиката все още растеше, хората се хващаха от всякъде, примамваха се от други компании, но кадровиците вече наложиха своите хлъзгави лапи върху процеса на подбор. И най-важното стана не „покажи, че умееш“ — все пак кадровикът няма да разбере какво му показват — а „опит“. Така хора, които някога бяха приети някъде без програмистки диплом за умението да натискат бутони — бяха примамвани в друга компания просто защото преди това са работили на позиция „инженер-програмист“. И отново никой не питаше за диплома, защото не беше време за това — имаш ли „опит“? Ами, по-скоро седни и работи!
Накрая, последната, трета причина — бурното развитие на интернет и частните проекти. Хората създаваха лични проекти, които можеше да покажеш на всеки и по този начин да докажеш своите умения. Изпращаш имейл, прикачваш линк към сайта си — и ето, вече си доказал своите способности.
Какво се случва сега?
Цените на нефта, както знаем, се сринаха, но митът все още живее. Защото на позициите "инженер-програмист" седят немалко хора, които на тези позиции действително попаднаха без профилно образование. Въпреки това, сега нито една от тези причини не работи напълно, и сега малко от тях биха могли да повторят този трик с наемането.
- Знанието за компютърни технологии стана всеобхватно. Работата с компютри вече не се посочва в резюмето, както не се посочва и умението да четеш и пишеш (всъщност, това не би навредило — започнах да срещам често граматически грешки дори в официалните медии, а в статиите на Хабър се появяват с завидна регулярност).
- Появиха се HR департаменти и HR специалисти, които не поемат никаква отговорност за решенията си и могат да използват всякакви критерии за избор. Естествено, предимство се отдава на формалните — гледат на възраст, образование, пол и времето на предишното работно място. Уменията и способностите идват по остатъчен принцип.
- Скоро няма недостиг на програмисти. Има недостиг на добри програмисти, но това е вярно изобщо за всяка специалност. По-простите програмисти работят по интернет, на фриланс сайтове хората буквално се борят за правото да направят нещо безплатно за портфолиото си.
- Личните проекти също станаха обичайни. Интернет е задръстен с лични сайтове и копия на Тетрис, а и този проект вече става почти задължителен, т.е. преминавайки през селекцията на кадри, попадаш в селекцията на специалисти, а те казват "покажете вашия GitHub".
Хората, които имат образование — или хората, които имат опит, който замества образованието в очите на HR департаментите — виждат само втората част. Те обикновено казват нещо такова: "за работа диплома на програмист не е необходима, но проекти в GitHub биха били полезни."
Но тъй като HR отделите не са изчезнали, правилно може да се формулира така: „за работа програмисту е необходима диплома (за да премине HR), но също така и проекти в GitHub (за да премине техническото интервю)“. И аз, с моето хуманитарно образование, го усещам напълно — защото за GitHub знам само от оплаквания на програмисти с техническо образование, моето строго кадрово сито ме отсява още на първия етап.
Хората не виждат въздуха, рибите не виждат водата, а хората с техническо образование или опит в „ООО КОДТЕХНОСОФТ“ не разбират, че от тях не искат диплома, защото той вече е подразбиращ се. Особено смешно звучат оправдания на хора от типа „работя от колко години и нито веднъж не съм показвал диплома“. Питаш — а ти я указа в резюмето? Да, разбира се, указах. Значи предлагаш да укажа в резюмето фалшиво образование, след като така или иначе няма да поискат потвърждение? Мълчат, нищо не отговарят.
Между другото, в специалността, където всички бюджетни места бяха заети от медалисти, бюджетна беше само половината от групата. А другата половина бяха студенти с платено обучение — знаете, покупка на диплома на изстрелки за пари от родителите. Моят приятел влезе там, получи диплома. В резултат стана пълноправен „инженер-програмист“ и оттогава изобщо не е имал проблеми с работата като програмист. Защото в дипломата не пише дали си учил платено или безплатно. А специалността, „техническата“ — пише.
Из зоната на комфорт

Уверено се изкачвам по кариерната стълбицаКогато пристигнах в Москва и започнах да търся работа, не знаех всичко това. Все още вярвах в мита, че на програмиста е достатъчно да покаже резултат от труда. Наистина носех със себе си на флашка примери от програмите си — да забегна напред, ще кажа, че никой нито веднъж не ги погледна. Впрочем, поканите бяха изключително малко.
Тогава все още помнех Delphi и се опитвах да вляза в някоя техническа компания поне на стажантска позиция. Изпращах по десетина имейла на ден, обяснявах, че от дете се интересувам от компютри и искам да уча по-нататък. Няколко пъти ми отговаряха честно, че трябва да имам техническа специалност — HR-мениджърите точно за това охраняват границите на големите компании, за да отсяват всякакви хуманитарни неудачници. Но основно получавах стандартни откази. В крайна сметка не можах да продължа с търсенето и преминах на обикновена офисна работа, където просто трябваше да използвам Excel.
След няколко години към Excel се добавиха Access и SQL, защото си припомних младостта и започнах активно да пиша VBA скриптове. Но това все пак не беше "истинско програмиране". Направих още един опит, изтегляйки съвременен Visual Studio и се потопих в изучаването на C#. Научих го в своето първо приближение, написах малка програмка и опитах отново да се кандидатирам някъде — не пренебрегвайки нито пълноценни обяви, нито предложения за стаж.
Този път на сто своите имейла не получих нито един отговор. Нито един. Защото, както сега разбирам, възрастта ми близеше към тридесет — и заедно с хуманитарната специалност в резюмето това се превръщаше в черна марка за всички HR отдели. Това силно подкопа както самочувствието ми, така и вярата ми в митове программисти за пазара на труда. Напълно забравих за "истинското програмиране" и се съсредоточих върху обикновена офисна работа. От време на време все пак отговарях на различни обяви, но в отговор по-нататък получавах мълчание.
Някъде на този етап започнах да разбирам колко ценно е за човек онова, което не забелязва, или онова, което счита за даденост. Хората, на които се обръщаш за съвет или просто оплакваш живота, не навлизат в подобни подробности. Те са чели популярни книги по психология и ти разказват, че трябва да излезеш от зоната си на комфорт. Въпреки че отдавна съществува известен виц, че първо трябва да влезеш в зоната на комфорт. С напредването на възрастта цената на това влизане или излизане расте — например сега просто не мога да си позволя да напусна работата и да започна стажантска позиция. Мога само внимателно да променям дейността си, оставайки паралелно на текущата работа, докато доходите не се изравнят.
Има разумни съветници, които дават препоръки, които бих дал и аз самият. Това е самообучение и дистанционна работа или създаване на собствен проект. Но тук има свои подводни камъни.
Фактът е, че дистанционната работа е привилегия, достъпна само за тези с "опит в работата". Новак, на когото му е нужна помощ и обучение, няма как да я получи. И без това никой не иска да се занимава с теб, а когато става въпрос за дистанционно, всичко става още по-сложно.
Самостоятелното обучение е ужасно неефективно. То, което би могъл да научиш за около половин година, самостоятелно ще разглеждаш две години. Соотношението е приблизително такова. Всички дребни детайли, типични трикове и известни подводни камъни ще трябва да откриваш сам, постоянно изобретявайки колелото. Разбира се, в известен смисъл това може да те направи по-знаещ, защото сам си го е намерил и преодолял. Но това ще ти отнеме четири пъти повече време, а реален опит с реални производствени проекти все още няма да имаш.
При това знам, че реалният, полезен опит възниква само при решаването на реални производствени задачи. В този смисъл действия като "да напишеш хрестчета-нула" ще ти помогнат на начален етап просто да се запознаеш с езика. Но дори и да напишеш хрестчета-нула, морски бой и змейка, пак няма да можеш да правиш това, което бизнесът изисква на практика.
Тук най-нетърпеливите отново ще искат да дадат съвет — вземи, моля, реално ТЗ от някакви фрийланс сайтове и пиши по него, така ще се научиш и самостоятелно, и дори портфолио ще имаш.
Е добре, нека накрая разгледаме метода „пет-проект“. Трябва да напишеш полезна програма за хората, а след това с тази програма да отидеш на работа някъде, където правят подобни програми. В теорията звучи прекрасно, но в действителност е капан. Вместо първоначално да работиш по реален проект — губиш време за явно безсмислени задачи, за да след това изпълняваш точно същите задачи, но вече смислени.
Спри! — ще ме извикат читателите. — Изчакай! Това е тренировка! Тя навсякъде и винаги изглежда така! И бих се съгласил, ако тази тренировка даваше шанс за резултат. Но не. Връщаме се към това, че вече имам опит с подобни опити, подобни тренировки.
Има ли в света поне една компания, която казва — ето, нашата компания прави месинджъри, хайде вие да ни напишете месинджър на такъв и такъв език, с такива и такива параметри и тогава ще ви вземем на работа? Не. Това винаги е вероятност, а за човек с неподходяща възраст и образование — вероятността е много ниска. Животът ми всичко това много добре обясни. Например, в различни периоди от живота си съм знаел и използвал VB и VBA, Pascal и Delphi, SQL, R, JS, C# и даже (сам се изненадвам!) Genesis32. Наистина — намирах и преминавах курсове, правех прочутите проекти, можех да покажа на интервю и да отговарям на въпроси по тях. И какво?
На първо място, никой просто не се интересуваше и не поиска да покаже нищо, просто не попаднах на тези интервюта. На второ място, от всичко това в момента помня само VBA+SQL, защото постоянно ги ползвам — останалото не ми е нужно и забравено. Ситуацията всъщност изглеждаше наистина жестока: не е така, че проектите ми са гледани и казват „слушай, тук всичко е зле, не умееш да пишеш код, тук и тук не работи“. Не, просто ме игнорираха. Хуманитарно образование, разбирате ли? „Това е, защото съм черен“.
Итог

Когато дори под натиска на обстоятелствата запазваш вътрешния си спокойствие.Въпреки песимистичния характер на текста, не спирам да опитвам. Просто сега пространството за възможности за мен рязко се е стеснило, виждам само един реалистичен път — споменатия по-горе "пет-проект", но насочен не толкова към "търсене на работа", колкото към "опит за създаване на бизнес". Трябва да намеря нерешен проблем, да го реша и да намеря поне няколко десетки души, които да ползват моето решение. Другият въпрос е, че това звучи просто, а всъщност е трудно да се намери задача, която още не е била решена от някого от милионите програмисти и стремящи се — и освен това е достатъчно проста за начинаещ.
В момента стигнах до Питон, по пример на много предшественици събрах информация от Хабр и подготвям статия за резултатите. Надявах се да публикувам именно нея като моята първа хабрастатия, но там все още трябва да допиша малко текст. А тук направо се изсипаха публикации на тема "Как станах програмист, просто като положих малко усилия", почти всеки ден, а понякога и по две на ден.
Така че не устоях и разказах защо положих много усилия, но не станах програмист.
Ако обобщя, искам да кажа следното:
- Желанията и усилията наистина могат да постигнат много, но решаващо значение все пак има материалната база. Който я има — на него желанията и усилията помагат да постигне повече. Който я няма — на него желанията и усилията не помагат да постигне дори обикновен резултат. Увлечението по компютрите от детството може да помогне да станеш програмист, но това не е толкова голяма помощ. Много по-големи шансове да станеш програмист има човек, който дори никога не се е интересувал от компютри, но когото осигурените родители изпратят да учи на модерна техническа специалност. Но и само увлечението е малко, ако — както в една от последните публикации — не ти купуват детството програмируеми калкулатори.
- Време е най-накрая да се разделим с мита, че за работа като програмист е достатъчно да знаеш как да програмираш. В най-добрия случай е достатъчно да знаеш добре Програмирането, например "пишейки код на дъска" — такива да, ще ги отскубнат с ръце. Разговорите за това, че джуновете се взимат от улицата, само за да знаят откъде се включва компютърът — това е много силно преувеличение, в тези разговори наблюдаваме типичната грешка на оцелелите. Около всяка ваканция на програмист стои "стъклена стена" на HR отдела — хората с техническо образование просто не я виждат, а другите могат само безсмислено да се блъскат в нея с главата. Или — както в още една от неотдавнашните публикации — да се наемат "по познанство".
- За да "станеш" програмист в зряла възраст, трябва да имаш същия удачен набор от обстоятелства, каквито се изискват и за младата възраст. Разбира се, възрастен човек може да прави много неща по-добре (той вижда целта, към която се стреми, има опит в обучението и развитието, знае реалните потребности на пазара), но много от тях също му липсват (той трябва сам да се издържа, да отделя време за битови нужди, а и здравето вече не е същото). И ако — както в още една от неотдавнашните публикации — има финансова подкрепа от семейството и стабилност в живота под формата на собствено жилище, то смяната на дейността наистина е много по-лесна.
Източник: habr.com
