2. Здравей!
Това е супер. Звучиш, като някой, който е доста близо до стажантската позиция (половината, започват с по-малко, но нека сме подготвени), но ще трябва, да понаучиш още малко неща. Съветвам те, да търсиш работа още от сега, но все пак, учи следните неща:
Спомена, че си правил CRUD апликации. Това е добре, но още по-добре е, ако са RESTful апликации.
https://en.wikipedia.org/wiki/Representational_state_transfer
Помни - REST не е просто CRUD.
HTML - Няма малко HTML! Или знаеш HTML, или не го знаеш. Научи се, да правиш форми и как работя атрибутите и си готов. W3Schools, мини всичко за HTML, ако трябва два пъти. Като карането на колело е - не се забравя.
CSS - Съветвам те, да оделиш повече внимание на CSS и по точно "Vanilla" CSS, защото много хора, включително и аз, попадат в капна, на "лесни framework-ове". Научи си чистия CSS, направи няколко сайта с него, че да не се чудиш, какво се случва с CSS-a, когато компанията ти реши, да смени framework-a или направо целия стак. Много е важно, да си сигурен с Flexbox-a и Grid-a. Да се впуснеш, да правиш красоти със CSS, си е отделна професия. Но все пак - отдели няколко часа, да прочетеш 1-2 книги по UX, или поне изгледай няколко видеа в YouTube. Научиш ли си добре CSS-a, ще ти е много лесно, да минеш на каквато и да е шантава библиотека. Може би, ще ти отнеме няколко седмици, но е много добра инвестиция... Повярвай ми, повечето шефове се впечатляват от добрe изглеждащи апликации, повече, от това колко сложен проблем сме решили в beck end-a, колко сме намалили голямото О и подобни.
JS - Тук играта e загрубяла. JavaScript претърпя огромни промени. Първо - запознай се малко то малко с npm, който е част от Node.js. Спокойно - познавам хора, които не са сигурни, как да напишат Hello World на Node, нo ползват npm от години. Може, ако не си го ползвал, да ти звучи странно, но е важно. Ще те посъветвам, да научиш всичко ново, свързано с JS (ES6, ES7 и каквото идва). Знам, че ще ти прозвочи доста сложно, но arrow funcion, destructuring, classes, promises, са неща, който ще намериш мнгоо полезни и ако компанията ти не ги ползва, то е много вероятно, в скоро време, да започне. Съветвам те, да напишеш няколко странични, ползвайки JS, както и да експериментираш с няколко по-интересни npm пакета.
Друго важно - Вероятно ползваш xmlhttprequest. Ако все пак не знаеш, научи, защото ще съществува още с години в legacy апликациите. Време е, да обърнем внимание на promises и then:
https://www.w3schools.com/xml/ajax_xmlhttprequest_create.asp
И след това, да научиш да боравиш, като хората с fetch:
https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API
https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch
Аз лично ползвам следния малък помощник, ако ти се занимава:
https://www.npmjs.com/package/axios - доста популярно и надежно API, но се инсталира през NPM
И когато имаш времето, те съветвам, да почнеш малко по малко, да учиш React, Angular и/или в Vue, но едва, след като започнеш работата. Все пак, времето ни е ограничено, a тези не са нещо, което учиш за няколко дена.
А и JSON - просто задължително, ако не знаеш.
https://en.wikipedia.org/wiki/JSON
За jQuery - не се отпускай с jQuery. Лесно е за начинаещи, но създава особено вредни навици и популярността му спада много бързо. Добре е, да се знае защото все още се ползва често, но спагетите с jQuery са легендарни. Не бъди мързелив, защото няколко мързеливи CSS селектора, 20-30 линии copy-paste-нат код, както и лиспа на сериозно познание на JS и си на път, да се обесиш в гореспоменатите спагети.
SQL - Малко SQL е достатъчно за стажант, но все пак, не се оставяй на малко. Поне научи като хората, какво е това нормализация, ако не го знаеш вече:
https://en.wikipedia.org/wiki/Database_normalization
После се научи, да работиш с дати, да join-ваш таблици, за да се справяш малко по сложни "запитвания".
И ако си мислиш, че тук става обръкано, изчакай, да стигнеш до момента, в който трябва да синхронизираш данни, между 10 сървъра. Споко, не е нещо, за което трябва, да се притесняваш в момента. Засега гледай, да понаучиш повече теория, че практиката си е предизвикателство. Ако имаш късмет, в компанията, ще попаднеш на хора, които се занимават с това и е те упътят по-добре.
" владея ООП" - Дръзко изказване, за човек без ден професионален стаж и едва година на самообучение. Не искам, да те разочаровам, но внимавай с подобни неща на интервюто, че ще бъдат особено безмилостни и е вероятно, освен ако не се покажеш, като дългогодишен специалист, да те отсвирят, просто заради егото ти, но за това, малко по-късно. Ако те попитам, както за базови неща, който може би не са свързани с OOP, как ще се справиш? Примерно - какво е това stack и heap ? В PHP как предаваме array (масив) на метод? Като value(стойност) или като reference ? Общо взето, какво е функции и какво е метод и защо имаме две думи, за нещо, което изглежда, че е едно и също? Какво е полиморфизъм? А наследственост (inheritencve)? Дай ми кратък пример, в който би ползвал някое от двете?
И пак - запомни, че не го казвам от злоба, а просто защото това са сравнително базови въпроси, които ще те питат. Вероятно е, да те "запукат" с доста повече неща.
Но съществува и възможността, да ти покажат някакъв развален код, като попитат - къде е грешката, как да я оправим и какво очакваш, да се се появи на екрана, ти да отговориш и да те вземат. Познавам хора, които не знаят както в това CRUD, но започнаха, като стажанти на палтени позиции.
За Php - Научи се, да боравш с PHPUnit, ако не си го направил вече. Тестването важен етап от разработката и определено е нещо, което биха било голям плюс, ако го видят в примерния ти код в Git. A и
https://phppot.com/php/php-restful-web-service/
Да, знам че говоря отново за REST, но е важно. Никой не иска, да види линк, който завършва с /22"%kkQj.
Други неща, които биха се радвали да видят, а и които биха ти помогнали:
XP - научи го, пробвай го, намрази го, няма значение, само бъди готов, да прилагаш Extreme Programming практики, когато и където ги искат. TDD е нещо, което малко хора научават в началото, но за теб ще е огромен бонус.
Agile практики, от рода на Scrum и Kanban. Не ти казвам, да станеш Scrum Master, просто ти казвам, да си наясно, а не да гледаш уплашено, когато те попита, дали си запознат.
Soft Skills - Не, не говорим за software skills, а за адекватно държание, работа в екип, контролиране на егото ти, търпение, разбиране и добра комуникация. Ако си някой, който се кара и вика за щяло и нещяло по цял ден, много е вероятно, да те изритат. Ако си някой, който е много по-напред с материята от голямата част от персонала, но обичаш вечно да го натякваш и да се биеш в гърдите, как си най-добрия, то помни, че никой не иска, да работи със задници.
Взимане на "requerments" - това е много тънък момент, особено, ако шефа ти е от хората, които имат проблем с отварянето на пощата от телефона си. Изисква време, внимаие и нерви - представи си, че работиш с 3 годишно дете.
Малко UML - Диаграми - User Story-та, Case-совел, DB диаграми, Class Диаграми. Поне, научи какво са. Сигурно ще си имате цял отдел бърборковци, които получават повече от теб, за да направят нещо, което всеки 9 годишен би съумял, но какво да се прави.
И още допълнителни неща:
Научи се, да работиш правилно с Git. Работа с история, merge-ване на различни бранчове, pull requist-и и всичко ще е наред. Задължително си свали gitbash(google), ако си на windows-ka машина.
$ git --version, от терминала, ако си с Mac - ако го няма, ще те пита, дали го искаш.
$ sudo apt install git-all
или
$ sudo dnf install git-all
в зависимост от това, как си предпочиташ Linux-a. А като заговорихме...
Работа с Linux - не ти казвам, да станеш linux гуру, но проста навигация, бавори познания на файловата структура, знанието как се инсталират пакети и как да спираш или рестартираш service-и, как да конфигурираш файл със nano, са все неща, които трябва да се знаят. С това върви и базов SSH, както и познание що е то public key cryptography (споко, не толкова сложно за ползване, ако не знаеш вече). След време, напиши и един-два dash script-a. Един ден, когато почне, да те пере съчмата, може да пробваш, да отделиш 100ина часа, за да "научиш" Vim или Emacs, или ако тотално изтрещиш - и двете, но това е само, ако искаш да станеш някакъв еднорог.
Ако не си запознат, научи малко повече за тероията - мреци, как работи нета, какви са протоколите, що е то сървър, как се качва апликация на такъв, какво е това DNS, регистрирай си domein, поиграй си с няколко сървъра. Препоръчвам digitalocean.com - сравнително евтино (макс 5 долара на месец, за инстанция, но ако си държиш инстанциите за по няколко часа, на практика е стотинки), но си заслужава, само заради туториалите, но винаги може, да пробваш с някой морално остарял лаптоп от 2006-а. (Изисква валидан дебитна/кредитна карта), научи се, да ползваш tomcat, да сетнеш един катинар (демек линка ти да е HTTPS) - аз лично препоръчвам Certbot, просто, защото е лесно. Има хубав туториал на Digitalocean.com по върпоса. Разбира се, съществува и AWS, но премени през горите неща, преди да се насочиш натам.
И - всеки популярен или поне сравинително популярен компютърен език, който можеш да научиш, ще ти е от полза.
Python, Java, C#, Rubi, дори функционални програмни езици, като Lisp(вероятността, да си намериш работа е малка, но ще ти помогне доста, просто като изживяване) и Haskell ( Помни - Haskell кода ти, няма да има странични ефекти, защото никой, никога няма да го подкара - малко програмистки хумор)
Заключение
Много от нещата, ще ти се сторят, като че ли не ти трябват, но повярвай ми, няма нито едно, което ще навреди на кариерата ти. Потърси работа, още сега и постепенно учи. Никой никога не каза, че трябва, да е лесно. Надявам се, че съм покрил достатъчно!
Хайде - успех и пиши, какво е станало!!!
ПП - Никога не ползвай програмистки хумор.
|