Професия програмист: Какво се крие зад нея?
Вероятно много от вас си задават въпроса „Какво ми трябва, за да практикувам професията програмист?“. И почти веднага следва отговора „Ами програмен език, разбира се!“. Дали обаче „програмен език“ е достатъчен отговор на този въпрос?
Какво означава да упражняваш професията програмист?
Професията програмист изисква да имаш способността да намираш решения на различни проблеми и задачи, посредством изграждане на различни математически и логически конструкции. Сама по себе си тази способност се състои от няколко ключови компонента: умението да пишете код (или както го наричаме разговорно „да кодиш“), да развиете алгоритмично мислене, фундаментални знания за професионалното направление, в което искате да се развивате и едва накрая – програмният език.
Това, което трябва да знаете най-напред е, че първите условия не са свързани с програмния език. Обратно – всички програмни езици споделят някаква обща, логическа основа, върху която те са изградени. В дългия и бавен процес на развитие на различните езици, те постепенно се обособяват и оформят като подходящи за решаване на различни типове задачи. Но докато стигнете до този момент имат други, важни основи, които трябва да изградите. Нека разгледаме по-подробно различните условия:
- Умението да „кодиш“
Възможно е на прима виста коденето да ви изглежда като резултат от научаването на определен програмен език. В действителност за да можеш да кодиш, означава да придобиеш набор от специфични технически умения, като: - работа с променливи, цикли, условни проверки; - умението да използвате функции, методи и/или обекти; - умението да работите с масиви, списъци, асоциативни масиви и други;
Именно в усвояването на всички тези неща се състои умението да кодиш. А различните програмни езици са просто различни начини, чрез които да изразите тези умения, да ги въплътите в реален код.
- Алгоритмично мислене
Алгоритмичното (или наричано още инженерно, математическо или логическо мислене) е друго важно качество за професията програмист. Какво представлява то? Това е способността да откривате различните математически зависимости в даден проблем, от които извличате необходимата ви информация и решавате проблема. Тази способност се свежда единствено до вашата логическа мисъл. Нея можете да развиете чрез различни задачи по математика, физика и подобни (не е задължително), но задължително с редовно и интензивно решаване на различни задачи по програмиране.
Ако трябва да придадем някакви по-ясни контури на обемите - ще трябва да решите минимум 1000 задачи в рамките на една година. По този начин вие ще натрупате опит в решаването на различни проблеми чрез математически способи – нещо ключово за програмирането.
При изграждането на това умение езикът за програмиране няма значение.
- Основополагащи знания за професия програмист
Тук вече може да се каже, че езикът има някаква роля. Защо? Различните типове проблеми се решават с различни технологии (или различни програмни езици). В своето развитие те от своя страна следват различни математически и логически модели, които се наричат „парадигми“. Различните програмни езици са базирани на различни парадигми. Ето няколко от тях:
- ООП – обектно-ориентирано програмиране. При него логиката, която изграждате, се обособява в групи, наречени „обекти“, които взаимодействат помежду си.
- Функционално програмиране – за разлика от ООП, тук се използват ламбда функции, както и функции от по-висок ред;
- Бази данни – това е колекция от логически свързани данни, които се отнасят към конкретна предметна област. Те също така трябва да са структурирани по определен начин.
- Уеб технологии (тук влизат езиците за дизайн и различни онлайн функционалности като HTML, CSS, JS, DOM, AJAX и други);
- Мрежово програмиране, мрежови протоколи и мрежова комуникация;
Парадигмите са множество и най-различни, тук посочих най-популярните. Защо обаче посочих, че тук езикът за програмиране има значение? Защото различните езици следват различни парадигми и са писани с различни цели. Не може да очаквате един език, предвиден за уеб дизайн, да се справя с проблеми, които се решават чрез ООП или функционално програмиране и обратно. Вие трябва да сте наясно какъв тип проблеми ви привличат, за да изберете програмния език, в който да инвестирате времето и усилията си. Без значение обаче, преди това задължително трябва да изградите фундаментите, посочени по-горе.
- Програмният език
Стигнахме и до момента за програмния език. Тъй като вече уточнихме какво представляват различните парадигми, този път ще разгледаме друг техен аспект – „нивото“ на езика. „Нивото“ е условен термин, чрез който ние посочваме дали коденето чрез съответния език изисква по-директна настройка и контакт с хардуера или не. Ако езикът е от по-ниско ниво това означава, че програмирайки, вие ще трябва да определяте детайли като какви части от паметта да използва вашата програма, как да ги използва.
Освен с програмата, ще трябва да отделите време и да разполагате с умения, необходими за оптимизация на вашата програма, а също така те изискват и повече код, за да опишете дадено логическо действие. Обратно – при езиците от високо ниво акцента пада върху самата програма и нейната логика, а вие почти не се занимавате с оптимизация, също така кодът е доста по-малко.
От кой програмен език да започна?
Зависи от вас. Най-напред трябва да сте наясно със себе си. Ако имате някакъв точно-определен интерес в IT сферата, разберете кой програмен език ще ви свърши работа. Ако обаче просто искате да се квалифицирате, залагайки на популярна технология или просто да се пробвате в програмирането – имайте в предвид, че в индустрията се търсят най-вече разработчици с езици от високо ниво, като C#, Java, Python, а ако имате интерес в уеб разработката –HTML, CSS, JavaScript и PHP (който е по-подходящ за надграждане на вашите HTML и CSS умения).
Езици, които не са подходящи за начинаещи програмисти – това са езиците, които са ограничени до специфична технология (като Swift, Objective C и други). Също така езиците от ниско ниво като С++, С, а да не говорим за Assembly Language - са неподходящи за начинаещи. Те са трудни, имат строго съответствие между езика и машинните кодови инструкции, а също така и нямат голямо търсене от страна на бизнеса. В същото време обаче те ще ви дадат много по-голям контрол над програмата и нейното изпълнение от страна на хардуера.
Кандидатствайте сега за програмата за софтуерно инженерство на Софтуерния университет и поемете по своя път в света на програмирането! Тя ще ви предостави всичко необходимо, за добър старт в професията програмист. От вас се изисква само желание и постоянство.