Софтуерно Инженерство
Loading...
+ Нов въпрос
jacob.black97 avatar jacob.black97 0 Точки

Какви са нужните знания за един стажант/junior програмист?

Здравейте,
от известно време съм се заел да гледам видеа, решавам домашни и изпити от следните курсове: C# Basics, C# Advanced, OOP, HQC, Databases, Database Aplication.
От Basics курса решавам наличните изпитни задачи. Не ме затрудняват особено задачите, освен последната с побитовите операции(разбирам ги побитовите операции, просто тези последните задачи ми се струват малко "смахнати" :) ).
От C# Advanced също си ги решавам изпитните задачи. Не харесвам особено много матриците, но се оправям криво-ляво.
От OOP курса също горе-долу решавам изпитите, като гледам да се съобразявам с наученото от HQC курса.
От Databases задачите също не са ми голям проблем, като изключим функциите/процедурите :)
От Database Aplication не ми се виждат много трудни нещата. Оправям се с Code First-а.
Сега съм започнал да гледам видеата от Asp.NET MVC курса.
 
Не ми харесва да се занимавам с HTML и CSS. Но пък от друга страна много ми харесва да се занимавам с направата на приложения. Сега съм започнал да гледам видеата от Asp.NET MVC курса и ужасно много ми харесва, макар, че ми изглежда малко сложничко.
 
Въпросите са ми следните:
1. Какво трябва да знае човек за стаж/junior като Back-end или Web developer? Ако може да споменете само с по една-две думи какво трябва да се научи.
2. Въпреки, че не ми харесва да редя HTML и CSS, според вас как би било най-редно да постъпя - да започна да гледам видеата, съответно и да реашавам домашни и изпити, от Frond-end курса, тоест JavaScript или да продължа да гледам видеата от Asp.NET MVC курса?
3. Другата ми дилема е дали пък да не започна да гледам видеата от курса - структури от данни и алгоритми?
 
Според вас, върху кое да наблегна най-много, за да започна работа?

2
Общи приказки
RoYaL avatar RoYaL SoftUni Team Trainer 6846 Точки

Пусни CV, с което да се харесаш и отиди на 4-5 интервюта, така най-лесно ще разбереш какво търси пазарът. Останалото са празни приказки :)

6
Nick1R1 avatar Nick1R1 115 Точки

Според мен вече има доста голяма конкуренция на пазара на труда за стажанти и джуниори. Има много хора които ги разбират тези технологии на бейсик ниво и за да си конкурентен ти трябва фул стак от софтуни програмата. Сигурен съм, че може да започнеш някъде и с тези технологии + JavaScript или ASP, но за това трябва да имаш късмет, софтскилс, връзки или други подбобни. Между другото искам да ти препоръчам курсовете Структури от данни и алгоритми, много хора ги подценяват тези курсове, но са супер важни, според мен даже е редно да се измисли вариант и да се сложат в основната програма ! 

Успех в търсенето !

4
bacuty avatar bacuty 55 Точки

Гледам обявите за работа и аз и ми направи впечатление една и съща фирма за junior .NET изискванията им бяха ниво Fundamental level, за senior -+back-end модул.

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

Освен това знания от типа един for цикъл и два селекта от базата данни също ми се струват непривлекателни :).

Моето мнение е ,че back-end junior без бази данни е невъзможно, но без Javascript за junior-да.

А програмист без структури от данни и алгоритми също няма как да стане... :)

Но това е моето мнение

 

0
quickben avatar quickben 973 Точки

Ако си решил да наблягаш на asp.net mvc рано или късно ще разбереш, че там се пише много javascript, така, че без него няма как да направиш нещата които искаш, препоръчвам ти да НЕ гледаш последната истанция на курса, защото просто няма да знаеш повече от половината неща които ще те питат на интервю и ще видиш как не се правят нещата, гледай първата инстанция на курса(Влади която я води) и после от другаде, че само с един курс от софтуни и телерик няма да стане. Базите данни ти стига един Entity Framework Code First.

Ако можеш да си направиш сам един проект и да си го направил качествено би трябвало да можеш да си намериш работа, но за junior asp.net mvc е трудно поради факта, че няма толкова много места колкото някой хора си мислят и фирмите редовно искат да знаеш малко повечко отколкото би трябвало.

Аз си правя онлайн магазин който е почти готов и съотношението е следното: 55% JS, 40% .net mvc и 5% бази данни, така, че ще ти трябват солидни познания по asp.net mvc и солидни познания по JS, базата и нищо да не знаеш за 3 дена все ще я вдигнеш а после да се добавят нови неща особенно ако си тръгнал с code first е работа за по 5 минути.

А структури от данни и алгоритми е хубаво да се знаят, но лично на мен за 2-3 месеца не ми се е налагало да дефинирам една струкрура или да правя някакъв сортиращ алгоритъм, даже единствения път в който съм виждал някаква по-завъртяна структура това е когато даваш на hangfire-а някакви таскове като ги буташ в една опашка, сиреч ако искаш asp.net mvc ще те питат предимно за asp.net mvc и javascript и не толкова за структури, да ще те питат опашки, стекове, свързани списъци и подобни, но се съмнявам да те карат да правиш някакви сложни неща с дърво. Хората които познавам и работят като asp.net mvc devs са на същото мнение.

С две думи зависи каква работа търсиш, ако търсиш сериозна работа в сериозна фирма където се обръща внимание на качеството е доста трудно да си намериш работа, ако искаш да работиш за 800лв и да вършиш работа за двама ще си намериш за седмица.

bacuty Моля, те кажи ми когато ти се наложи да дефинираш някаква структура или да сортираш дърво в asp.net mvc проект, или кога ще прекарваш значителна част от dev time-a по базите данни, не се заяждам просто ми е интересно, защото на мен не ми се е налагало както и на хора които работят.

1
20/01/2016 12:43:57
Kamigawa avatar Kamigawa 750 Точки

По отнешение на базите - много зависи от проекта. Големите проекти бягат от ентити фреймуърка и ORM-ите като цяло и всичко става със сторнати процедури (заради пърформънса). Напълно възможно е да има DBA-та (да не кажа, че си е задължително), които да се занимават само със заявките(пишат, оптимизират и т.н.), като вече как се обработват данните и т.н. си е работа на DEV-овете. За момента в тези няколко месеца, в които работя по такъв проект не ми се е налагало да пиша повече от SELECT * FROM като SQL, за всичко друго се обръщам към DBA.

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

0
20/01/2016 13:37:38
RoYaL avatar RoYaL SoftUni Team Trainer 6846 Точки

Спас, твоята ситуация е по-скоро изключение, от колкото правило. В общия случай драскаш заявки - било то в базата, в кода или под формата на ORM.

0
20/01/2016 13:46:16
quickben avatar quickben 973 Точки

Ясно ми е, че големите проекти избягват ORM-и, но както сам каза хората си имат db програмисти и db админи, това не означава, че не трябва да имаш познания в областа, но колкото да си вършиш работа, не да сме дб гурута ;)

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

Цирка започва когато някой оптимист реши, че мястото на бизнес логиката е при базите данни, тогава става весело ;)

0
20/01/2016 15:08:17
mihayloff14 avatar mihayloff14 825 Точки

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

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

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

Не пренебрегвайте фундаменталните знания за сметка на практическите.

8
RoYaL avatar RoYaL SoftUni Team Trainer 6846 Точки

Аналгично в една от фирмите, където работих, единственият ни фронтендър водеше обучение по алгоритми :D

0
quickben avatar quickben 973 Точки

Кой е казал да ги пренебрегваме, просто реалноста e такава, че се дава предимство на практиката, сиреч едно нещо като не ти трябва често не се използва често и следователно се забравя малко или много. Защо отново си мислиш, че смятам алгоритмите за излишни, точно обратното, просто гледам какво става в реалноста.

0
RosenKrumov avatar RosenKrumov 203 Точки

Изчетох всички мнения, сега и аз ще дам моето :).

Бих ти препоръчал да си зададеш два въпроса: 1. Искам ли веднага да започна работа (на зор ли съм по някакъв начин) или искам да вникна в нещата и да се изградя като програмист като развия мисленето си?    2. Знам ли какво искам да работя, за да се развивам тясно в тази посока или все още не съм решил? 

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

Мисля, че с част от горния абзац, можеш да си отговориш и на втория въпрос - бъдейки изграден в мисленето като програмист - практично и алгоритмично мислене, ще можеш да си избираш къде и с какво да работиш, според това какво ти се работи, а не да филтрираш, според това какво можеш и къде пасваш на job requirements.

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

7
ttitto avatar ttitto 1155 Точки

Опитах се да нахвърлям нещо като основни неща за всеки един професионално занимаващ се програмист, вкл. и джуниър. Списъкът определено може още много да се допълва но като абсолютен минимум бих казал:

КПК - целия курс
ООП - целия курс
принципи за ОО дизайн - SOLID, DRY, KISS, Principle of least knowledge,... добро разбиране + свободно посочване на примери
структури от данни - основни особености на абстрактните структури - масив, списък, речник, сет, стек, опашка, дърво, граф и техните имплементации в любимата ти технология
алгоритми - комбинаторика, рекурсия, DFS, BFS
шаблони за дизайн - Singletons, Factories, Builder, Adapter, Facade, Composite, Flyweight, Decorator, Adapter, Bridge, Strategy, Command, Observer, Visitor - много добро разбиране, примери и разпознаване в кода
HTTP протокола (за web) и работа със сървиси

HTML+CSS + Bootstrap +Javascript + JQuery - за фронтенд перфектно (дори за джуниър)
за бакенд - средно ниво на HTML и Javascript (основите + "ООП" в JS), SQL на средно ниво и вече тясна специализация към някой ORM и база данни в зависимост от технологията

секюрити - основните видове атаки и предпазване в съответната технология (като изгледаш лекциите за секюрити в двете инстанции на Web development basics и .NET MVC курсовете и си готов)

Според мен след HTML + CSS си остави js за по-нататък и мини първо на бакенда: към PHP или към .Net (което си избрал), за да усвоиш с тях гореизброените основни неща. JS е малко по-особен и може да те заблуди, ако не познаваш OOP в други езици.

Това беше за знанията, а за зарибявка си подреди много добре гитхъб (или др. ) репозиторито. Желателно е да имаш и някой завършен проект. И автобиографията си я направи така, че да не прилича на никоя друга.

0
21/01/2016 22:20:50
AleksandurSeferinkin avatar AleksandurSeferinkin 335 Точки

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

2. Започвай да решаваш домашни и ако остане време гледай видеата.

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

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

Съветът ми е: първо пиши код, после гледай видеата. Приоритет номер 1 трябва да ти е практиката! Като се опитваш да правиш нещо и не успяваш, ползвай търсачка, за да се научиш как се ползва. Не чакай информацията на готово. Лекциите и видеата ги гледай след като си се справил сам с проблема.

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

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

 

PS: умишлено не те насочвам към front-end, back-end или определен език.

4
21/01/2016 23:04:13
yordan.krystev avatar yordan.krystev 1 Точки

Ами аз ще говоря от скромния си опит, ходих на едно интервю преди 2 месеца, обявата бе натъпкана с технологии, а реално на интервюто ме питаха за ООП, структури от данни, изключения, синхронизация и дали знам някакви design patterns и ако знам да изброя и ако мога да кажа за всеки по нещо. После ходих на още едно, отново ме питаха такива неща - принципи на ооп, статик, дженерик, бла бла, какви структури от данни знаеш и техните имплементации в Джава, нишка, процес, а също искаха да напиша и малко код на хартия - една задачка с матрици- диагонали и една задачка със стрингове -  да обърна буквите в думите в един текст, но думите да си запазят местата. Голям плюс е ако можеш да направиш заявка примерно на SQL, казаха, че ако немога няма проблем, но на интервю не е ок според мен да казваш, че неможеш това, което искат от теб. Та в заключение - акцентирай върху ООП, структури от данни и база данни, също няма да е лошо поне да имаш представа от това как се случват нещата с паметта, малко от малко.

0
VictoriaTsvetanova avatar VictoriaTsvetanova 20 Точки

Сега ще ти кажа на мен какво са ми казали:

  1. Да знаеш базовите неща на един език: типове данни, цикли, ...
  2. Да знаеш Обекто-Ориентирано Програмиране (ООП) на езика, с който смяташ да работиш
  3. Дизайн и анализ на алгоритми
  4. Структури от данни
  5. База данни
0
25/03/2016 01:39:02