Как да направите първата си работа в 5 прости стъпки

Отпечатъци в пустинния пясък - Едуард Мусяк (CC BY 2.0)

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

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

Мислех, че съм с горещи неща. Бях на около 18 години и вече имах повече „опит“ в програмирането, отколкото повечето обяви за работа поискаха. Започнах да програмирам около 5-6 години. Още се учех да чета и пиша, когато написах първата си програма в BASIC. Изглеждаше така:

10 PRINT "Здравей, СВЕТЪТ!"
20 GOTO 10

Другите ми програми станаха много по-сложни, разбира се. В крайна сметка се разклоних от BASIC и научих Pascal, Language Assembly, C и C ++. Знаех, че процесорът x86 е на много ниско ниво. Обичах да експериментирам с графика и музика с код.

Дори написах много прости програми с чист машинен код. С други думи, вместо да се занимавам с език на високо ниво като сглобяването (това е куца шега, но е по-високо от машинен код), написах в шестнадесетичен код.

Шестнадесетичен код по същество е същият като писането на код директно в 1 и 0. Той просто представя числа по начин, който е по-ефективен за четене и въвеждане на хора. Изглежда малко така:

49 66 20 79 6f 75 20 63 61 6e 20 72 65 61 64 20 74 68 69 73 2c 20 79 6f 75 27 72 65 20 68 69 72 65 64 21 20 4a 75 73 74 20 6b 69 64 64 69 6e 67 2e 20 42 75 74 20 79 6f 75 27 72 65 20 69 6e 20 61 6e 20 65 6c 69 74 65 20 63 6c 75 62 2e 0a 0a 47 65 74 20 31 30 25 20 6f 66 66 20 61 6e 79 20 70 75 72 63 68 61 73 65 20 66 72 6f 6d 20 68 74 74 70 73 3a 2f 2f 65 72 69 63 65 6c 6c 69 6f 74 74 6a 73 2e 63 6f 6d 20 77 69 74 68 20 74 68 65 20 63 6f 75 70 6f 6e 20 63 6f 64 65 3a 20 68 65 78 63 6c 75 62
Забележка: Не се опитвайте да стартирате този код, това е просто шестнадесетичен бутон на секретно съобщение, който не е предназначен като инструкции за нито един процесор.

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

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

умения:

Над 10 години опит в програмирането *
Photoshop, ACiDDraw, 3D Studio Max **

Езици

BASIC, QBASIC, Pascal, ASM, x86 машинен език, C, C ++, MS DOS Batch, Perl, AutoLISP.

* Не забравяйте, че бях свеж от гимназията. Вярно, първоначално кодирах преди повече от 10 години, но моят „опит“ се състоеше в това да правя глупави игри и да се занимавам с хоби проекти.
 ** Как готините деца проектираха потребителски интерфейси

Тази автобиография ми даде интервюта, но не минаха толкова добре.

Моето първо интервю за код

Впечатлен от невероятния ми списък с ключови думи за умения, аз влязох в първото си кодово интервю, усещайки се изцяло за себе си. Интервюиращият погледна моето резюме и каза: „Вземете този лист хартия и напишете клас по C ++, който поддържа подреден списък с имена. Трябва да има два метода: добавяне и списък. “

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

Бях сигурен, че лесно мога да направя това с прости функции в C, но по това време бях честно нов за C ++. Какъв беше синтаксисът на класа отново? Как да определя методите? Имам ли нужда от виртуални методи или статични методи или обществени или какво? Какви бяха разликите?

Разбира се, ако бях вкъщи с моята книга C ++, бих могъл просто да се обърна към пример и да извадя това, без пот! Винаги имам своите справочници, когато кодирам. Това е напълно несправедливо! Знам, че бих могъл да свърша тази работа, ако просто ме оставят да се консултирам с книга.

И WTF? !!! Кой с правилния си ум кодира НА ПАПЕРА ?! Сериозно? Дайте ми компютър и книга и ще го извадя за нула време.

Отказах се и оставих интервюто, чувствайки се ТОЛКОВО СТРАШЕНО.

Обратно към дъската за рисуване.

Стъпка # 1: Откачете вашата автобиография.

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

Съвет за възобновяване: Попълването на автобиографията ви, за да компенсирате липсата на опит, няма да ви помогне. Ще те нарани. Ако сте млад разработчик, притежавайте го: „Jr dev със страст към ученето!“

Ако трябваше да оценя уменията си с всички тези неща по време на скала от 1 до 10, бих ги оценил така:

  • Photoshop: 8
  • ACiDDrew: 3
  • 3D Studio Max: 2
  • Действителни умения за графичен дизайн: -10
  • ОСНОВНО: 8
  • QBASIC: WTF? Групирайте с BASIC, poser.
  • Паскал: 8
  • ASM: 6
  • x86 Машинен език: 1 (възможни са само малки, рудиментарни програми)
  • С: 6
  • C ++: 1
  • MS DOS партида: 9
  • Perl: 3
  • AutoLISP: 2
Съвет за възобновяване: Ако бихте оценили по-малко от 5 на всяко умение, не го поставяйте в автобиографията си.

Бях асо във Photoshop. Прекарах много време в него и наистина знаех пътя си около функциите и менютата, но тъй като съм ужасен дизайнер, цялото техническо ноу-хау на Photoshop в света не би помогнало много на моя работодател. Защо да се настроя да разочаровам хората (включително и себе си)?

След някаква брутална самоотверженост, нека да видим какво ни остава:

BASIC, Pascal, ASM, C, MS DOS Batch

Съвет за възобновяване: Ако никой не се наема за това и просто се хвалите за безценни умения, оставете го на разстояние от автобиографията си.

Сега сме надолу към Pascal, ASM и C.

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

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

  • ° С
  • ASM
  • паскал

Ах, много по-добре. И сега ще се побере в малко обобщение в горната част на моята автобиография:

Страстен младши разработчик на софтуер, квалифициран в C, ASM и Pascal.

Стъпка # 2: Практикувайте, докато не можете да живеете код на място.

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

Моето второ интервю за програмиране

С преработена автобиография бях в много по-добра позиция да премина интервю. Бях достатъчно уверен в C, x86 ASM и Pascal, че ако ме помолят да кодирам на хартия или на бяла дъска без налични книги, бих могъл да го направя.

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

В тази работа трябваше да използвам C, Delphi (основно Pascal ++) и C ++. Именно там бях представен за първи път в Java и в крайна сметка нов готин нов език за скриптове в уеб браузър, наречен JavaScript. Нямах представа колко важно би било това по онова време.

Как успях да започна да пиша веднага по време на второто си интервю за програмиране? Дойдох подготвен. Имах необходимите умения за незабавно въздействие.

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

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

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

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

Какво искам да кажа с "по-сложни приложения?" Искам да кажа, че те трябва да са по-големи проекти, в комплект с потребителски вход (за предпочитане без парола) и рамка на приложение (препоръчвам също React + Redux. Angular 2 също е популярен. Ако отидете с Ъглов 2, проверете ngrx / store).

Нуждаете се от идеи за приложения? Вижте „Най-добрият начин да научите кода е да кодирате: Научете архитектура на приложения чрез изграждане на приложения“.

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

Стъпка # 3: Проучете се.

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

Най-общо казано, това означава, че ще ви се наложи да четете книги и публикации в блогове, или да гледате видеоклипове, или да вземете някои курсове. Но не учи безцелно. Трябва да имате посока. Вижте „10 въпроса за интервю, които всеки разработчик на JavaScript трябва да знае“ и поредицата ми от блогове, „Овладейте JavaScript интервюто“.

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

Например, когато интервюиращият попита „Какво е приключване?“, Вие не само трябва да знаете определението, вие трябва да можете да изброите множество случаи на използване за закриване и да обясните защо те са полезни.

Стъпка # 4: Създайте портфолио.

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

В наши дни все по-често се среща, че мениджърите по наемането очакват същото от разработчиците. За нас е изключително полезно, ако можем да разгледаме някакъв код, който вече сте написали. Вашият акаунт в GitHub е пълен с учебни проекти и малко приложения за практика? Страхотен!

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

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

Ти не си. Времето е ценно и за всички останали. Вашата кариера обаче е важна. Демонстрирането на ангажираността и страстта ви е важно. Ако нямате портфолио, което можем да разгледаме, това определено е червен флаг. Може би не си достатъчно страстен? Може би всъщност не обичате да кодирате достатъчно, за да правите нещо в свободното си време? (Ако случаят е такъв, трябва да помислите за намиране на кариера, която е по-съвместима с вашите интереси и страсти).

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

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

Стъпка # 5: Работете върху уменията на вашите хора.

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

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

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

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

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

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

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

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

Уверете се, че са видими всеки път, когато общувате с други хора.

Емпатията е най-важното умение за разработчици. Правете го.

заключение

  1. Разкопайте автобиографията си: Вие сте млад дев със страст към ученето. Го притежавате. Използвайте го във ваша полза. Екипите на разработчиците трябва да наемат младши разработчици. Неопитът ви е част от вашата стойност.
  2. Практика: Реална, умишлена практика с лазерен фокус и игрови план. Трябва да поставите около 1000 часа в упражнения за кодиране и още 320 часа или така да изградите реални приложения. Направете това и ще бъдете подготвени за повечето предизвикателства с кодирането на живо, с които ще се сблъскате в интервюта.
  3. Проучване: Прочетете книги. Вижте онлайн курс. Най-важното е да се запознаете с общи въпроси за интервюто и да сте готови да ги отговорите.
  4. Създаване на портфолио: Освен че е чудесен инструмент за оценка на нивото на вашите умения, ако нямате портфолио, това ще накара мениджъра по наемането да зададе въпроса колко сериозно приемате кариерата си за развитие или колко страстно се занимавате с програмиране. Време е да спрете да се оправдавате и да го свършите. Това е чудесно място да поставите тези приложения, които ще изградите за практика. (Виж # 2).
  5. Развийте уменията на хората: Емпатията е най-важното умение за разработчиците на софтуер. Може би най-важното умение за живота. Практика, като се има предвид перспективата на други хора. Ще създадете по-удобни за потребителя приложения и ще имате по-добри отношения с вашите колеги и екипни клиенти.

Искате да се качите на ученето бързо? Ще ви помогна да преодолеете пропастта между уменията за младши и средни нива на JavaScript до напреднала разработка на Java приложения.

Научете двата стълба на JavaScript (прототипно OO и функционално програмиране) в дълбочина, заедно с критични умения като TDD. Гледайте и мен истински приложения.

Научете JavaScript с Ерик Елиът

Ерик Елиът е автор на „Програмиране на JavaScript приложения“ (O’Reilly) и „Научете JavaScript с Ерик Елиът“. Той е допринесъл за софтуерни преживявания за Adobe Systems, Zumba Fitness, The Wall Street Journal, ESPN, BBC и най-добрите звукозаписни артисти, включително Usher, Frank Ocean, Metallica и много други.

Той прекарва по-голямата част от времето си в района на залива Сан Франциско с най-красивата жена в света.