(Първо публикувано на Aug 29, 2020)
В другите социални мрежи си развивам още един бранд и там често ми задават различни въпроси, които понякога са на тема програмиране/софтуерно инженерство (с което се занимавам от 2015-та).
Вчера ме бяха питали “За колко време можеш да станеш достатъчно добър, за да те вземат като Junior Developer?” и реших да споделя отговора си тук (заедно с информация за това какви технически умения са необходими според мен). Аз все още не работя, така че приемете мнението ми “with a grain of salt” (базирано е просто на някои от проучванията ми по въпроса).
Мисля, че за всеки е различно и също така зависи от това в каква фирма кандидатстваш (не мисля, че е същото да си Junior в Google и Junior в някоя малка фирма).
Ако почваш от нулата (не си се занимавал с програмиране въобще досега), мисля, че ще отнеме няколко години (общо взето като всяко друго умение, в което искаш да станеш прилично добър).
Ако се пръснеш от практика (тоест жертваш почти всичко друго в живота си за известен период от време), може и по-бързо да станеш добър (но сигурно пак ще отнеме поне 1–2 години).
Ето един добър списък с технически умения, които е хубаво да притежаваш, за да си намериш по-лесно работа като програмист (научих го от книгата “The Complete Software Developer’s Career Guide” на John Sonmez и според обявите за работа, които съм виждал, е верен):
1) Поне един популярен език за програмиране (Java, C#, Python, JavaScript и други) и писане на качествен код (книгите “Code Complete” на Steve McConnell и “Clean Code” на Robert Martin са много добри на тази тема).
2) Софтуерна архитектура & дизайн (да разбираш OOP, design patterns, неща като REST, MVC и може би някои други)
3) Алгоритми и структури от данни (да познаваш популярните алгоритми за сортиране, обхождане и други, да познаваш механизма на работа на различните структури от данни)
4) Бази данни (да познаваш теорията зад базите данни, да знаеш малко SQL и видове релационни бази данни като PostgreSQL и MySQL, а дори и някоя нерелационна)
5) Frameworks (например ако си с Java -> Spring Framework, ако си с C# -> ASP.NET… обикновено има 1–2 големи, които се използват много и е хубаво да ги познаваш поне на някакво основно ниво)
6) Source Control (да познаваш как работят Git и GitHub)
7) Тестване (да знаеш как да тестваш кода, който пишеш, и да използваш различните инструменти, които има за тази цел)
8) Платформи и среди за разработка (най-често означава да познаваш Linux или поне често използвани команди в Bash, а също така средите за разработка на избрания от теб език за програмиране, примерно Java -> IntellJ, Eclipse / C# -> Microsoft Visual Studio)
9) Build & Deployment (да разбираш идеи като CI/CD, да познаваш инструменти като Jenkins & Docker поне на някакво основно ниво)
10) Методологии (поне да знаеш какво е Scrum)
11) “Меки умения” (да не си кофти като характер, да можеш да работиш в екип и т.н.)
12) Други (да можеш сам да дебъгваш кода си, да си ползвал някои инструменти като Jira/Confluence, да познаваш някоя специфична за позицията, за която кандидатстваш, технология)
Бая неща са, но с времето се натрупват всичките тези знания, ако правиш различни проекти, гледаш различни уроци, четеш по темата и прилагаш. 😅
Top comments (0)