Na jakiej podstawie określić dobór języka programowania do rozwiązywanego problemu

1

Dzień dobry

Natrafiłem przy okazji wykonywania projektu na dyskusję w której musiałem udowodnić dlaczego system ma być wykonany w javie.
W porównaniu oczywiście były języki PHP, C#, Python, Ruby

Uzasadnieniem głównym była dostępność bibliotek do mikroserwisów i możliwość tworzenia większych aplikacji niż w przypadku pozostałych.
(tutaj nie róbcie gównoburzy bo zaraz się fani odezwą że w innych języka też da się mikroserwisy robić)

Oczywiście pod napisaniem uzasadnienie do PHP były rzeczy w stylu "powstał nie wiadomo po co i dlaczego, język dla gimbazy itd), że to język w którym nie robi się już nowych projektów,
pod C# że to sklonowana owca i jak głupio skopiowana java, pod Ruby że to się nie nadaje do niczego innego niż prototypowanie.

Po przeczytaniu takich rzeczy (nie ja je pisałem) złapałem się za głowię i stwierdziłem że programiści często podążają za jakimiś stereotypami nie umiejąc merytorycznie dyskutować o tym dlaczego należy użyć danego języka. Może sam już jestem na tyle stary że traktuję język jako narzędzie a nie skupiam się na podniecaniu technologią i że somsiad ma starszą wersję javy.

Jak wy przechodzicie przez takie dyskusje? Jak określacie czy język się nadaje czy nie?

12

Z popularnych języków to najlepszy jest ten, który zna się najlepiej.

2

Najważniejsze dla mnie jest co umieją ludzie. Co to za aplikacja np bez sensu jest pisać grę w Pythonie albo plikacje mobilna.

5

Wydawać by się mogło, że inżynierowie, umysły ścisłe, powinni kierować się jakimiś mierzalnymi oraz w miarę obiektywnymi czynnikami, np.:

  • wyniki benchmarków, np. https://github.com/the-benchmarker/web-frameworks, gdzie php prowadzi,
  • ilość czasu jaką zespół potrzebuje do zaadoptowania technologii,
  • jak szybko można znaleźć programistę danego języka/frameworka na rynku lub wyszkolić nową osobę,
  • w jaki sposób system będzie skalowany?,
  • w jaki sposób system będzie utrzymywany i robione będą kolejne wdrożenia?,
  • architektura systemu, dostępność load balancerów, sharding,
  • integracja z ekosystemem dostępnym w firmie,
  • popularność języka/frameworka, ilość zgłaszanych bugów oraz support jaki zapewniają twórcy,
  • kompatybilność wsteczna języka/frameworka, stabilność frameworka, stabilność ekosystemu.

Ciężko merytorycznie polemizować z argumentem, że jakiś język jest sklonowaną owcą. Generalnie większość dzisiejszych, popularnych języków to sklonowana owca po jakimś już mniej popularnym języku. Najlepszym rozwiązaniem jakie mogę zaproponować w obecnej sytuacji to złożenie wypowiedzenia :)

0

Python - fajny, ale nie do web, ruby - mały support, ciężko z zatrudnieniem, java/c# - korpo.

Życie jest proste. :)

0

Natrafiłem przy okazji wykonywania projektu na dyskusję w której musiałem udowodnić dlaczego system ma być wykonany w javie.

W sensie jaka twoja rola była? Jako szeregowy programista miałeś dokonać wyboru języka czy jesteś jakimś PMem, CTO czy kimś innym takim, kto jest w stanie powiedzieć "potrzebujemy programistów Javy, trzeba wystawić ogłoszenie, niech przychodzą. Zrobimy zespół Javowców"

Bo od strony jednostkowego programisty to najbardziej produktywnym podejściem jest pisanie w tym języku, który się zna (choć też bez przesady, nie wszystkie języki się nadają do wszystkiego), a nie zastanawianie się "w którym języku napiszę dzisiaj projekt".
Z drugiej strony elastyczność i możliwość pisania w różnych językach w zależności od projektu też może być użyteczna.

możliwość tworzenia większych aplikacji niż w przypadku pozostałych.

"możliwość tworzenia większych aplikacji" to taki slogan. Co to znaczy? A w innych się nie da?

1

Do mikroserwisów to rzeczywiście trzeba uzasadniać Jave, bo zwykle robi się je w czymś innym (Python, Js, PHP) i żeby Java miała tak samo szybki start to trzeba się trochę więcej wysilić:
https://developers.redhat.com[...]code-for-better-startup-time/

"Dostępność bibliotek" to raczej słaby argument bo każdy z języków ma jakieś tam biblioteki, a raczej ważniejsza jest infrastruktura dookoła (bazy danych, autoryzacja, konfiguracja, load balancer, gateway, itd). Ta infrastruktura jest dostępna zwykle dla wielu języków, a bywa że w pierwszej kolejności dla języków nie enterprajsowych.

Oczywiście Java też ma ileś tam rozwiązań, ale nie jestem przekonany czy do serwisów na kilkaset linijek komuś chce się konfigurować pomy, jenkinsa, artifactory, sonara, jacoco...
Może do mikro-monolitów tak.

1

No ja na pewno nie pisałbym systemu większego niż hello world bez statycznego i silnego typowania więc to już ogranicza zakres wyboru ;)
A jak już to mam to postąpiłbym pewnie jak @danek.
Ps. Osobiście wybrałbym Kotlina ale nie ma go na liście :p

1

ruby - (...) ciężko z zatrudnieniem

Zarówno zatrudnić się jak i zatrudnić kogoś. Znajomy miał w firmie testy E2E pisane w Rubim, ale zrezygnowali z nich bo nie byli wstanie zatrudnić ani jednego programisty Rubiego do utrzymywania frameworka. Wszystko przepisali na popularny korpo język.

Podobnie do niedawna (czyli 3 lata temu) w Katowicach było ze Scalą. Dziewczyna z HRu powiedziała prezesowi W Katowicach jest 9 programistów Scali z czego 5 nie chce pracować w naszej firmie. Nie jestem wstanie zrekrutować więcej.

Wniosek z tego taki że jeśli chce się zbudować duży zespół to trzeba brać popularny w danym regionie język.

UPDATE Małe wyjaśnienie. To o braku Scalowców jest sprzed 3 lat. ROk temu w Katowicach powstał też oddział Softwaremill i oni na brak Scalowców nie narzekają

7

@KamilAdam:

Dziewczyna z HRu powiedziała prezesowi W Katowicach jest 9 programistów Scali z czego 5 nie chce pracować w naszej firmie. Nie jestem wstanie zrekrutować więcej.

Nie znam sytuacji, może nawet tak jest (właśnie (UPDATE) sprawdziłem, że to fantazja HR). Ale normalnie to w bzdury od HR nie wierzę. Jakiś czas temu w jednej firmie przekonywali mnie, że nie mogą znaleźć od lat programisty javy, ale od COBOLa znajdują. Jak w firmie są głównie COBOLOwcy i takie ogłoszenia są wywieszone- to nie dziwne. Co więcej wstawienie w ofertę szukamy programisty java, znajomość COBOL będzie zaletą też raczej javowców nie zachęca.

W przypadku Scali paradoks polega na tym, że znam wielu programistów Scali, którzy piszą w javie, bo nie mogą ofert scalowych znaleźć. A w tym samym czasie słyszę info o braku programistów Scali (również w Szwajcarii). Przy czym zwykle nie dotyczy to firm, które faktycznie Scalowców szukają (znam takie, ale nie narzekają na brak zainteresowania z tego co wiem). To jest raczej ostateczny argument architektów w firmach javowych - dlaczego nie można zrobić systemu w Scali.

UPDATE:
Najlepsza weryfikacja tekstów HR
https://www.meetup.com/pl-PL/Silesia-Scala-User-Group/ - 100 członków Grupa publiczna

Czyli jak sie bardzo, ale to bardzo nie chcę szukać to sie nie znajdzie.

Można sprawdzić, że dużo z tych członków dołączyło w 2016 i wcześniej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0