DEV Community

Димитър Трифонов (dvt32)
Димитър Трифонов (dvt32)

Posted on Originally published at Medium

Какви умения ти трябват, за да си намериш работа като програмист?

(Първо публикувано на Aug 29, 2020)

В другите социални мрежи си развивам още един бранд и там често ми задават различни въпроси, които понякога са на тема програмиране/софтуерно инженерство (с което се занимавам от 2015-та).

Вчера ме бяха питали “За колко време можеш да станеш достатъчно добър, за да те вземат като Junior Developer?” и реших да споделя отговора си тук (заедно с информация за това какви технически умения са необходими според мен). Аз все още не работя, така че приемете мнението ми “with a grain of salt” (базирано е просто на някои от проучванията ми по въпроса).

Software Engineering

Мисля, че за всеки е различно и също така зависи от това в каква фирма кандидатстваш (не мисля, че е същото да си 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)