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

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

Къде живеят разработчиците?

Хвърляйки един поглед върху картата с географското разпределение на попълнилите проучването, забелязваме, че по-голямата част от разработчиците по света се намират в Северна Америка (САЩ и Канада), Европейския съюз и Индия. Това не е изненадващо, защото първите две дестинации са добре платени, а Индия е традиционна outsourcing дестинация. Недоумение буди фактът, че Китай е представен от долу-горе толкова разработчици, колкото и България – 0,75%. Твърде възможно е това да се дължи на “Великата китайска огнена стена”, на SegmentFault (китайски Stackoverflow клонинг) или, ако решим да сме конспиративни, просто броят на разработчиците в България да е сходен с броя сътрудници на китайските служби, които работят в направление Stackoverflow😊. Изводът е, че ако живеете в град в ЕС, САЩ или Канада с развита IT индустрия, то вероятно сте на правилното място.

В какви компании работят разработчиците?

Въпреки че технологичните гиганти (Google, Facebook, Amazon, Microsoft, IBM, SAP, Oracle и др.) наемат много разработчици, те съставляват само 14.1% от глобалния трудов пазар в бранша. Съществена част от разработчиците – около 40%, е концентрирана в малки и средни фирми (с 20 до 499 служителя). Това е индикатор за един сравнително жив и конкурентен пазар, който още не е комодитизиран от големите корпорации. Една възможна причина за това е, че нуждите на клиентите, особено при бизнес софтуера, са специфични за тяхната дейност и бизнес процеси и често имат “наследство”, което изисква индивидуален подход, който не скалира добре за големите технологични гиганти. Все пак, проучването казва, че в САЩ делът на големите работодатели е по-голям отколкото в останалата част от света, включително и в Европейския съюз, като явно те привличат и по-опитни разработчици. Причината за това би могла да бъде, че за разлика от ЕС (особено Германия и Франция), в САЩ на компаниите им е по-лесно да съкращават персонал. Малките фирми в САЩ навярно по-често се възползват от това, защото имат по-малки възможности за преструктуриране (малки проекти и бюджети). Това би насочило един опитен (семеен) разработчик към по-големите работодатели.

Голямата фирма често се свързва с повече стабилност, социални придобивки и възможности за изграждане на лична мрежа от контакти. Не са малко примерите за ex-Googlers, които след като са понатрупали пари, опит и контакти, правят успешни стартъпи. Звучи добре, но има и опасности. След 5-6 години на комфорт и еднообразие, разработчикът може да навлезе в застой и по-трудно да се адаптира към нови предизвикателства. Не на последно място, в големите фирми често има повече политика, която ако не бъде управлявана добре от мениджъра, може да донесе разочарования за технически ориентирани хора.

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

Ако откриете, че те са свързани по-скоро с наследството на конкретния проект и са “неконвертируема валута” в друг контекст, е много вероятно да имате нужда от промяна.

Да работим ли дистанционно?

Делът на хората, които работят изцяло дистанционно, достига впечатлявящите 12%. Ако добавим и тези, които имат офис, но извършват поне половината от работата си дистанционно, достигаме до почти 20% дял, което показва ясни тенденции към дистанционна работа, гъвкаво работно време и work-life balance. Ще се превърне ли офисът по-скоро в място за срещи отколкото работно място? Това само бъдещето ще покаже, но е ясно че при тези данни, една компания не би стояла добре на пазара на труда, ако не предлага дистанционна работа и гъвкаво работно време.

Но защо да не работим 100% дистанционно? Ако спортуваме по 1-2 часа на ден, вместо да се возим в трамвая или колата ще сме много по-здрави, красиви и щастливи😊. Една основателна причина за посещение на офиса е възможността за изграждане на по-близки връзки с колегите. Дългите дни дистанционна работа с ограничени социални контакти могат да има негативни последствия както за индивида, така и за колектива. Освен това, в някои (high-context) култури, невербалната комуникация има голямо значение. Компании като Gitlab и Pivotal, при които служителите работят предимно дистанционно, адресират този проблем с организирането на регулярни team building събития (например конференция с подобаващо забавление след това).

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

Увеличават ли се жените разработчици?

Макар да се забелязва ръст при жените разработчици, професията все още се доминира от мъже (около 90%). Това е най-ярко изразено в роли като sysadmin/devops/SRE, докато повече жени намират своето място в по-творчески или организационни роли като Front-end developer, QA, academic researcher, data scientist/machine learning, Product manager, Educator и Designer.

Застаряват ли разработчиците?

Въпреки че индустрията има много млади попълнения, не може да ни убегне фактът, че почти 20% от участниците в проучването са с над 15 години опит (т.е. гравитират около 40 г.). “Застаряващият разработчик” е явление, което тепърва набира скорост, и ще изправи софтуерните фирми, а и самите програмисти, пред един нов клас от проблеми, свързани с преквалификацията и правилното място на програмиста в кариерната стълбица. Популярните програмни езици и технологии имат сравнително дълъг жизнен цикъл (20+ години), но пазарният им дял и области на приложение се променят значително по-динамично, което води до необходимост от по-честа адаптация и “прекрояване” на екипите.

Какво да направите ако имате 10+ години в бранша? Пътищата за развитие са много. Най-смелото и рисковано нещо би било да основете собствена фирма, но това обикновено завършва добре само ако сте добили достатъчно добър поглед върху някой проблем, технология или пазар, което да ви позволи да заемете своята ниша. Понякога е въпрос и на лични контакти и малко късмет. По-често срещан подход е преквалификацията. Тя може да цели както различна кариерна посока (например управление на проекти и хора), така и различна технология/продукт (GIS, BPM, CRM, BI, Machine Learning, и др.). Важно да изберете такава посока за развитие, която съответства на вашите лична мотивация, възможности и очаквания. Например, ако не можете да отделяте 8-10 часа на седмица за усъвършенстване, или пък често се разсейвате с Facebook и други несвързани с целта ви неща, трудно ще напреднете в някаква нова област и може да се разочаровате.

Кой изкарва най-много пари?

Според проучването, най-добре заплатени са мениджърите, SRE/DevOps, както и хората занимаващи се с обработка и анализ на (големи) данни, включително и Machine Learning. Най-ниски заплати изглежда получават front-end и mobile разработчиците, както и академичните изследователи. Изненадващо е, че разработчиците на игри също не са сред високо платените. Известно е, че тяхната работа е свързана с добра квалификация и често с доста стрес, но явно правенето на игри е награда само по себе си😊.

От гледна точка на програмен език, прави впечатление, че сравнително нишовите езици като Clojure, Scala, Erlang/Elixirр, Rust и Go, са добре заплатени, но вероятно и по-трудно се намират отворени позиции.

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

Силно впечатление прави това, че Python е сред добре платените езици, като изпреварва C#, C++ и Java. Вероятно това да се дължи на Machine Learning нишата, която Python доминира, или на силно нарасналата популярност на езика през последните години.

Според проучването, Java значително изостава в заплащането. Възможно е това да се дължи на mobile App/UI пазара, при който напоследък има силно изразено присъствие на JavaScript, Kotlin и Swift/Objective -C, които са със сходно заплащане, докато Java отстъпва от Android света. Но пък може и добре платените Java разработчици да нямат време да попълват Stackoverflow проучването😊.

Кой нов език да научим?

Ако вече сте се плеснали по челото и сте си казали “Трябва да науча нов език”, сигурно се питате кой да бъде той. Отговорът е “зависи”! Ако гледаме популярността, JavaScript отново е на първо място, но пък Python, освен че е на второ място както по популярност, е и вторият най-обичан език след Rust. “Обичайните заподозрени”, като Java, C# и PHP, въпреки че са по-надолу в класацията, все още имат значителна популярност, а сравнително нови езици като Go също привличат добре платена аудитория. Изглежда изборът никога не е бил по-труден! Но нека да опитаме да вникнем в областите на приложение на популярните езици.

JavaScript има своите корени в браузъра и въпреки сериозните подобрения в производителността (V8) и това че е си извоюва територия в бекенда (node.js), все още се прилага предимно около браузъра, а също и за мобилни и десктоп приложения (React Native, Cordova, Electron). Обичаният от толкова много разработчици vscode също е написан на JavaScript/TypeScript. Подобно е положението и с Kotlin и Swift/Objective-C, които въпреки че са езици с общо предназначение, се използват доста често за потребителски интерфейси и mobile/desktop приложения.

Python се заражда в научните среди, където все още има силни позиции, но постепенно си извоюва територия в много други области, като за трета поредна година расте по популярност, оставяйки зад себе си широко използвани езици, като Ruby, PHP, C# и Java. Около 70% от началните курсове по програмиране в САЩ са на Python. Как стана така, въпреки ограниченото финансиране на PSF, голяма част от което отива за PyCon, а не за заплати на разработчиците?

Първата очевидна причина е Machine Learning & Data Science общността. Най-популярните machine learning библиотеки като Tensorflow, Keras, Pytorch, NLTK, Scikit и OpenCV са силно фокусирани върху Python. Дори Apache Spark, който акцентира върху Scala, не може да пренебрегне Python. Друга възможна причина е краят на миграцията от Python 2 към Python 3 (2020), която доскоро бавеше развитието на езика. Освен това, Python има силна общност и добра документация и е популярен при Web приложенията и Cloud/OS automation (Ansible, OpenStack), където се конкурира с Ruby.

Java и C# езиците (въпреки че са по-надолу в класацията) все още не губят популярност. Като че ли Java се движи от огромната си инерция в корпоративната и Big Data сферите, но също и поради екосистемата, зрелостта на JVM и иновативността на библиотеки като Spring. При C# трябва да се отчете както инерцията и зрелостта, така и разработката на игри с Unity.

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

Пишем ли повече отворен код? Защо?

Според проучването “около 65% от професионалните разработчици допринасят към open source проекти”. Ако се вгледаме по-внимателно, изглежда че само 12.4% го правят регулярно, а навярно много от тях дават своя принос като част от служебните си задължения и съобразно стратегията на своя корпоративен работодател (Intel, IBM, Google, Facebook, Pivotal, SAP, Microsoft, Oracle…). Лошо ли е това? Комерсиализира ли се отвореният код? Може би в някаква степен да, но това не бива да се възприема непременно като негативно. В крайна сметка, общото количество отворен код нараства, общността от хора, въвлечени в отворения код, се увеличава и не на последно място, управлението на проектите става все по-лесно с инструменти като Github, Docker, Travis и др. Това създава плодородна почва за иновации и намалява разходите за разработка и опериране на софтуер като цяло.

Но защо фирмите инвестират повече в отворен код напоследък? Докато първоначалните движещи сили на отворения код бяха по-скоро академично-идеологични (напр. GNU is not Unix)  – един вид противопоставяне на научните среди срещу корпорациите, то с времето нещата се уталожиха в по-прагматична посока. От една страна, доста проекти с отворен код (Apache HTTPD, Tomcat, SVN, Git, Firefox, Linux …) отправиха успешно предизвикателство към своите комерсиални еквиваленти и това доведе до замяната на последните в много сфери от индустрията. Това е видно и от проучването, където повечето от хората споделят, че отвореният код е или по-добър или със сходно качество спрямо затворения. От друга страна, фирми и проекти като RedHat, MySQL AB, PostgreSQL, WordPress, Magento и др. показаха, че покрай отворения код може да се изградят устойчиви бизнес модели. В наши дни целите на фирмите, които участват в проекти с отворен код, биват най-различни. Например, някои градят екосистема и бизнес модел покрай open source (MongoDB, Cassandra, Spark, Gitlab, Nginx), други отстояват позиции в стратегически важни сфери (Kubernetes, Tensorflow/Keras, Chrome, Android, Firefox, vscode, Tomcat), докато трети просто целят намаляване на разходите, като в някои случаи и запазване на контрола върху нестратегически софтуер (Angular, React).

Разбира се, академично-некомерсиалните проекти с отворен код все още имат своето място под слънцето и много от тях се развиват успешно, макар и понякога малко по-бавно от корпоративно подкрепяните си конкуренти (SciPy, NLTK, GIMP, VLC, MuseScore).

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

Reference: https://insights.stackoverflow.com/survey/2019


За автора: Павел Геневски, Research Lead в SAP Labs България

Павел Геневски ръководи изследователски отдел в развойния център на SAP в София, фокусиран върху прилагането на Machine Learning и други нови технологии в бизнеса. Кариерата му стартира през 2001 година, с програмиране на embedded systems и industrial automation. Следват няколко години в CRM и BPM/Workflow сферата, след които Павел се присъединява към SAP, където постепенно израства от разработчик до изследовател, и допринася към проекти, като Netweaver Kernel, Semantic BMP, WYSIWYG editor, Log management and applied Machine Learning.

 

Share This