Много хора се опитват да разберат дали искат да програмират, какво правят програмистите в ежедневната си работа, какво изобщо могат да правят с програмирането. Но те често не успяват да разберат поради недостига на такава информация - бих ги нарекъл „първоначални“ или „започнете тук“ статии. Ако искате да разберете дали този вид дейност ви подхожда или какво ще правите, какво може да правите, какво е възможно, какво не и откъде да започнете, тогава продължете да четете.

TL;DR: изберете област, която ви интересува, научете основите, започнете да създавате истински, но малки проекти. Практикувайте колкото е възможно повече. След това практикувайте повече.

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

Как изглежда програмирането?

Програмирането е процес на комуникация с машини, който ни позволява да им обясним какво трябва или не трябва да правят в определени ситуации. Изглежда, че говорите на странен език на машина, но по някакъв начин тя ви разбира. Освен това хората, които знаят езика, могат да прочетат инструкциите, които сте дали на дадена машина. Има много такива езици. Някои програмисти „говорят“ няколко от тях.

Резюме: програмирането казва на машините какво да правят.

Какво можеш да направиш?

Чрез управление на машини можете да създавате невероятно интересни и сложни програми/системи, които опростяват рутинните задачи. Или прави нещо забавно. Цялата електроника е програмирана да ни помага в нашите рутинни задачи. Автоматична крушка, която светва, когато се приближите? Програмиран! Можете дори да програмирате магически светове вътре в машина. Уебсайтове, например, или видео игри. Освен законите на физиката и технологичния прогрес, вие разчитате на въображение и умения, за да създадете нещо удобно.

В момента имаме милиарди машини, които чакат да направят нещо. Това е вашият смартфон, който ви чака да отворите браузър, за да търсите статии „как да започнете да програмирате“. Вашият Wi-Fi рутер очаква да обработи такава мрежова заявка, той пита други машини по интернет (наричани също сървъри) дали имат такава информация. Тези сървъри обработват заявката и изпращат информация обратно. Всички те са програмирани да изпълняват определен набор от задачи.

В крайна сметка има милиарди машини, които чакат да им дадем полезна работа в облак! Само си представете какви системи можем да изградим върху такова количество компютри. Нека се върна към простите думи. И така, какво мога да направя аз като програмист?

  • Създавайте роботи. Вземете детайли, сглобете ги, програмирайте робот. Това се отнася не само за роботите в конвенционален смисъл, но и за всички устройства, които могат да бъдат програмирани. Да речем, умни домашни устройства. Дроновете. Има достатъчно място за летене на мисълта.
  • Създавайте мобилни приложения. Подобни на тези, които използвате всеки ден на вашия смартфон.
  • Създавайте уеб страници. Сложни приложения или уебсайтове като лични блогове, каквото и да е. Ще опиша този по-подробно.
  • И т.н.

Какво правят програмистите в работата си?

Ще опиша вид работа, която върша – свързана с уеб приложения.

Малко "защо"

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

Някои фирми продават нещо онлайн. Следователно те се нуждаят от уеб страница (просто казано), която може да обработва заявките на клиентите, процеса на продажба-купуване и т.н.

Опитвам се да кажа, че има голямо търсене за създаване на уеб страници (или приложения, ако желаете).

Компаниите искат уебсайтове, добре. Тогава?

Те могат да се свържат с компаниите, които помагат за създаването на уебсайтове. Нека ги наречем дигитални агенции. Те имат опит, бизнесите искат уебсайтове, агенциите създават такива за пари.

Една дигитална агенция има програмисти, които да го направят. Те знаят как да направят уебсайт, те го правят. Това е цялата история в общи термини.

Има и други подобни видове агенции. Те продават само часове на програмисти, а не уебсайт. Някои от тях таксуват за един проект, което включва работа на програмисти, тестване, събиране на изисквания, управление на персонала и т.н.

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

Какво програмистите правят ежедневно

Има управление от страна на бизнеса, което казва на разработчиците какво искат *след това. Инженерите обсъждат плановете, как ще изпълнят желанията на бизнеса, кои аспекти изискват допълнително внимание и т.н. Така имаме TODO списък с всички задачи за конкретен проект. Всеки инженер взема един и започва да работи върху него.

Тази схема е опростена, но представя действителен набор от неща.

Задачите

Ако сте начинаещ, ще правите опростени неща. Старшите колеги очакват да им задавате много въпроси и често. Докато натрупвате повече опит, ще правите по-сложни неща и ще чувствате повече отговорност.

Ежедневните задачи варират значително в различните проекти. Но повечето от тях включват действително кодиране. Трябва да накарате нещо да работи по определен начин. Когато говорим за уеб приложения, има няколко категории програмисти.

Разработчици от предния край. Те правят нещата, които можете да видите, когато отваряте уебсайт. Тези елегантни блокове, текстове, модали, добре подравнени изображения, анимации на страница - колегите, които отговарят за това. Те знаят поне HTML, CSS, за да проектират статични страници. Простите. HTML е език за маркиране, който казва на браузъра *къде* да постави нещата. Например, искам да сложа навигационно меню в горната част на уебсайта си, след това 2 изображения точно отдолу и най-долу искам да видя текст, който казва „уебсайтът на Сергий“. Всичко това е възможно да се конвертира в HTML, така че браузърите да могат да интерпретират вашите желания точно.

CSS е език на стилове. Придава добър вид на суровите HTML елементи. Може да зададе цвят за текст или блокове, неговия размер, ширина, височина, всичко. С HTML и CSS хората създават статични уебсайтове. Под статични имам предвид тези, които не изискват допълнителна логика, като обработка на щраквания върху бутони, реагиране при двойно щракване на мишката върху конкретен елемент и т.н.

Уеб приложенията са уеб страници с допълнителна логика и сложност. Можете да ги видите през цялото време в интернет. Онлайн магазинът, в който купувате неща, е уеб приложение, защото управлява логиката на това, че избирате продукти, добавяте ги в количка, отваряте модал, който ви пита къде да достави продукта и други подобни. Този вид уебсайт изисква разработчиците от предния край да знаят език за програмиране, защото не можете да напишете такива инструкции в HTML или CSS. Най-разпространеният език за програмиране за това е Javascript.

За да обобщим, разработчиците от предния край създават визуална част на уебсайтове и също така изграждат логика, която казва как трябва да се държи визуалната част. Чакай, има ли други части от уебсайта? Да, задната част (сървър).

Разработчици в задния край. Те пишат логика, която прехвърля, валидира, дезинфекцира данни от предна (визуална) част, поставя ги в хранилище и ги извлича. Сървърът управлява данните. Защо изобщо имаме сървър(и), ако предната част (да я наречем FE) също може да има логика? FE е ограничен от среда на браузър, следователно не можем да правим всички възможни неща там.

Разработчиците от страна на сървъра (back-end, BE) обикновено пишат API за FE или други сървъри. Какво означава API? Нека разберем какво казва Wikipedia:

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

Това е като устата и ушите за хората. Аз говоря — ти ме чуваш и обратно. Такъв начин за обмен на информация.

За по-практичен пример, нека си припомним уебсайта на онлайн магазина. Искате да купите нещо там. FE събира вашите данни и след това ги изпраща на сървър, който проверява дали са валидни, проверява ви в база данни (регистриран клиент ли е? има ли абонамент?), след което говори със сървър на банка, който обработва плащането, ако има беше всякакъв. След всички тези проверки и манипулации, сървърът отговаря на FE, че сме получили това, клиентът е платил за продукта, нека му покажем благодарствено съобщение на уебсайта.

И така, FE говори с BE чрез API, който предоставя, те обменят информация и работят заедно. Някои хора знаят как да правят както FE, така и BE части.

Нинджи с пълен набор. Те имат уменията, необходими за FE и BE. По този начин им позволява да създават уеб приложения от нулата сами.

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

Какви неща да научите, за да започнете да кодирате

Практика, практика, практика.

И така, след като вече разбирате каква работа вършат програмистите, може би вече осъзнавате посока, която искате да изберете: FE, BE, мобилни приложения. Ако не го направите, това е ОК. Всичко, от което се нуждаете, е повече опит. Ще го получите.

Без значение какъв път сте избрали, трябва да започнете да изграждате истински проект. Под проект нямам предвид алтернатива на системата за доставка на Amazon. Всеки код, който ще напишете, може да се счита за проект. Може да имате основна теория, като познания по целеви език за програмиране или основи на компютърните науки. Ако нямате основите, това е ОК. Просто се впуснете в създаването на действителните неща. Това решава проблем, когато имате теория, която не знаете как/къде да приложите, въпреки че ни създава нов проблем. Без теория може да ни е трудно да разберем къде и какво трябва да търсим, когато правим действителното нещо. Ще се опитаме да намалим проблема.

Преден път

Зависи и какво ще правиш. Например, ако се интересувате от създаването на красив дизайн за статични уеб страници, HTML и CSS са достатъчни. За целта трябва да потърсите „HTML ръководство“, след което след всеки урок кодирайте нещо. След това потърсете „CSS ръководство“. Комбинирайте с HTML. Не е необходимо да изучавате всички HTML елементи там. <div>, <font>, <p> и т.н. са ви достатъчни, за да започнете. След това ще имате истински въпроси, които можете да търсите в Google. Същото за CSS, но има повече информация, която първо трябва да знаете, за да разберете какво можете да направите.

Ако се интересувате от създаване на уеб приложения, трябва да знаете HTML и CSS плюс Javascript. Първо ще ви трябват основите, като например как да напишете функция, да я извикате, да създадете променливи, да сумирате числа, да отпечатате низ и т.н. — само за да се запознаете с това, което е възможно. Частта DOM на Javascript ви позволява да комбинирате това, което сте научили, с манипулиране на уеб страница. Например трансформирайте червения блок на страница в син, ако натиснете бутон.

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

Какви проекти трябва да изберете? За предпочитане е те да са бързи и прости. Така виждате резултатите и не захвърляте обучението по кодиране.

Например, можете да започнете със създаването на лична уеб страница, където да поставите информация за себе си. Няколко необработени HTML блока с текст. Практикувайте с различни блокове и вижте резултата. След това започнете да добавяте стилове с CSS. Представете си множество подобни проекти, за да тренирате с HTML и CSS през следващите няколко дни/седмица.

След като вече знаете какво е възможно с HTML и CSS, научете основите на Javascript. Трябва да знаете как да кодирате, да речем, манипулатор за щракване на бутон - щракнете и страницата става червена. Измислете подобни задачи за вас и ги кодирайте. Сега трябва да можете да правите тривиални задачи с HTML & CSS и Javascript. Например създаване на проста страница с горен колонтитул, долен колонтитул, раздел със съдържание и добавяне на някаква логика там: щракнете върху бутон, появява се блок с въвеждане. Променяте въвеждането, заглавието на уеб страницата също се променя.

Тренирайте много с нови задачи, проекти. Не пропускайте практиката!

Заден път

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

Ще трябва да научите платформата Node.JS, която е сървърен Javascript. Прочетете/гледайте въвеждащите видеоклипове, за да научите основите: как да инсталирате Node и да напишете прост сървър, който може да слуша за заявките и да отговаря на тях. Интересуваме се от REST API, така че първият ви реален проект може да бъде създаването на сървър с 2 маршрута: `POST /messages`, който създава ново съобщение, и `GET /messages` връща всички съобщения, които сте запазили. Засега можете да ги запазите в паметта или във файл.

Ако се интересувате да станете програмист с пълен стек, можете също така да създадете уеб страница, която показва съобщенията и има функционалността за добавяне на ново съобщение.

Мобилен път

Тъй като говорим за Javascript, той ни позволява да създаваме мобилни приложения с рамка „React Native“. Обикновено разработчиците кодират на други езици, като Java (за Android) или Swift (за iOS). React Native позволява писане за двете платформи и дори за уеб и десктоп.

Не забравяйте да правите почивки. Пазете очите и гърба си в добро здраве!

Резюме

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

Последвай ме в Туйтър"