Jak zachęcasz swoją organizację do przejścia z Javy na Scalę? [Zamknięte]

15

Czy czyjaś organizacja rozpoczęła migrację z Javy do Scali? Jeśli tak, jak to robisz? Co mogę zrobić, aby zachęcić moich kolegów do zrobienia tego samego?

nanda
źródło
dodaj scala i migrację do tagu, jeśli masz do tego uprawnienia
nanda
9
Być może powinieneś wyjaśnić, dlaczego
TheLQ
Potrzebujesz wystarczającej wiedzy wewnętrznej, aby zapewnić „wystarczająco wysoki” współczynnik autobusowy.

Odpowiedzi:

15

Prawdopodobnie najłatwiej jest najpierw użyć Scali tylko do testowania. W takim przypadku możesz nawet nie mówić szefowi :-) Jeśli zapyta, powiedz mu „to tylko mój prywatny test, o wiele łatwiej i szybciej jest do tego użyć Scali”. Gdy Ty (i Twoja organizacja) będziesz mieć wystarczające doświadczenie ze Scalą, możesz zacząć używać go do „prawdziwego” kodu.

Thomas Mueller
źródło
Takie były właśnie moje przemyślenia na temat migracji z C # do F #.
GregC,
7

Z punktu widzenia firm lepiej jest pozostać przy Javie, jeśli nie ma wyraźnej przewagi, jaką uzyskają, migrując do Scali. Łatwiej jest im zatrudnić programistów Java do budowy i utrzymania aplikacji. Możesz po prostu odejść po wdrożeniu wszystkiego w Scali :-) Bez obrazy :-)

Maniak
źródło
1
Zwykła Java zostanie tutaj. Scala może, ale nie musi. Jest za wcześnie, aby powiedzieć.
„Łatwiej jest zatrudniać programistów Java” to prawdopodobnie prawda. Jednak zatrudnienie osób, które są „łatwe do wynajęcia”, może nie być najtańszym sposobem na ukończenie projektu.
kevin cline
7

Niech twój szef przeczyta takie doświadczenia:

  1. Obecnie robię większość moich rzeczy w Scali. (Powinienem wspomnieć, że uważam, że Scala jest najlepszą rzeczą od czasu wynalezienia koła jakiś czas temu :-D)

    Moim skromnym zdaniem jest to jedyny język, który naprawdę pozwala ludziom wybrać najlepsze podejście do zadania, bez zbędnego podziału na (bardziej) zorientowane obiektowo i (więcej) podejścia funkcjonalne.

    Patrząc na języki, które wcześniej tak twierdzą, w zasadzie widzę dwa konkurujące ze sobą obozy językowe:

    • Te od strony zorientowanej obiektowo, które widziały, że programowanie funkcjonalne zyskało ostatnio trochę trakcji i pomyślały: „Cóż, tak naprawdę nie rozumiemy tego funkcjonalnego rzeczy, ale dodajmy trochę fantazyjnego cukru syntaktycznego do naszego języka, abyśmy mogli stwierdzić, że jest funkcjonalny zbyt!" (przykłady: Java, Python)

    • Następnie ci ze strony funkcjonalnej, którzy myśleli: „Cóż, nasze podejście funkcjonalne jest znacznie lepsze niż cokolwiek innego i ten obiektowy nonsens jest denerwujący, ale dodajmy kilka dodatkowych słów kluczowych do naszego języka, co na pewno sprawi, że nasz język ucieknie przed akademią ! ” (przykłady: F #, OCaml)

    Projektanci Scali zjednoczyli wiele podejść pochodzących z obu stron i stworzyli dobrze zaprojektowany język, który jest - moim skromnym zdaniem - największą różnicą w stosunku do innych języków, który zdecydował się przyjąć podejście „Frankensteina” do projektowania języka programowania.

  2. Po zrobieniu jeszcze mniejszych rzeczy z Liftem i tylko powierzchownym doświadczeniem z Railsami i Django, muszę przyznać, że przez większość czasu zastanawiałem się, dlaczego coś w Lift działało inaczej niż się spodziewałem, było to spowodowane tym, że moje oczekiwania były wadliwe, a podejście Lift lepsze.

    Lift z pewnością nie jest „łatwym wprowadzeniem do Scali”, ale nauczenie się, jak działa Lift, było prawie tak samo satysfakcjonujące jak nauczenie się Scali przed nim.

    Możliwość „czystego” widoku bez logiki jest świetnym ulepszeniem w stosunku do innych frameworków, które twierdziły to samo, ale nie spełniały tego. Dosłowne wsparcie Scala XML umożliwia sprawdzenie poprawności odpowiedzi: kompilator udowodni w czasie kompilacji, że tylko poprawnie sformatowałeś XML dla klienta.

  3. Lift to opłacalna technologia i obecnie jedyne prawdziwe podejście, jeśli chcesz budować aplikacje internetowe, które wyglądają, działają i zachowują się jak „prawdziwe” aplikacje komputerowe bez samodzielnego pisania niepotrzebnych ilości kodu.

[ Źródło ]

missingfaktor
źródło
3

W ciągu ostatnich dwóch lat poczyniliśmy dobrą drogę na tej drodze na stronie guardian.co.uk - nasza otwarta platforma jest oparta na Scali, nasz główny CMS (pierwotnie w Javie) stopniowo wprowadza więcej Scali (wkrótce przeprowadzamy się z Maven do SBT za naszą kompilację) i było to wspaniałe doświadczenie - naprawdę ożywiające naszych deweloperów, z których niektórzy zaczęli być trochę zmęczeni Javą :)

Zachęcam do zapoznania się z tymi dwoma artykułami na temat naszej transformacji i być może wykorzystam je jako dowód na poparcie swoich spiczastych włosów:

http://skillsmatter.com/podcast/home/how-we-moved-from-java-to-scala

http://www.infoq.com/articles/guardian_scala

Kilka szybkich wskazówek:

  • Zacznij od napisania testów w Scali - w ten sposób możesz zapoznać się z językiem, zwiększyć jego zaufanie do niego i nie musisz przezwyciężyć żadnych obaw związanych z dodaniem środowiska uruchomieniowego do serwerów produkcyjnych.

  • Nie proś o zgodę na wypróbowanie nowych technologii. Lepiej prosić o wybaczenie, jeśli musisz :-)

Roberto Tyley
źródło
+1! za „Nie proś o pozwolenie na wypróbowanie nowych technologii. Lepiej prosić o wybaczenie, jeśli musisz :-)”
Giorgio
2

To pytanie gołębi w innym pytaniu. To jest dla jakich rodzajów lub projektów migracja do Scali zapewnia wartość dodaną? Robię dzień na Jawie, ale marzę o dniu, w którym będę mógł używać Scali „w gniewie”.

Kilka odpowiedzi na moje pytanie:

  • Problemy, w przypadku których współbieżność oparta na aktorach przyniosłaby ogromne korzyści (Akka)

  • Aplikacje internetowe niż dane przesyłane do nich przez COMET (Lift)

Wszelkie inne spostrzeżenia lub jeszcze lepsze doświadczenia?

użytkownik3463
źródło
1

Piszę testy dla moich aplikacji Java w Scali i zgadzam się, że to dobry początek. Mój zasięg testów jest lepszy, ponieważ łatwiej i szybciej je piszę (również odkąd korzystam ze Scali, chętniej skupiam się na pisaniu testów).

Zacząłem też robić prototypy i wyrzucane POC w Scali prawie wyłącznie. Staram się uświadomić menedżerom i przełożonym, że to możliwe, że korzystałem ze Scali w tych jednorazowych przypadkach i podkreślam, że dzięki Scali mogłem szybko coś uruchomić. Potrzebowaliśmy (cóż, trochę potrzebnej) aplikacji internetowej, aby śledzić naszą świąteczną grę z białym słoniem - 1,5 godziny ze Scalatrą i MongoDB, a cały mój dział widzi tę aplikację i pyta o nią. Spójrzmy prawdzie w oczy, nigdy nie dostaniesz nigdzie opisywania menedżerom, o ile bardziej ekspresyjny jest język lub że jego model współbieżności jest o wiele lepszy. Ale jeśli im pokażesz, możesz zrobić więcej szybciej, zyskujesz na popularności.

Ale myślę, że największym dziełem jest ekscytowanie programistów Scalą. Jestem pewien, że wszyscy pracujemy z programistami, którzy nie nadążają za nowymi technologiami, a czasem trudno jest ekscytować się tymi nowymi rzeczami (naprawdę nie rozumiem). Kluczem jest pokazanie tym ludziom pewnych korzyści ze Scali (wypróbuj REPL). Jeśli masz wystarczającą liczbę programistów buczących o tych samych korzyściach związanych z produktywnością, znacznie bardziej prawdopodobne jest, że Scala zostanie oficjalnie przyjęta w Twojej organizacji.

Przekazywanie informacji i walka z oddolnym wysiłkiem to mój główny cel w 2011 roku. Zobaczymy, jak to się rozwinie, ponieważ nie mogę się doczekać dnia, w którym będę używać Scali do dużej części mojej pracy.

Janx
źródło
1

Zastanawiam się, dlaczego wybrać jedno lub drugie? Dlaczego decydujesz się wyrzucić Javę za drzwi i przejść Scalę do samego końca?

Nie ma czegoś takiego jak idealne narzędzie do pracy. Nie ma powodu, aby całkowicie wyrzucać wiedzę fachową z jednego języka i zastępować go innym.

Nie chciałbym (już) pracować w firmie, która koncentruje się na jednym języku lub środowisku, tbh. Lepiej wiedzieć wiele rzeczy i wybrać odpowiednie narzędzie do pracy.

Poza tym trudno jest całkowicie, jeśli nie niemożliwym, całkowite przestawienie się organizacji na Scalę. Zamiast tego postaram się wykonać kilka projektów (a nawet części projektów) w Scali, zamiast wybierać podejście „wszystko albo nic”. Możesz na przykład zdecydować się na przetestowanie kodu Java za pomocą Specs2, który ma całkiem niezłą składnię w porównaniu ze zwykłym starym JUnitem - i nie jest to skomplikowany, mylący i trudny kod i paradygmaty Scala, po prostu cukier składniowy wokół definiowania zachowania twojej aplikacji .

Cthulhu
źródło
0

Dobrym sposobem jest zademonstrowanie dwóch wersji tego samego programu. W ten sposób możesz pokazać swoim kolegom (w praktyce) ekspresję Scali . To samo robi w przypadku innych problemów (XML, współbieżność itp.) Może wykazać zalety korzystania ze Scali zamiast Java do rozwiązywania określonych problemów.

Oczywiście nie oczekuj, że migracja nastąpi w ciągu jednego dnia. Istnieje wiele problemów, których możesz nie docenić: krzywa uczenia się, istniejąca baza kodów itp.

sakisk
źródło