Как да откажем някого от информатиката

Може би най-актуалната тема в момента в Софийската долина (а и в Силициевата) е образованието в ИТ сферата на всички нива – от гимназията и обучението по информатика, през университетите, до алтернативното образование чрез академии, хакер училища, алтернативни университети, курсове в образователни центрове – присъствени и онлайн. Информационно обслужване АД дори се включи в Europe Code Week международната програма за обучение по програмиране.

Интересен момент в последно време беше и поредната “социална бомба” на правителството за намаляване на часовете по информатика в гимназията. Точно обратното на това, което се случва по цял свят – все по-сериозно застъпване на обучението по информатика в училищата. Сериозно впечатление направи изказването на президента на САЩ Барак Обама – “Don’t just play your phone, program it.” (Не си играйте само на телефона, а го програмирайте). Ние, разбира се, имаме по-добри идеи, като например да премахнем информатиката от учебната програма (предполагам в Северна Корея не се учи информатика също…). Но нека оставим настрана тези социални експерименти. Образованието по информатика в България има и един друг сериозен проблем (както и другите дисциплини).

Проблемът е, че учениците и студентите не знаят “Защо да го учат това“.

Информатика в гимназията

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

  • Основите на няколко езика за програмиране (Pascal и C/C++);
  • Основните типове данни;
  • По-сложни структури от данни – стекове, опашки, листове, графи и т.н.;
  • Как да решаваме сложни задачи като използваме основни (а и по-сложни) алгоритми;
  • И много други интересни неща, свързани с информатиката и програмирането.
Супер якия син екран на Borland C++.
Супер якият син екран на Borland C/C++ editor.

Но! Не научихме нещо много, ама много важно. Не научихме защо го правим всичко това! Никой не ни казваше защо изобщо трябва да правим тези неща. Кой в реалния свят се интересува от графи, указатели, матрици и сортиране на масиви? На кой му пука, че можем да принтираме измислена матрица по някакъв изчанчен начин? Това, което виждахме, беше, че правим някакви “неща” на един син екран (невероятният Borland C/C++ editor). След което тези неща показваха (след малко сметки, разбира се) на един още по-ужасен екран (конзолата) разни числа… Но никой, или поне малко хора, разбираха защо изобщо го правим това нещо. Никой не ни обясни защо светът изобщо има нужда от това. Това незнание отказа много, ама много хора от програмирането. Нещо повече, малкото, които не отказа, бяхме до известна степен “просветени” от други ученици, които просто бяха чули или видели какво може да направиш с програмирането. Трудно е да си мотивиран да правиш нещо, без да виждаш какъвто и да било смисъл в него,  без да виждаш нищо от реалния свят в него.

Апел към всички, които преподават информатика и програмиране под една или друга форма – ако искате да откажете някого от програмирането – дайте му да смята указатели, да върти цикли и да принтира матрици на конзолата. Успехът ви е гарантиран. ;)

Тази тенденция продължава и в първи курс в Университета. Отново беше важно да се научим да принтираме матрици, да боравим с указатели и други “важни” гимнастики – например да напишеш цяла програма на един ред, така че никой да не може да я прочете. ;)

Оказа се, че отговорът на въпроса “Защо на някой му е потрябвало това?” не бе на дневен ред дори и на университетско ниво.

А как да запалим някого

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

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

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

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

Angry Birds
Играта “Angry Birds”

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

By Miroslav Miroslavov

Основател на 'платформата за управление на офиси' - Office R&D. Основна движеща сила на www.sofiavalley.com.

33 comments

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

  2. Поздравления за статията! Чудесно напомняне!
    @Ivan Може би ако ги питаме, самите те ще си припомнят защо са го учили и ще запалят и нас ;)

  3. Мисля си, че проблемът е по-общ и той е в това, че много деца ги отблъсква абстрактното познание. Защото да, можеш да направиш сухите алгоритми по-конкретни, като хайпваш децата с игри, автоматизация, роботи… но по тази логика това трябва да правят и програмите по химия, физика, математика, история … Колкото и тъпо да звучи, ако децата не си задават прекалено много въпроса “а това защо ми е?”, ще е по-добре за всички предмети. Иначе съм много “за” хайпването, но то не трябва да е за сметка на останалите предмети и децата трябва отрано да се научат да не се боят от абстрактното познание. Прекаленото навлизане в строго практическите неща и търсенето на причина за всяко нещо в учебната програма е залитане към американския модел, а е много добре известно тази школа какви резултати постига. Справка – вижте резултатите от произволно състезание по програмиране.

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

      Факт е че “сухата, абстрактна материя” не е за всеки, и не е грешка че повече от половината се отказват. Решението е да има няколко алтернативни посоки за развитие, вариращи в математическите и хуманитарните си изисквания.

      1. Здрасти,
        Т.е. ти твърдиш, че в мобилните игри или в сайтовете не се ползват алгоритми… и дори не е програмиране?
        Програмистите програмират това, от което има нужда света (най-често). Това, че има добри платформи, които да улесняват даден тип програмиране, далеч не значи, че това не е програмиране. :)

        Поздрави

      2. Здравей, не твърдя това.

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

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

        (Същото важи за писане на прегледен код, работа в екип и т.н.)

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

      3. Хъм, от доста време се занимавам с уеб, и въобще не мога да се съглася с теб, първо един програмист не е длъжен да комуникира с клиенти за това си има PM-и (осен ако не е фриленсър), второ .psd и .css са една нищожна част от уеб програмирането, PHP, Java, JavaScript и един куп .Net езици, ако за теб уеб е само .psd и css, то предполагам ако програмираш, още си правиш сайтовете в табличен вид.

      4. Предполагаш че ако единственото което знам е CSS, то не знам CSS добре? Спри да пишеш, че се излагаш пред хората. Това с “табличния вид” е толкова остаряла уеб обида че си личи как за последно си пипал уеб през 2009-та.
        Поне кажи “сигурно ползваш само bootstrap” или “сигурно бъркаш JS с jQuery”, че да не изглеждаш смешно.

        Лесно е да си кажеш “не съм съгласен с този, значи сигурно е глупав”. Само че правиш аматьорска грешка подценявайки другите.

        Да, умея всички неща които изброи. Да, мнението ми остава непроменено. Да, наистина най-важното е да умееш да комуникираш с хора – в частност с клиенти. И, да, ако знаеш *едно* нещо за уеба в днешно време, това трябва да е psd->css.

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

      6. Предполагаш че ако единственото което знам е CSS, то не знам CSS добре? Спри да пишеш, че се излагаш пред хората. Това с “табличния вид” е толкова остаряла уеб обида че си личи как за последно си пипал уеб през 2009-та.
        Поне кажи “сигурно ползваш само bootstrap” или “сигурно бъркаш JS с jQuery”, че да не изглеждаш смешно.

        Лесно е да си кажеш “не съм съгласен с този, значи сигурно е глупав”. Само че правиш аматьорска грешка подценявайки другите.

        Да, умея всички неща които изброи. Да, мнението ми остава непроменено. Да, наистина най-важното е да умееш да комуникираш с хора – в частност с клиенти. И, да, ако знаеш *едно* нещо за уеба в днешно време, това трябва да е psd->css.

    2. Здравей и благодаря за коментара. :)
      Не става дума за “хайпване”, а за това да видиш реално приложение на нещата, които учиш, в реалния живот. Да учиш нещо само защото така е решил някой, че е трябва не мисля, че е особено положително. Да, това ще доведе до някакви резултати в определен брой ученици, които с и без училище ще успеят и ще са много добри във всичко, но масово не мисля, че ще има добри резултати. А и то всъщност няма.
      Много добър пример с Американския модел. Но. Сигурно си забелязал, че 95% от технологиите се създават в САЩ и ИТ секторът там процъфтява. За това става дума, а не за колко гениални деца са се родили в дадена страна, които могат да решават супер тежки алгоритмични задачи.

      Поздрави :)

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

        Ако погледнем официалните доклади за образованието ще видим че Американското е едновременно много по-скъпо от средното ниво, и много по-некачествено. В кажи-речи всяка от 30-тината категории са по-зле.
        Линк: http://www.oecd.org/edu/United%20States%20_EAG2013%20Country%20Note.pdf

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

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

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

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

  4. Едно време един съученик непрестанно се нервеше от алгебрата и питаше постоянно “за кво ми е да я уча тази алгебра? за какво ще ми трябва в живота?” И един ден му обърнах внимание на приказките и се замислих за секунда и му казах “1во за да си годен за университет понеже това са изискванията и 2ро за да ти се развие малко мисленето” Еми и аз съм се питал защо за разни неща, но никой не ми е отговарял и мога да заявя, че и в чужбина е така от личен опит. Колкото до програмирането то си е малко като мрежовия маркетинг. Много българи не знаят нищо или пък го сравняват с поредната измама. Истината е съвсем друга и това в чужбина го знаят много добре. Сега са пламнали из България всякакви компании предлагащи различни неща, а навън има още по- голям избор от стоки. Докато опитомените български мозъци от подкупи, медии и мания за величие и всезнание не се премахнат и господ да слезе на земята пак няма да вярваме и ще имаме съмнения. Поради което трябва да престанем да бъдем лакоми егоисти. Обединението прави силата.

  5. Статията прави добър анализ и казва какво НЕ бива да правим. Това е лесно… ;)

    А питали ли сте се какво и как да променим?! :)

    1. Хей, втория абзац е точно за това как да запалим някого. Сиреч училите ако се променят и преподават по-мотивиращо, с повече примери от реалния свят, на учениците и студентите, биха постигнали много по-добри резултати. :)

  6. Програмиране има за всеки. Функционаллно програмирана на C, C++ (макар да е обектно-ориентиран език), Fortran, Python, OpenCL, CUDA C и други функционални езици стоят в основата на почти всеки обектно-ориентиран език – Java, .NET, PHP, C++ и се използват за различни цели. Например няма да тръгнеш да пишеш Real-time приложения на обектно-ориентиран език, не че не можеш, но в тези системи е важно бързодействието и да има възможно най-кратки извиквания на функциите, а не колко красиво и привлекателно изглежда графичния интерфейс. Но е вярно, че като встъпление в информатиката или информационните технологии, трябва да се каже какво можеш да постигнеш с тези познания и да покажеш какви програмни сфери съществуват. Например имам сестра, която е по-малка от мен, в училище те изучават “работа с компютър” вече почти 2-3 години, а още не са ги научили на елементарно действие като копиране или поне основно форматиране на текст.

  7. Доста от преподавателите имат много ограничени познания по информатика. Да не говорим, че поради недостатъчни бюджети някои учители (математици) са принудени да се преквалифицират и да преподават едновременно математика и информатика. Ако не го направят рискуват да си загубят работата. И така се налага учител, който е 40+ годишен да учи информатика, за да преподава – можете да си представтите колко качествено ще преподава този учител : )
    Силно се надявам информатиката да започне да се препоадава още в ранните класове и да преподават по-квалифицирани учители. В противен случай все повече хора ще се отказват от тази специалност…

  8. Това според мен не е така. Просто, ако човек иска да стане програмист – той ще стане, без някой да му показва колко е интересно и т.н. – и обратното. Няма абсолютно никакво значение, дали някой ще покаже на децата какво могат да правят, ако станат програмисти. Програмирането бих казал, че е като музиката – не всеки може да стане музикант, а и не всеки иска, колкото и да му обясняваш колко е готино да можеш да свириш на нещо – просто ако човек има желание и талант, той ще се научи :)
    Аз примерно, до преди да ми купят компютър, бях ходил няколко пъти в компютърни зали и молех другите да ми пуснат някоя игра, защото не знаех как. Само няколко месеца по-късно, след като вече имах компютър, знаех основите на Pascal (пишех си някакви интересни програмки)… само някой ми беше споменал за паскал и никой не ми е казвал колко е интересно (в училище го учихме няколко години по-късно).

    1. Виж, ако искаш да се чувстваш талантлив…кой съм аз да го оспорвам. :)
      Това с желанието е ок. Много хора имат желание и постигат доста. Например, ако вземеш една Индия, дори 1% да са талантливи и могат да се справят сами… ти пак получаваш милиони програмисти и чудовищен ИТ сектор.
      Но в държавичка като България, ако разчитаме да имаме ИТ сектор с всичките 100 талантливи програмиста… :)
      Аз пък си мисля, че всеки може да се научи да прави почти всичко. И да всеки може да стане музикант. Просто едни ще са малко по-добри, други ще са още по-добри, но всички ще са музиканти и ще свират правилно хубаво. Просто не всички ще са Андреа Бочели…но не мисля че и ИТ сектора ни има нужда от хиляди Бил Гейтс-овци и Марк Зукеберг-овци. :)
      Поздрави

      1. Телерик академията е пример за точно това – вземат всякакви тояги и изкарват цяла серия пръчки – някои по-добре, други по-зле :)

        Факт е че това са посредствени програмисти които могат да следват добре спецификация и да набират “коТ” като хамстери в колело. ДА! Бранша в БГ има нужда от много такива хора в момента.

        Не всеки програмист ще стане гуру.

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

    ПС: Поне на 5 места в тази статия си използвал погрешно кой/кого, някой/някого и производни. Не го казвам, за да се заяждам, но особено като стои в заглавие и bold много се набива на очи.

  10. Абсолютно вярно и не само от гледна точка на информатиката. В 99% от нещата, които се преподават в образователните институции липсва обяснението къде е връзката с истинския свят, което отказва хората да правят каквото и да е. А в дългосрочен план прави и практическото приложение на натрупаните знания по-трудно, нещо което си говорим от години че ни куца. Ефектите върху концентрацията, мотивацията и резултатите на студентите могат да бъдат много положителни, ако във всеки урок се отделят по 5 минути на въпроса “Защо?”. Дано повече преподаватели да се ориентират към това вместо само да се оплакват, че преподават супер актуални неща, пък никой не ги разбира (duh!, като не обяснявате не знам какво очаквате)…

  11. На истинските програмисти им е НАИСТИНА интересно “да принтират матрици, да боравят с указатели и да напишат цяла програма на един ред, така че никой да не може да я прочете” просто така за спорта :) Ако за някого това не е интересно и има нужда да му се обяснява защо го прави, най-вероятно трябва да се насочи в други области :)

  12. нека да откажем някой от информатиката с математика (ФМИ)

    1. Математиката е от изключителна важност за програмиста. Трай там.

  13. Ако учителките, университета или нещо друго ви е “отказало” ви е направило услуга, защото не сте за тази работа.

    1. Не мога да съм по-несъгласен. :)
      И ако починеш от сериозна, наследствена болест е положително за човечеството от еволюционна гледна точка, защото очевидно не си се приспособил… :)

  14. Проблемите са добре изложени, но не важат само за информатиката. Във всички сфери на образованието положението е такова.
    На времето, преди 30 години, когато желаещите бяхме повече от компютрите “Правец”, пред компютърните стаи ставаха опашки. Тогава компютъра беше нещо ново, непознато и естествено интересно. Сега ценностите се измениха и единствената притегателна сила са парите, а те за наше щастие стоят зад Информационните технологии. Те ще си останат и основния магнит за бъдещите програмисти.

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

  15. всъщност може без… “Естествено няма да мине без указателите, рекурсията и решаването на понякога хамалски задачи.”

  16. Пичове, нещо сте се объркали… В университета не трябва да те обучават какво можеш да правиш с технологиите – ти ако не знаеш и не се интересуваш сам, нямаш работа там. Не преподавателят трябва да те запали по технологиите – това е филтъра в нашата сфера, това което отказва хората от програмирането. Същото важи за всяка друга научна материя: физика, химия, математика … Ако ти сам нямаш представа, какво и защо го правиш в университета – преподавателят ти ли е виновен?

Leave a comment

Your email address will not be published. Required fields are marked *