10 умения, нужни на програмистите в следващите 5 години
Софтуерната индустрия е изключително непредсказуема. Някои технологии се променят толкова бързо, че докато решиш да я ползваш, да я усвоиш и вкараш в употреба, и тя вече е остаряла. Друг път “експерти” предвиждат бързата смърт на някой “остарял” механизъм, а се оказва, че той има още дълъг живот в служба на човечеството.
Затова предвижданията за бъдещето в софтуерния бизнес са ми много забавни. От една страна наистина дават някакви идеи и насоки в краткосрочен план, а от друга – позволяват ни да си развихрим въображението и да си пофантазираме за по-далечното бъдеще.
Една такава статия представя 10-те най-важни умения, които ще бъдат нужни на софтуерните разработчици в следващите 5 години. Според автора, това са:
- Една платформа от “голямата тройка” (.NET, Java, PHP)
- Богати интернет приложения
- Уеб програмиране
- Уеб услуги
- Умения за общуване (soft skills)
- Един динамичен или един функционален език за програмиране
- Гъвкави методологии
- Познания за предметната област
- Професионална “хигиена”
- Програмиране за мобилни устройства
Авторът хитро е избрал предвижданията си само за срок от 5 години, за да бъдат по-реалистични, но от друга страна, в някои от тях няма нищо радикално. Ясно е, че днес сигурно над 90% от софтуерните проекти се разработват на .NET, Java или PHP, така че никак не е трудно да се предвиди, че този пазарен монопол ще продължи поне още 5 години. Дори и да се появи някаква революционно нова платформа, тя не би могла за толкова кратко време да измести тези гиганти от пазара.
Под “богати интернет приложения” авторът разбира предимно Flash и подобните нему технологии. Тук би могло да се поспори. Тези технологии не съществуват от вчера и все още не са успели да се наложат масово. Аз лично ги намирам неудобни за ползване, а в интернет все още важи максимата, че “съдържанието е цар”. Не виждам причина това да се промени в следващите години.
“Уеб програмиране” пък означава познания по HTML и CSS. Днес в по-големите компании има доста тясна специализация и онези, които специализират в CSS не се занимават с програмиране на .NET например. Същото се отнася и за функционалните езици (т. 6). Не мисля, че е възможно всеки програмист да притежава всички изброени технически умения, а и не е нужно. Нещо повече, липсата на конкретна специализация би могла да създаде впечатлението, че човекът е разпилян и да бъде пречка за намирането на добра работа, доколкото доказаният опит в една определена област говори за постоянство и дълбочина на знанията.
Безспорно, уменията за общуване придобиват все по-голямо значение в днешната епоха на развити комуникации и образът на вмирисания, брадясал програмист-интроверт, който с денонощия не излиза от стаята си, ще остане само като забавен спомен и легенда от миналото. Гъвкавите методологии наистина успяват да постигнат все по-добри резултати, но и тук, техният успех се дължи на откритата и активна комуникация – както вътре в екипа, така и с клиента и с другите заинтересовани от проекта лица.
Оттук идва и другото следствие, че програмистите трябва да бъдат по-компетентни в бизнес областта, която обслужват, за да могат по-добре да разбират проблемите на възложителя и да предлагат по-адекватни решения. Времето на програмистите-хирурзи, които чакат да им подадат скалпела (разбирай някой да им напише подробна техническа спецификация) и едва тогава да започнат да си вършат работата, вече е отминало. Програмирането отдавна не е забавление за шепа откачалки, а е бизнес като всички други и успехът на един проект идва само когато са удовлетворени бизнес нуждите на клиента.
В крайна сметка не е толкова важно дали авторът е прав или не и дали ще се сбъднат неговите “пророчества” или не. Важното е да се замислим над това накъде се развива нашата професия и да развиваме в себе си онези знания и умения, които ще ни позволят да продължим своята кариера в избраната област. Софтуерната индустрия е толкова динамична, че не можем да си позволим да “се успиваме”, защото много скоро ще се окажем извън играта.
Ако харесвате статиите в този блог и се интересувате от тематиката, която разглеждаме, за да си гарантирате, че няма да изпуснете публикация, абонирайте се за съдържанието му чрез RSS feed или по имейл.
10 най-важни умения, според мен са прекалено много. Аз обаче не видях такива неща в статията, която си линкнал, там става въпрос за съвсем други неща. Да се върнем на списакът от 10 умения обаче.
Нереално според мен е да се очаква от добрият програмист да може толкова много неща. Ако е включил толкова много в резюмето си, аз не бих го взел насериозно, въпреки че и такива хора има. Според мен е важно да се наблегне над комуникативните умения. Те на всеки човек са крайно необходими, жалко е че в училище на най-важните неща не ни учат.
Другото важно е, да се фокусираш върху технология/пазар и да изградиш имидж на експерт в тази област. Не е много трудно да се направи, а ползите са големи, защото е малко вероятно да останеш без работа. Например ставаш експерт в областта на мобилните устройства и не обръщаш внимание на останалите неща, защото ти губят времето и няма как да си добър във всичко.
Ангел, много ти благодаря за коментара! Напълно споделям твоето мнение.
Колкото до линка – грешката беше моя, че бях сложил връзка към друга статия. Вече е оправено!
#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-то, като можеш да се възползваш от библиотеките, с които работиш ежедневно. Да, има доста различни неща, но се базираш на позната основа, което е много голяма стъпка напред 😉
Тези списъци с умения винаги са били пълна глупост. Не може да кажеш аз ако науча това, това и това и ще стана еди какъв си. Въпроса е да правиш това което ти харесва.
То изброените точки са си актуални и днес. Въпреки че някак си ми напомнят на обявите за работа, които искат специалист по всичко. Важно и полезно е да се има знания по съответните платформи езици (някъде бях чел статия “How JavaScript make me a better Java developer”). Dzev, май го каза най-добре.
п.п. Според мен в близките 5-10 годни ще е времето на динамичните езици и особено ми е интересно JVM базираните езици като jruby и clojure, до къде ще стигнат. Но кои знае.