Какво е кодиране. Как и къде да научите кодиране? Как да изберем посока и език

И ще обясня защо.

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

Бързо напред шест години: Седя на летището в Будапеща и чета книга за HTML...

Шест години по-късно бях нает от стартираща компания в Северна Ирландия като универсален специалист. Да, изглежда, че отне известно време. Но колко точно? не мога да кажа точно. Но много. Митичните 10 хиляди часа? Не. Ако ме помолиха да дам приблизителна цифра, бих казал, че до този ден съм „кодирал“ около 8 хиляди часа. Технически погледнато, ако се вярваше на правилото за 10 000 часа, след 2 000 щях да стана експерт в тази област.

Но дали ще

Това успях да постигна за 8 хиляди часа. Настанете се удобно, тъй като моята история ще бъде дълга. Аз съм кодирал на следните езици: C, HTML, CSS, JavaScript, Java (Android), Swift, PHP, Ruby, Python, Chuck, SQL, работил съм със следните рамки: Node, Angular, Bootstrap, Foundation, React, Rails , CodeIgniter, Ionic и е създал целеви страници, Wordpress сайтове, решения за електронна търговия, съдържание за електронно обучение, сайтове Moodle и Totara, сайтове Mahara, Common Cartridge и SCORM пакети, Android и iOS приложения, хибридни приложения, вътрешни уеб приложения, електронни книги, списания , игри и допълнителни приложения за настолни игри. И така, накъде се насочвам?

Искам да кажа, че няма област като такава, така че задачата да станеш експерт в нея е непостижима. Кодирането не е област. Компютърни науки – да, но е съвсем различно.

Кодирането е това, към което президентите, учителите и родителите тласкат младото поколение, сякаш водят овцете в златни полета на възможности.

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

15 години по-късно кодирането се превърна в поп културна версия на програмирането и сега населението има големи надежди за бъдеща армия от кодери, благодарение на които ще имаме контролирани от AI домове, трафик, търговия на дребно, развлечения и революция в медицината , индустрия и секс - просто лудница, няма друга дума. И всичко това, защото програмирането е изложено за кодиране и на теория е лесно за научаване... Но това е толкова далеч от истината...

Източник: LifeHacker

Нека го разберем. Митът, че всеки може да научи един от езиците за програмиране само за няколко часа, взет като "факт", е верен само до определен момент и този момент идва в ранен етап на учене. Наистина един език може да се научи за един ден. Като цяло, ако си поставите за цел да станете полиглот в програмирането за един месец, докато имате работа, можете да овладеете 8-10 езика, ако учите през уикендите. Но тук е уловката. Всеки език за програмиране има свои собствени библиотеки, както и синтактични функции и всичко това не може да се научи лесно, бързо или през уикенда. Всъщност в реалния свят езикът за програмиране няма да бъде основният проблем.

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

Само защото сте научили език, не означава, че знаете как да напишете програма. Добавете към това безброй рамки, плъгини, библиотеки, предпроцесори, постпроцесори, стандарти за кодиране, индустриални стандарти, тестово задвижвана разработка (TDD), поведенческа разработка (BDD), системи за управление на съдържанието, версия на файлове, непрекъсната интеграция (CI), версия управление и разгръщане, отстраняване на грешки, билети, каскадни модели - и scrum методи и комбинации от тях, и не съм сигурен какво друго да назова. Изводът е, че концепцията за "кодер" обхваща почти всичко, споменато по-горе. Програмирането засяга само малка част. Важно, но все пак малко.

Програмирането обаче продължава да се опростява...

Apple пусна Playgrounds, MIT пусна Scratch, а Lego подготвя Boost и всички се опитват да продадат кодиране на по-младото и по-младо поколение, сякаш искат да запълнят работните места на нови програмисти през 2020-те.

Виждам го така: „Не се притеснявайте за кода, вземете тези виртуални парчета пъзел и това е всичко, можете да програмирате.“ Ако това беше вярно. Ето какво трябва да знаете за програмирането: базирано е на текст. Винаги е било и ще бъде за много години напред. Децата, които играят Lego Boost, Playgrounds или Scratch, няма да станат по-опитни програмисти до 22-годишна възраст от тези, които са започнали да програмират на 16 и са работили с истински език за програмиране. Всъщност откъде идват такива очаквания? Не мисля, че детето ми ще се научи да си изкарва хляба до 22 години. Но ако учи кодиране 6 години, тогава гарантирам, че бързо ще си намери работа.

Детски площадки от Apple.

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

Добрият код е добре поддържан, за многократна употреба и тестван. Следващите стъпки ще покажат на вас и/или вашия екип за разработчици как да се справите с различни задачи по програмиране и да поддържате всичко възможно най-добре. Ще ви запозная с „най-добрите практики“, които да ви помогнат да напишете добър код и да помогна на вас и вашия екип да бъдете щастливи и ефективни.

1. Използвайте стандарти за кодиране

Лесно е да се пише лош, неорганизиран код, но трудно да се поддържа. Добрият код обикновено поддържа някакъв стандарт за именуване на променливи, форматиране и други. Такива стандарти са полезни, защото правят нещата условни за тези, които прочетат кода след това, включително и за вас.

Можете да създадете свои собствени стандарти за кодиране, но е по-добре да използвате един широко използван. Използвайки стандарта за кодиране на Zend Framework, или стила на кодиране PSR-1, за другите ще бъде по-лесно да се адаптират.

2. Използвайте коментари

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

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

3. Рефакторинг

Рефакторингът на код също е добър навик за продуктивните разработчици. Вярвате или не, трябва да преработвате кода си всеки ден, в противен случай нещо не е наред с него! Рефакторингът поддържа кода ви в добра форма, но какво трябва да преработите и как?

Трябва да преработите всичко от архитектура до методи и функции, имена на променливи, броя на аргументите, предадени на метод и други подобни.

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

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

4. Избягвайте глобалния код

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

В идеалния случай не трябва да дефинирате никакви блокове глобално. Превключващи оператори, try-catch, цикли foreach, цикли while и други подобни трябва да бъдат описани в метод или функция. Методите трябва да бъдат описани вътре в класовете, а класовете и функциите в пространствата от имена.

5. Използвайте смислени имена

Никога не използвайте имена като $ k, $ m и $ test за вашите променливи. Как може да се чете такъв код в бъдеще? В добър код имената на променливи, методи/функции, класове; трябва да носи семантичен товар. Някои добри имена на променливи са $ request, $ dbResult и $ tempFile (Зависи от вашия стил на кодиране).

6. Използвайте смислени структури

Структурирането на вашето приложение е важно; не използвайте сложни структури, винаги ги поддържайте прости. Когато наименувате директории и файлове, използвайте конвенция за именуване, която сте договорили с екипа, или която следва стандартите за кодиране. Винаги отделяйте четирите части на PHP приложение една от друга - CSS, HTML шаблони, JavaScript, PHP код - и за всяка се опитайте да отделите библиотеките от бизнес логиката. Също така е добра идея да запазите йерархията на директориите възможно най-малка, така че ще ви бъде по-лесно да търсите части от кода и да навигирате в структурата.

7. Използвайте системи за контрол на версиите

В миналото добрите екипи за разработка се доверяваха на CVS. Сега имаме вариация на наличните решения. Управлението на промените и ревизиите трябва да бъде просто, но ефективно, така че изберете коя система за контрол на версиите работи най-добре с потока на вашия екип за разработка. Предпочитам да използвам разпределена система за контрол на версиите като Git или Mercurial; както безплатни / с отворен код, така и много мощни. Ако не знаете какво е контрол на версиите, препоръчвам ви да разгледате поредицата Въведение в Git на Шон Гъдгстън.

8. Използвайте инструменти за автоматично изграждане

9. Използвайте кодови документатори

За големи приложения, обхващащи множество класове и пространства от имена, трябва да имате автоматично генерирана документация за API. Това е много полезно и всеки от екипа ще знае какво е какво. И ако работите по няколко проекта едновременно, ще намерите тази документация за благословия, защото вероятно ще забравите особеностите на структурата и други разлики между проектите. Един такъв документален филм, който може да искате да разгледате, е DocBlox.

10. Използвайте Тестване

Има много инструменти, които наистина ценя, но тези, които определено ценя, са рамки, които помагат да се автоматизира процеса на тестване. Тестването (а именно системното тестване) е от съществено значение за всяка част от вашето приложение за милион долара. Добрите инструменти за тестване са PHPUnit и SimpleTest за модулно тестване на вашите PHP класове. За GUI тестване препоръчвам инструменти на SeleniumHQ.

Резултат

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

Повечето разработчици на безплатен софтуер работят на Linux или Mac, но поддръжката на Windows обикновено се прилага на остатъчна база. Работи - ами не става - нека портира този, който има нужда. В тази статия ще ви покажа как да създавате собствени изпълними файлове на Windows, без да имате тази система под ръка.

Най-новата версия на Python 2.7 беше обявена тази година, след което Python Software Foundation вече няма да поддържа клон 2.7. Много популярни библиотеки и рамки също отпадат от официалната поддръжка за Python 2 и редица дистрибуции на Linux вече не го включват в своя пакет по подразбиране.

Вероятно сте използвали услугите на virustotal.com повече от веднъж, за да проверите дали двоичните файлове съдържат злонамерени функции или да тествате собствените си разработки. Тази услуга има безплатен API, който ще обсъдим в Python в тази статия.

Всяка възможност за невидим достъп до външния свят от хост в защитена мрежа е ценна находка за тестер за проникване. Един от последните налични пътища е NTP, протоколът за синхронизация на часовника. Неговият трафик е разрешен почти навсякъде, така че ще бъде отличен транспорт за данни. Ще ви покажа как да внедрите основен клиент и сървър в C #.

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

Може вече да сте се натъкнали на гласова идентификация. Използва се в банките за идентификация на телефона, за проверка на самоличността в контролните точки и в домашните гласови асистенти, които могат да разпознаят собственика. Знаете ли как работи? Реших да вляза в детайлите и да направя своя собствена реализация.

Преди това captcha с числа беше чудесен начин за премахване на ботове, но сега този вид почти никога не се среща. Мисля, че сами се досещате за какво става дума: невронните мрежи са се научили да разпознават такива captcha по-добре от нас. В тази статия ще разгледаме как работи невронната мрежа и как да използваме Keras и Tensorflow за реализиране на разпознаване на цифри.

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

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

Джулия е млад език за програмиране, предназначен предимно за научни изчисления. Неговите създатели искаха той да запълни нишата, заета преди това от Matlab, неговите клонинги и R. Създателите се опитаха да решат така наречения проблем на два езика: да комбинират удобството на R и Python и производителността на C. Нека видим какво са направили те. .

Forth се използва в различни области, включително PCI чипсети и космически кораби, а Павел Дуров ще използва подобен език в смарт договорите на криптовалутата TON. Без да се подлагат на големи промени, един от най-старите езици за програмиране позволява да бъдат въплътени много съвременни парадигми. И така, какъв точно е този загадъчен Форт?

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

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

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

Хакерите разработват мами, геймърите ги купуват, компаниите наемат инженери за разработване на нови защити. Хакерите отново намират вратичка и кръгът е завършен. В тази статия ще разгледаме как работят различните защитни методи (и дали работят!) И ще се опитаме да създадем наша собствена система за защита срещу измама.

В Linux, както знаете, много неща се реализират като файлове във файловата система. И ако не са приложени, тогава можете да ги приложите сами, като използвате FUSE. В Windows това е по-малко прието, но ако все пак наистина искате да монтирате нещо като файлова система, тогава е възможно. Ще ви покажа как да постигнете това с помощта на C # и библиотеката Dokan.

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

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

Борбата с кейлогъри с множество функции и защита срещу откриване може да струва десетки, ако не и стотици долари. Но кейлогърът не е толкова сложно нещо и ако желаете, можете да направите свой собствен и дори да избегнете откриване от антивирусни програми. В тази статия ще ви покажа как да направите това и в същото време ще практикуваме разработването на програми на C #.

В C ++ има такова нещо като динамична идентификация на тип данни (RTTI). Това е механизъм, който ви позволява да определите типа на променлива или обект по време на изпълнение. За да направи изпълнимия файл по-малък, RTTI е деактивиран в много проекти, което кара dynamic_cast и typeid да спрат да работят. Но все още има начин да се провери дали даден екземпляр на обект е извлечен от някакъв базов клас.

Статично въведените езици обикновено ви принуждават да пишете променливи типове по някаква причина. Но това не винаги е така: теорията и практиката на езиците за програмиране са напреднали значително, просто тези постижения не се приемат веднага от индустрията. Днес ще разгледаме езика OCaml и ще видим, че статичното писане не е непременно неудобно.

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

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

Сблъсквали сте се с различни протоколи в живота си повече от веднъж - използвали сте едни, други може би са обръщали. Някои бяха лесни за четене, други не можеха да бъдат разгадани без шестнадесетичен редактор. В тази статия ще ви покажа как да създадете свой собствен протокол, който ще работи върху TCP / IP. Ще разработим собствена структура от данни и ще внедрим сървъра на C #.

Ако пишете на Python, вероятно сте видели дефинициите на методите, увити в двойни долни черти в стандартните библиотеки. Тези „магически“ методи формират много от полезните интерфейси, които използвате през цялото време – например, когато получите стойност по номер на елемент или отпечатате нещо. Сега ще ви покажа как да използвате тези методи и във вашите програми.

Когато се пише софтуер, който взаимодейства с други приложения, понякога се налага прекратяване на изпълнението на процеси на трети страни. Има няколко метода, които могат да помогнат по този въпрос: някои са добре документирани, други се опитват да завършат необходимите процеси по по-строги начини, провокирайки операционната система да ги затръшне със сила. Ще ви покажа няколко начина за прекратяване и унищожаване на процеси в Windows.

Езикът, разработен по поръчка на Министерството на отбраната на САЩ и кръстен на първия в света програмист Ада Ловлейс, се използва активно за управление на самолети, влакове, космически кораби и други интересни неща. Нека да разгледаме езика без призмата на митовете и да видим как можем да се възползваме от него, дори ако все още не отиваме в космоса.

Вероятно сте се сблъсквали с емулатори на игрови конзоли и може би дори сте седели на тях повече от един час. Но чудили ли сте се някога как работи? Използвайки примера на NES, известен в Русия като Dendy, ще ви покажа как да създадете свой собствен емулатор. И в същото време ще се занимаваме с хитрата архитектура на тази конзола, която създаде невероятно добра картина за времето си и скромната си цена.

Сигурно сте чували за такъв клас злонамерени приложения като крадците. Тяхната задача е да извличат ценни данни от системата на жертвата, преди всичко пароли. В тази статия ще обясня как точно го правят, като използвам примера за извличане на пароли от браузърите Chrome и Firefox и ще покажа примери за C ++ код.

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

Способността за програмиране е едно от най-ценните умения, търсени в съвременния свят. И на практика няма значение какво точно кара човек да създаде кода: искрен интерес, финансови или кариерни съображения - тези, които знаят как да програмират, няма да останат бездействащи. Кодирането е много подобно на общуването на чужд език, така че в ранните етапи на обучение по програмиране начинаещите често се затрудняват. В същото време мнозина изпитват силен дискомфорт, но с времето всичко се подобрява и човек започва да кодира лесно, без силни психически разходи. Днес можете да намерите много книги и онлайн ресурси, с които можете да се научите да кодирате, но всяко самостоятелно обучение е свързано със стрес и негативни емоции - това винаги трябва да се помни, когато започвате да овладявате език за програмиране. Най-важното за начинаещия кодер е да не се откаже от изучаването на език наполовина, губейки всякакъв интерес към тази професия. И така, какво трябва да знае бъдещият програмист? Какви трудности го очакват по пътя към овладяването на полезни умения?

Програмни езици

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

Също така е много важно веднага да определите за какво трябва да знаете езика. Тъй като кодирането е много различно. Ако някой иска да стане софтуерен разработчик, тогава можете да погледнете към Java, а в случай на създаване на приложения за iOS, езикът Swift е по-добър.

Подходящ метод на обучение

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

Онлайн курсове по кодиране.Някои хора работят по-ефективно, когато им се казва какво да правят и редовно се проверява тяхната ефективност. А такива хора има много. Ето защо, ако начинаещият чувства, че има проблеми със самодисциплината, тогава той трябва да избере курс, където ще бъде постоянно мотивиран от проверки. Това е добра идея – толкова много хора се отказват да учат програмиране, разчитайки на силата на волята и ентусиазма си. Изучаването на кодиране самостоятелно не е за всеки, това винаги трябва да се помни.

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

Книги... Това е малко старомоден начин за изучаване на езици за програмиране в наши дни, но остава фактът, че през годините кодирането не се е променило много и това, което се казва в YouTube, не се различава много от това, което се казва в статия Книга. Но книгите имат неоспорима заслуга - те улесняват разбирането на логиката на езика, а това е изключително важно. На първо място, защото когато става дума за практическо обучение, никой не иска да прави това, което е непонятно или невъзможно. За да не се откажете от всичко наполовина, е задължително да четете книги по програмиране.

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

Фиксиране на успеха

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

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

Ясни условия за обучение

Когато става въпрос за кодиране, много начинаещи допускат често срещана грешка – опитват се да изпълнят куп задачи наведнъж и обикновено се отказват от всички, преди да приключат. Те започват да се интересуват от нещо друго, най-често от други задачи, така че прескачат от един проект в друг. Не правете това. Най-добре е да се движите по систематичен начин – да решите един проблем или да разберете примера, докато всичко стане ясно. Това е много прост принцип: едно по едно.

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

Докато обикновените потребители се страхуват да направят грешка и мразят, когато нещо се обърка, програмистът е в съвсем различна позиция. Грешките са част от работата му, и то много голяма част. Следователно начинаещият кодер трябва да се научи как да чете съобщения за грешки, без значение колко разочароващо може да е това. Тези съобщения съдържат много ценна информация, тъй като ви казват какво точно е пропуснато в процеса на създаване на кода. Трябва да сте подготвени, че подобни съобщения ще се появяват много често и няма да отидат никъде дори след приключване на изучаването на езика за програмиране. Не можете да отделите време да работите върху грешките - това е най-важната част от ученето. Освен това това е добра практика – след като разберете проблема, по-късно ще бъде по-лесно да избегнете много грешки. Съобщаването за грешки не е наказание; всъщност те са най-добрите приятели на кодера, които искат да го научат как да прави всичко правилно.

Комуникация с други програмисти

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

Правилен и грешен подход

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

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

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

  • CheckiO е игра, която можете да играете във вашия браузър и изисква решаване на проблеми с JavaScript или Python, за да преминете през играта.
  • CodeMonkey - основно за деца, но ако сте начинаещ, можете да научите някакъв код, като играете тази игра.
  • Codewars не е истинска игра, а по-скоро съвместно решение за решаване на проблеми за програмисти. Това е чудесен начин да овладеете кодирането, тъй като играта поддържа много езици.
  • Code Combat е онлайн платформа, където можете да научите как да кодирате, като играете истинска игра.

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

Заключение

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

1. Самостоятелно

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

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

FreeCodeCamp платформа за уеб разработка

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

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

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

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

Ако имате някакви затруднения в процеса на обучение или развитие, винаги можете да се обърнете към общности за програмиране като Toaster и Stack Overflow за всеки въпрос. Например, те ще ви помогнат да решите проблем, да изберете добър курс или да посочат грешки в кода.


Услуга за въпроси и отговори на технологични теми "Тостер"

Удобно е да усъвършенствате уменията си на специални сайтове, където можете да се състезавате с други програмисти, като решавате различни практически проблеми с помощта на код. Тези услуги включват Codewars, TopCoder и HackerRank.

Ако смятате, че развитието ви е в застой или искате да ускорите обучението си, опитайте следните опции.

2.С помощта на ментор

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

Разберете дали има разработчици, които познавате. Може би някой от тях ще иска да ви помогне. Ако не познавате такива хора, можете да ги потърсите в общностите за програмиране. Например, на същия "Тостер". Само менторските услуги не са евтини и никой не иска да прекарва много време с непознати просто така.

3. При преподаватели на "живи" курсове

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

Популярни рускоезични онлайн платформи, които се занимават със системно обучение на програмисти: Netology, GeekBrains и Loftschool.

Ако предпочитате да учите вътрешно, можете да потърсите образователни центрове, които преподават програмиране във вашия район. За съжаление такива заведения най-често има само в големите градове. Пример е компютърната академия "STEP", която има клонове в няколко държави.

4. В университета

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

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

Как да изберем посока и език

Има няколко направления в ИТ индустрията, всяка от които използва собствен набор от езици. Нека изброим основните направления в ред на нарастваща сложност:

  1. Уеб разработка... Популярни езици: JavaScript, PHP, Python, Ruby.
  2. Мобилно развитие... Популярни езици: Java, Swift.
  3. Разработване на игри и програми за настолни компютри... Популярни езици: C ++, C #, C.
  4. Големи данни, машинно обучение... Популярни езици: Python, R, Scala.

Какво да търсите при избора

За да направите правилния избор на посоката и по-специално езика, вземете предвид следните фактори: сложността на овладяването и количеството обучителни материали в мрежата, вашите лични предпочитания (какво точно искате да развиете) и търсенето на езика на пазара на труда.


Графиката на търсенето на езици на международния пазар на труда / research.hackerrank.com

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

Ако не можете да решите

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

Например Куинси Ларсън, основател на образователния ресурс freeCodeCamp, е JavaScript за всички начинаещи. Ларсън прави много прости аргументи:

  1. JavaScript е сравнително лесен за научаване. А за да напишете нещо и да го стартирате на този език, просто трябва да имате редактор на код и браузър.
  2. JavaScript е най-търсеният език на международния пазар на труда и има големи перспективи. Големи компании като Google, Microsoft и Facebook инвестират в екосистемата на JavaScript.
  3. JavaScript има много широк спектър от приложения: от уебсайтове и браузър игри до мобилни приложения.

Освен това около този език се е формирала голяма общност от разработчици. Големият интерес към JavaScript осигурява огромен брой курсове, книги и друго образователно съдържание.

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

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

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

Как да получите първия си опит и първата си работа

За да намерите първата си работа като програмист, трябва да имате портфолио. Това е проект, който сте създали, или по-скоро няколко, които демонстрират всичките ви умения за разработчик. Повечето от курсовете включват разработване на проекти, които могат да се впишат във вашето портфолио.

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

  1. Изпълнете множество поръчки за. Може да бъде на свободна практика или Upwork. Предложете услугите си безплатно, тогава първите клиенти ще дойдат при вас.
  2. Намерете съмишленици и създайте общ проект с тях. Хората се обединяват за такива цели в почти всеки образователен сайт, където има курсове по програмиране.
  3. Изберете курсове, на които организаторът помага при наемане на работа. Например в GeekBrains след обучение се отваря достъп до стажове от различни компании, включително и платени. GeekUniversity и STEP гарантират заетост на своите възпитаници.

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