Споделена история от Образование |
Програмиране - какво е и как да се учи, ако искате работа в сектора.
преди: 3 години, 8 месеца, прочетена 1893 пъти
Пиша тази тема, защото има много объркване сред хората, какво е точно програмирането, какво се прави и как се намира работа. Позлвам някой от термините на английски, но се опитвам, да давам адекватен превод.
Работих като програмист 7-8 години, започнах рано, но ми писна и днес работя нещо друго, макар често да ми се налага, да програмирам и да работя с хора, които програмират.
Най-важното - програмирането е жизенно важна част част от т. нар "IT сектор", но не е задължително да е IT, нито IT означава програмиране.
Примери:
- Научен работник автоматизира вкарването на данни от проучвания, като пише 50-100 линии код на Python - това е програмиране, но не е IT.
- Маркетинг експерт в IT компания, който има минимални технически познания, не работи с код, но разбира достатъчно, за да предлага промени в продукта.
И тук стигаме до две важни неща - спрете да казвате IT, когато говорите за програмиране, но другото важно е, че говорим за продукт. Това е крайната цел, на целия бизнес:
Научаване на клиентскти нужди -> разработка на продукт, който да ги задоволи -> продажба.
Какво е програмиране? Програмирането може да се опише по следния начин: Имате даден код, който поема някакви параметри - input(вход, входяща информация), изпълнява някакви инструкции - т. е. компютират се и връща резултат (output - изход, изходна инфомация).
Общо взето е следното:
input -> computation -> output
И това е основния принцип.
Ето пример. Искате да сметнете, ако сложите една сума пари на депозит с лихва, за определен брой години, колко пари ще се натрупат, след като минат тези години.
Накратко input-a ни е следният - Имаме начална сума, лихвен процент и брой години. Да речем, че при нас са 1000 лева, 5% лихва и 10 години.
После имаме компютацията, т. е. иснтрукциите. Тук трабва да напишем, какво точно става в стъпки.
Формулата за трупане на лихва е следната:
(CI) = P {(1 + i/100)n – 1}
- CI е турпащата се сум с лихвата, P е началната сума, i е лихвата, а n e броя години.
В предов:
-> За броя години (n) е повече от 0, направи следното:
-> Добави лихвата към сумата (P + i).
-> Извади 1 от n (т. е. минала е една година)
Това ще се повтори, докато n не стане 0. След това, програмата ще продължи към следващата иснтуркция.
-> Върни (т. е. output- изхода) резултата.
В нашия случай, с нашите параметри, сумата ще е 1628. 89 лева.
И това е основния принцип. Същата логика може да бъде ползвана за почти всичко останало. Тук ще е малко по-абстрактно, но принципа е същия:
Пример - поръчка на храна. Пръчвате пица и искате, да я доставят на адреса Ви.
Input - поръчка: Прошуто фунги, адрес: Васил Левски 1.
Компютация (макар и абстрактна):
-> Прати поръчка на кухнята, за да я сготват (т. е. ще им прати известие, което ще се появи я на касова бележка, я на компютър)
-> Провери, колко време отнема да се направи тази поръчка, в база от данни, в която са вкарани средния брой поръчки.
-> Прати извсетие на доставчика, да е готов да вземе поръчката, според времето.
-> Изчисли разстоянието между ресторанта и адреса на доставчика, сметни колко време ще отнеме и изпрати времето за изчакване на поръчителя.
Това е business case. Буквално това е продукта, който се оптива една комапния да продаде.
Ако схванете това, то ще схванете и програмирането. Всичко останало - различни програмни езици, библиотеки - всичко е различен синтакс и начин за постигане на целите.
Дали ще са игри, графики, апликации, уеб страници, система за известяване, ако часовника на баба Ви види, че пулса и се показва прекалено бързо и има значи, че може да получи инфаркт - всичко опира до input -> computation -> output
И за по-сложните неща, може да имате многжество "подпрограми" и инструкции. Тук не говорим за обекнто ориентирано програмиране и прочие. Това не е толкова важно в момента.
Отъкъде да започнете? С кое? Как? Кой програмен език?
Ако просто искате най-бързия начин, да си намерите работа, лично аз ще започна с проучване на пазара - кое се търси в моемтна, кое се е търсило преди, каква е тенденцията? Търсете хора в индустирята, четте статии и проучвания, възможно най-нови.
Примерно - В сайтовете за обяви, най-често се търсят JavaScript и React, C# и. net. (Това си го измислих, просто за приемера - направете си ваше проучване).
И какво да направите? Ако не знаете нищо за програмирането, ще е добре да започнете с "Основи на програмирането" - дали ще е курс, дали ще е YouTube видео, дали ще е някой приятел, да Ви помага - няма значение, започнете с основите. Говорим за базово програмиране. Това, което описах по-горе. Ако имате интерес към даден език - започнете с него. Ако не - Python и дори JavaScript са съвсем валидни избори и са най-лесни за новобранци. След като научите основните неща, ще трябва да научите т. нар типове и алгоритми. Ако се научите на това, гаранция Ви давам, че ще си намирате много лесно работа след години.
Когато се почувствате по-сигурни, ако имате интерес към нещо спесифично (web, апликации, игри, финанси, backend) - каквото и да е - насочете се към него, като все пак проверите, дали може да си намерите работа след това.
Примерно - харева Ви, да правите web. В момента във Вашият град, най се търси JavaScript с React. Какво бих направил лизно аз, на Ваше място:
-> Ще започна да уча основите на JavaScript.
-> Ще започна да уча CSS
-> Ще започна да уча React.
-> Ще си дам поне 6 месеца, преди изобщо да мисля за работа, ако това е първата библиотека, която уча, след като съм захапал основите.
-> Ще отделям поне 20 часа на седмица, за да уча това
-> Ще разговарям с разработчици, които работят в тази сфера с тези умения.
-> Ще следя редовно новини и обяви, за да знам кое се търси, защото ще мога да наблегна над него.
-> Ще питам хора, как точно протичат интевютата, за да съм готов за тях.
-> Ще питам хора, как точно протича работата им, за да съм готов.
-> Ще започна да си търся стаж, дори и неплатен.
СЪВЕТ - Стажът в компания, бие дипломи, курсове и портофлио от проекти. Ако имате 6 години в някоя компания, дори да нямате образование, човек от СУ с магистратура, 1 година стаж и портфолио, ще е след вас във списъка, ако кажете, че имате същите умения.
А в процеса на работа, ще се учите най-добре... стига комапмията да не е тотален траш.
-> Когато започна работа, ще се уча. Ако започнат да ми плащат, ще се отдам изцяло на тази професия и няма да работя другаде.
И да, доста стъпки са, но все пак не е нещо невъзможно. А ако искате да учите и не бързате - Горните стъпки, може би без работата, но отделяйте време и за хакатони, като не си давате толкова зор, ако имате други задължения.
Математика? Колко Ви е нужна?
Огромната част от програмистите никога няма да пишат сложни алгоритми, няма да им трябва да прилагат форумалата на Фурие, нито никакви сложни диференциални уравнения. Ще може спокойно да минете със математиката до 6-ти клас. Дори и да правите игри, ще имате нужда да знаеете, какво е декартовата координанта система. Ако може да разпознавате обекти на карта, X, Y, Z координати за 2D/3D, знаете какво е обем и площ, ще може да се справите. Не, не всички правят графични engine-и за игрите. Това са малка част от хората. Повечето изпълняват съвсем различни роли.
Обаче КЪДЕ, ще ВИ е нужна математика:
- Графки
- Machine Learning (общо взето, всичко изброено тук, ще включва и Machine Learning)
- Финанси
- Рейтинг
- Навигация
- 3D прнтиране
- Автоматизация на производствени процеси
И други. Но спокойно това далеч не е цялата индусрия.
Какви езици/технологии да учите?
Аз лично препоръчвам Python, като за начало, защото е най-малко объркващ. После имам други препоръки, но те са като втори и ли трети език, след като имате някакви основи. Иначе ще се откажете бързо.
Първоначало:
- Pyhton или JavaScript, за да научите основите.
След това:
- Java или C#, за "обекнто ориентиране". Просто са прекалено популярни, да ги игнорирате, без да знаете поне малко за тях.
По-сложните - тези тук са, за да станете дорби в програмиррането. Дори не кзавам, че трбява да отделите повече от 6-7 дена на едик. Просто напишете нещо кратко, колкот да схванете синтакса. Разбира се, може и да ги научите като хората:
- C - чист C, без плюс плюс частта.
- Rust - набира все по-голяма и по-голяма популярност, приятен е за писане и може да се превърне в следващата голяма backend технология.
А ако мразите себе си, всички останали и живота като цяло:
- Assembly - просто за се научите, какво прави компютъра. Никой не очаква, да напишете нещо сложно на assembly, но ако може да се справите с него, ще се справите с всичко.
- Haskell - ако може да пишете на Haskell, то честито - Вие сте "coding ninja".
- Lisp - работа с него, няма да си намерите. Но ако може да работите с него, не мисля, че някога ще имате затруднение с която и да е задача на работа. Ако може да се свърши от човек, вие ще сте този човек. Ако не можете да я свършите, едва ли има жив човек, който може, но дори и да има, той вероятно е на 6-7 цифрена заплата в Google, а не във Вашата фирма.
Ако желаете МНОГО добре платена работа:
-> Програмиране
-> Математика
-> Machine Learning
-> Финанси
-> Добър английски
-> Работа в голяма банкова институция, хедж фонд, кредитни рейтинги
- Да, отнема време, трудно е, изисква късмет и усилия, но всички, които познавам, включително двама българи, работещи като финансови анализатори, всеки ми се оплаква, ако бонусите му не мината 200-300 000 лева тази година. Включително и българи, които още нямат 30 години, а са заминали в чужбина, след като са завършили. И не, не лесно. Ако беше лесно, нямаше да плаща толкова.
Това е. Лек ден.
|