10 умения, нужни на програмистите в следващите 5 години

programming code

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

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

Една такава статия представя 10-те най-важни умения, които ще бъдат нужни на софтуерните разработчици в следващите 5 години. Според автора, това са:

  1. Една платформа от “голямата тройка” (.NET, Java, PHP)
  2. Богати интернет приложения
  3. Уеб програмиране
  4. Уеб услуги
  5. Умения за общуване (soft skills)
  6. Един динамичен или един функционален език за програмиране
  7. Гъвкави методологии
  8. Познания за предметната област
  9. Професионална “хигиена”
  10. Програмиране за мобилни устройства

Авторът хитро е избрал предвижданията си само за срок от 5 години, за да бъдат по-реалистични, но от друга страна, в някои от тях няма нищо радикално. Ясно е, че днес сигурно над 90% от софтуерните проекти се разработват на .NET, Java или PHP, така че никак не е трудно да се предвиди, че този пазарен монопол ще продължи поне още 5 години. Дори и да се появи някаква революционно нова платформа, тя не би могла за толкова кратко време да измести тези гиганти от пазара.

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

“Уеб програмиране” пък означава познания по HTML и CSS. Днес в по-големите компании има доста тясна специализация и онези, които специализират в CSS не се занимават с програмиране на .NET например. Същото се отнася и за функционалните езици (т. 6). Не мисля, че е възможно всеки програмист да притежава всички изброени технически умения, а и не е нужно. Нещо повече, липсата на конкретна специализация би могла да създаде впечатлението, че човекът е разпилян и да бъде пречка за намирането на добра работа, доколкото доказаният опит в една определена област говори за постоянство и дълбочина на знанията.

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

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

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


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

9 Comments

  • Angel Kafazov says:

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

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

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

  • Ангел, много ти благодаря за коментара! Напълно споделям твоето мнение.

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

  • dzver says:

    #1 мислене. Никога няма да излезе от мода, колкото и да усъвършенстват “голямата тройка”.

  • Майк, за RIA апликациите е добре да вземеш предвид алтернативите на Microsoft и SUN на… как се превеждаха… ‘Богати Интернет приложения’. Последните 2 години големите vendor-и публикуваха респективно Microsoft Silverlight и JavaFX, които наподобяват до голяма степен поведението на Flash, като добавят и възможности от .NET framework или Java API-то, надградени с различни скриптови езици. За момента и двете платформи имат проблем с Linux (последно Silverlight апликация не можеше да бъде изпълнена под Linux, а за JavaFX няма официална среда за дистрибуциите).

    Така че може да очакваме развитие на двете платформи в скоро време, кой знае.

    За останалите неща съм абсолютно съгласен – но бих поставил уменията за общуване и желанието за развитие/обучение на първо място, тъй като ако те са на линия, въпрос на време е да се развият другите умения 🙂

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

  • […] и една интересна статия за 10-те умения, нужни на програмистите идните 5 години. Интересно ми е и вашето виждане на уеб […]

  • Мислех, че съм го казал по-горе, но все пак: програмният език трябва да е просто инструмент, управляван от знанията. Широко скроените кодери не се спират пред единия синтаксис, така че такива неща не ги главоболят. Има обаче един друг момент: едно е да минеш от един скриптов език на друг (или от един процедурен – на друг), но коренно различно е да се прехвърлиш от Visual Basic на Matlab примерно. Т.е. този тип програмиране е от съвсем различен вид и са ти необходими друг набор от знания и умения, за да вникнеш в него. На места се набляга на ООП, на други – обработка на изображения, на трети – математиката… Такива работи.

    Колкото до троицата flash-silverlight-javafx, идеята е, че за RIA сега си задължен да разучиш Flash платформата, ActionScript (или Flex, или някакви други съвместими езици). Новите 2 платформи надграждат .NET и Java API-то, като можеш да се възползваш от библиотеките, с които работиш ежедневно. Да, има доста различни неща, но се базираш на позната основа, което е много голяма стъпка напред 😉

  • diesel says:

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

  • Радослав Станков says:

    То изброените точки са си актуални и днес. Въпреки че някак си ми напомнят на обявите за работа, които искат специалист по всичко. Важно и полезно е да се има знания по съответните платформи езици (някъде бях чел статия “How JavaScript make me a better Java developer”). Dzev, май го каза най-добре.

    п.п. Според мен в близките 5-10 годни ще е времето на динамичните езици и особено ми е интересно JVM базираните езици като jruby и clojure, до къде ще стигнат. Но кои знае.

Leave a Reply

Your email address will not be published.