Яку обрати мову для backend — у ?

Вітаю ,цікавить напрямок backend розробки. Обирав і між Golang, і JS, і PHP, але, все ж таки, зупинився на двох мовах, а саме : Python та Java. Що порадите ? Які ,загалом ,перспективи в напрямі backend розробки в обох мов ? Буду вдячний за відповідь.

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Якщо для душі — то Java, якщо для заробітку — Python.

Якщо для душі — то Java

орнув ))))

Якби я зараз вкочувався то дивився б на Python, data science, AI.
Джава джунам зараз гірше ніж ручним тестерам, десь на джині аналітика була.

У Python набагато більше застосувань чим у Java.

Golang — запізнився, JS/TS на бекенді не посунув. Вакансії смачні є — але з досвідом.

JS, і PHP зазвичай йде в комлекті з фронтендом. Хоча й чистий бекенд теж є.

PHP — потихеньку втрачає позиції. Але буде ще довго, бо зручний для веб фрілансу. Та й на чистому бекенді — теж в цілому ок, щоб з нього переводити проекти на щось інше. Є вже рішення, підходи, які зменшують його недоліки.

Так що попит великій є, і головне буде, тому:
Python або JS
Особливо TS — думаю на бекенду є і буде розширюватись його застосування: Node.js значно швидший за Python, для мікросервісних систем — це важливо.
А писати легше-швидше аніж на Java/Golang

Або PHP, але в чистий бекенд на ньому важко потрапити.

Судя по Linkedin в данный момент по E.U. общих вакансий с Java: 300.963. С Python в данный момент: 258.166.
В U.S. незначительно у Python больше вакансий.

Судя по Linkedin в данный момент по E.U. общих вакансий с Java: 300.963

подозреваю бОльшая часть из них — 10+ стажа в Java і локация — страна вакансии

В U.S. незначительно у Python больше вакансий.

и там так, думается мне.

но да, с Джавой не пропадешь, вакансий пока есть и будет много.
тут вопрос о — трендах количеств вакансий. и куда разработка движется, в какие новые или обновления ее методик. смотреть же нужно стараться — на пару лет вперед.

Выбирать нужно нишевый язык: Scala, Ruby, PHP, Kotlin, Golang- больше шансов быстрей найти работу, чем гнаться за топовыми языками такими как Python или Java. К тому же, как правило, нишевые языки оплачиваются больше чем топовые и на junior изучать приходится меньше, пример: Scala, Ruby. Я встречал вакансии по Scala Core для junior, врядли можно встретить такую вакансию для Java. Как правило, если вы выбрали Java, придется очень много изучать разных технологий и фреймворков. Если вы выбрали Java, готовтесь встретить много вакансий для middle/senior и пару junior с требованиями как для middle и выше.
Все мои суждения основаны на поиске вакансий Linkedin. Мой вам совет: прежде чем чтото изучать, ознакомтесь все же со списком вакансий, посмотрите что болше требуется, посмотрите какие технологии и фреймворки используются, прикинте примерно сколько времени потребуется на изучение тех или инных технологий. Посмотрите доступность курсов по изучаемой теме, обратите внимание на дату выпуска материала который вы собираетесь изучать. Курсы понадобятся 100% потому что они сэкономят уйму времени на поиски того или иного учебника. Курсы можно посмотреть на Udemy, за $13 можно преобрести ценные курсы. Вообще выбор языка- это очень важная тема, стоит несколько раз все обдумать и взвесить. Да, чуть не забыл курсы по изучаемой теме должны быть на англиском, одним выстрелом вы убьете 2ух зайцев (сэкономите время, потому что изучать придется очень много). Без английского в программировании никуда.

Взагалі не пам’ятаю коли бачив вакансії на Скала чи Раст джунів, можливо раз на 5 років бувають. Тому нішеві мови мають свої недоліки при таких рішеннях, як мова => кількість вакансій

Java як платформа краще. Більше якісних ліб, різні мови (Scala/Kotlin), при переході на іншу мову ваш досвід буде досить релевантним, високий перформенс, який поступається хіба що C++, й то не завжди.

Але зверніть увагу на важливий момент. Навколо кожної мови будується комьюніті зі своїм баченням й мейнстрімом. Також та чи інша мова може частіше використовуватись для певних проектів. Швидко відчути дух комьюніті можна по всяким холіварним статтям. Наприклад:
— Java — часто дуже консервативне комьюніті, не дуже відкрите для чогось нового. Проте дуже прагматичне. Вам буде не дуже комфортно тут, якщо ви любите нові модні технології, але буде комфортно, якщо ви хочете стабільності й поглиблювати свої знання в певному стеку рік за роком.
— Scala — після появи котліна притягує до себе в основному фанів функціонального програмування. Абсолютно свій світ, повʼязаний з Java тільки за рахунок JVM.
— Go — зайде тим хто ненавидить Annotation-driven-development в java й не любить витрачати роки на вивчення фреймворків. Але вам буде некомфортно тут, якщо ви не любите писати багато бойлерплейт коду.

Ну й так далі. Й наприклад якщо вам подобається функціональне програмування, так для джава є vavr, але вам ніхто не дасть його застосувати на проекті й вам буде там тісно. Й навпаки, на скала теж пишуть в ООП better-java стилі, але вам рано чи пізно доведеться зіштовхуватись з кодом написаним якимось упоротим математиком.

Але джуном пофігу що вчити, я б погуглив вакансії й подивився на конкуренцію й обрав щось, куди простіше пролізти.

Дякую за розгорнуту відповідь.

писати багато бойлерплейт коду.

Go-внокодити

Вибір мови — це функція від ваших вподобань та наявний вакансій на сьогодні. Коеффіцієнти ви маєте обрати самостійно, але якщо десь коєффіцієнт близький до нуля (якто, наявність Junior вакансій на Rust або OCaml, або ж жорстка відраза до PHP з вашого боку), то обирати таке не варто.

З вакансіями як на мене все досить просто: JS + Typescript > Java / Kotlin >> Усі інші.
Go, Ruby, Python, Scala, PHP, С# - це все ще досить надійні варіанти, де гарний спеціаліст зможе за кілька місяців знайти роботу.

Беручи до уваги що це мабуть буде ваша перша робота, я б не радив складні мови де джуну потрібно буде дуже багато вчити поза роботою щоб вийти на пристойний рівень хоча б за рік. Тож я б не радив починати зі Scala (дуже багато вчити), чи Ruby (велика вірогідність одразу потратити на старючий моноліт на RoR).

Якщо вірно зрозумів ,то ви радите JS +Typescript ,або виходячи з моїх вподобань то Python також буде гарним вибором ?

І те і те норм. Роботи на Python вистачає, хоча честно кажучи я не розумію хто в тверезому розумі пише бекенди на Python. Тим не менш, я щойно пошукав на linkedin, і вакансій на Python (не ML, а бекенди чи платформ інжинірінг чи Python+Spark) більше ніж наприклад вакансій на Scala.

Як Python Developer порадив би джаву. На Python шалена конкуренція (бо його легше і швидше вивчити), а вакансій менше. (часто в розділі Python шукають Data Engineer — але той поїзд не для нас)

Якщо між цими обирати вчи python. Так хоч паралельно із пошуком свого місця на галері (який може тривати роками) ти зможеш на фрілансі ботів писати там чи скраперів заробляючи при цьому на багато більше галерного джуна та не нити що нікуди не беруть.
А потім скажеш нах воно мені треба і знайдеш серйозний прямий контракт серед тих же замовників з фрілансу

Як і близько не спеціаліст з вебу, але кому доводилось частенько колупати сервіси на розроблюваних залізяках з метою пофіксити білд після апгрейду залежностей, або портувати з серверного х86-64 на вбудовані платформи, можу підказати по приємності мов і тулінгу.

Найкраще — Go, бо де-факто монопольна реалізація і статична збірка вирішує максимум проблем з тулінгом, при цьому мова навіть без знання легко читається через простоту мовних конструкцій. Мало хто усвідомлює на старті, що код більше доводиться читати, ніж писати, причому читати доводиться також у формі рев’ю патчів, розрулювання мерж-конфліктів, ручного аналізу логів та інших задач, для яких крута IDE не допоможе, а надмірне різноманіття ідіом і мовних конструкцій потребує розуміння їх всіх, бо різні люди можуть користуватись різними, або знову ж таки, енфорсити певні код стайли і обмеження, які також будуть триматись у голові, бо конфігурабельність IDE обмежена. Go виглядає ідеальним балансом для не надто великих сервісів.

Java, зазвичай, менш приємна, бо на ній пишуться складні, переобтяжені абстракціями і багаторічною ітеративною розробкою речі, але нутрощі скажімо керування мережами Android теж можна розібрати і правити під свої задачі, не будучи спеціалістом у мові.

Python, у задачах де з ним стикався, може бути гарною мовою, але може легко бути гіршим з двох світів: можна одночасно писати складно, з елементам ООП і функціональщини, і морочитись з залежностями, які насправді є байндінгами до нативних ліб. Так, це не проблема самої мови і специфіка задач, що скажімо в Machine Learning на ньому зручно високорівнево робити нейронні мережі і обробку даних від вебу і назад, але обираючи саме мову, потрібно розуміти сферу її застосування.

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

По поводу перспектив — в Украине они в ближайшем будущем все такие же нулевые.

Якшо цікавить саме бекенд, то є сенс читати про такі штуки як DDD, взаємодія мікросервісів, принципи роботи баз даних і т.д. Мова програмування — діло десяте.

Що за проєкт ? Чи як напрямок професійної діяльності ?

Як напрямок професійної діяльності.

Обирай Python — відносно проста мова якою зручно писати і читати. Навчишся писати BE, зрозумієш концепції на практиці, а тоді по обставинах зможеш перейти на іншу мову.

Я бы рекомендовал Java для чего то большого сложного и монолитного и Golang для микросервисов где важна скорость

На Java моноліти років 5 пишуть тільки динозаври, чи кому нема чого їсти. А так давно усі пишуть ті самі мікросервіси на SpringBoot. І працюють вони значно краще, за той же Node.

Ну так то да но SpringBoot заметно тяжелей чем сервисы на Go. Он может кучу всего автоконфигурировать и это делает его более тяжелым. По сравнению с сервисами из 2000-х сейчас SpringBoot приложения это пушинки но по сравнению с сервисами на Го — монолиты )

Для начала их писать в четверо быстрее, чем на Go из-за разных парадигм. Java+Spring+ORM+Jackson во многом декларативный подход, навряд шаблон и готово. Причем будет работать относительно хорошо, приемлимо по скорости и средне паршиво по памяти. Go lang почитай как на ассемблере, надо потрудится, да и по памяти тоже ещё более паршиво, сам сборщик мусора — Марк свип по хуже и по примитивнее, в Java такой был ещё в старой доброй 1.6 в которой корутины впервые сменили на полноценные потоки. Такой сборщик склонен у фрагментации памяти. В общем если скажем сравнивать с Rust — то тут в самом деле будет лучше и по скорости и по пам’яти, правда писать придется вообще в 10-раз дольше.

У Java значно краще з ком’юніті, бібліотеками та інфраструктурою. До того ж, для складних бекендів і великих систем краще мова з статичною типізацією, бо дає +100 до стабільності та рефакторингу.
Мінус в трохи багатослівному і не встигаючому за більш сучасними мовами консервативному синтаксисі, але і шухерів, на кшталт міграціі на Python 3, теж менше.

Python більш простий і лаконічний, останнім часом стає популярним і для бекенд-розробки, обростає ком’юніті та бібліотеками. Але мій досвід навігації по великим фреймворкам був не дуже приємним.
Тому, як на мене, для ентерпрайзу Python значно поступається Java. Для таких цілей я б перед Python навіть поставив Scala чи C#.
А для невеличких мікросервісів та прототипування — Python, навпаки, досить непаганий варіант.

Чому б не все зразу (Java, Python, JS, PHP та .NET), за станом серпня 2023 року, кількість вакансії стає все менш.

Потім будешь шукати роботу як я з грудня 22 року, IT така собі перспектива зараз)
Але я би радив джаву. Статична типізація, Spring, в який ти закохаєшся, зрозумілий синтаксис.

Також можна додати, що незалежно від того, яку ти мову обрав, скоріш за все, треба буде вивчити і знати декілька мов.
Обираючи мову — ти не «одружуєшся на ній на все життя», це вибір інструменту для роботи.
І, зазвичай, чим більшою кількістю інструментів ти володієш, тим краще.

Джава. Статична типізація в яку завозять нові фічі, вже не те старезне лайно. Як дістане легше зіскочить на скалу чи кложу.

Правильно робиш що не йдеш в го. Жахіття, ерр != ніл кругом, не використовують сурйозних патернів програмування GoF та важких фреймворків типу спрінга. Не солідно!

не використовують сурйозних патернів програмування GoF

А при чому тут го? Яка саме особливість мови заважає їх використовувати?

та важких фреймворків типу спрінга

Не бачу мінусів)

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

але не треба це казати топікстартеру, +1 конкурент на ринку не треба :)

Будь який вибір — він про критерії. Якщо їх немає (а їх схоже немає, інакше складно було обираючи між go, js та php зупинитись на пайтоні та джаві) можна просто кинути монетку...

можна просто кинути монетку

Це було коли він обирав між беком та фронтом. Якби впала ребром прийшлось би у фуллстек йти.

Підписатись на коментарі