Szukam metodologii wyboru języka. Nie pytam o opinie na temat języków. Zadanie polegało mi na porównaniu obecnego języka naszego sklepu z innymi, które są dostępne. Jesteśmy sklepem internetowym.
Nasz CEO chciałby uzyskać pełną białą księgę na temat wszystkich dostępnych języków internetowych, jakiego języka ojczystego są pochodnymi (np. Jsp pochodzi z java, który pochodzi z c / c ++). Muszę stworzyć macierz ze wszystkimi kluczowymi czynnikami danego języka, a także niedociągnięciami tego języka. Czy język jest ograniczony przez platformę, czy jest przeznaczony do programowania funkcjonalnego, proceduralnego lub OO, czy może być używany z dowolnym paradygmatem programowania?
Potrzebuję też informacji mniej technicznych, takich jak wielkość puli talentów dla danego języka i mediana wynagrodzenia w tej puli. Jak rynek oceni nasz wybór?
Zaczęliśmy szukać konsultanta, który pomógłby nam zrozumieć wszystkie te rzeczy, ale okazało się, że większość konsultantów pochodzi ze środowisk programistycznych i często wydaje się, że odpowiedź brzmi: „ xxx jest najlepszym językiem, ponieważ to ja używałam najwięcej w ciągu ostatnich n lat i nigdy mnie nie zawiódł. Możesz uzupełnić go o yyy dla interfejsu i użyć biblioteki zzz "
Czuję się przytłoczony tym zadaniem i wydaje mi się, że najlepszym sposobem, biorąc pod uwagę to, czego szuka nasz CEO, jest zajrzenie do świata akademickiego i zatrudnienie profesora bez faktycznego doświadczenia w rozwoju, aby „uczyć” nas o wszystkich możliwych językach.
Czy ktoś jeszcze musiał przejść to ćwiczenie? Jeśli tak, czy możesz podzielić się krokami i / lub metodologią zastosowaną podczas tego procesu?
Odpowiedzi:
@FrustratedWithFormsDesigner zasygnalizował to powyżej, będę bardziej bezpośredni: zostałeś obciążony kosztownym, ale bezużytecznym zadaniem.
Podejrzewam, że CEO szuka niepodważalnych, obiektywnych dowodów, które będą wspierać jego wybór języka. Problem polega na tym, że preferencje językowe są obciążone zbyt wieloma subiektywnymi i zewnętrznymi czynnikami, aby biała księga była znacząca, a tym bardziej przydatna.
Innymi słowy, gdyby istniał idealny język, wszyscy używaliby go zamiast tych „obiektywnie” wadliwych języków. Odzwierciedla także pewien stopień mikrozarządzania, który powinien być domeną inżynierów, którzy będą musieli sprawić, by działało. Erlang może być „obiektywnie najlepszy”, ale jeśli nikt tego nie wie, dodaj 6-miesięczny koszt uruchomienia inżyniera i 6-miesięczny / inżynier, aby zdobyć kompetencje.
Ponieważ nie mam twojej pracy, nie martwię się o jej utratę, chociaż możesz. Przekazałbym CEO artykuł na temat tezy o fizycznym kościele Turinga. Następnie spotkałem się ze starszymi inżynierami i otrzymałem ich nieskomplikowaną, nieobiektywną opinię na temat tego, co powinno być użyte, i powiedziałbym dyrektorowi generalnemu, czego będziesz używać. W zamian obiecujesz, że inżynierowie nie będą uczestniczyć w spotkaniach zarządu, dyrektorach finansowych, metodach rachunkowości, wyborze wiceprezesów itp. Jest powód, dla którego się specjalizujemy, a on nie ma więcej miejsca w preferencjach inżynieryjnych niż ty w jego dziedzinie.
źródło
Kilka szerokich pociągnięć pędzla do rozważenia:
Popularność języka
To naprawdę nie powinno mieć znaczenia, ponieważ popularność niekoniecznie musi się równać z produktywnością, ekspresją lub innymi cechami językowymi, które mają większe znaczenie, ale ta uwaga często przebija wszystkie inne względy, ponieważ:
Możliwość zastosowania do dziedziny problemowej
Dowolny program może być napisany w dowolnym języku programowania Turinga, ale niektóre języki są bardziej odpowiednie dla niektórych domen problemowych niż inne. Jeśli piszesz aplikacje internetowe, prawdopodobnie polubisz języki i narzędzia, które są do tego odpowiednie, a najprawdopodobniej będą to języki obiektowe.
Z drugiej strony, jeśli zamierzasz pisać oprogramowanie oparte głównie na badaniach lub matematyce, prawdopodobnie skłaniasz się ku językom, które obejmują paradygmaty funkcjonalne .
I oczywiście wszystko jest pomiędzy. Wiele języków obsługuje wiele paradygmatów, a niektóre wzorce oprogramowania istnieją wyłącznie w celu przezwyciężenia ograniczeń w tych językach, w których brakuje pewnych funkcji lub paradygmatów.
Ekspresyjność i wydajność
Niektóre języki są bardziej wyraziste niż inne. To, co można napisać w jednym języku przy użyciu tysiąca wierszy kodu, można napisać w bardziej wyrazistym języku przy użyciu stu wierszy kodu. Kompromis polega na tym, że sto linii kodu jest prawdopodobnie pisanych w mniej popularnym języku przez osoby o większej wiedzy.
Wiele wierszy kodu obecnych w językach obiektowych używanych do pisania aplikacji biznesowych to ceremonie. Ceremonia ta, choć wymaga czasu i wysiłku na rozwój, zapewnia również widoczną strukturę, która w innym przypadku nie byłaby łatwo widoczna w bardziej wyrazistym języku. Pozwala to osobom o mniejszej wiedzy specjalistycznej, niż byłoby to konieczne do pracy nad kodem przy zmniejszonym ryzyku.
Era wielu języków
Na zakończenie stwierdzę, że chęć wyboru jednego języka może być fałszywym dylematem. Aplikacje dziś są często pisane, nie w jednym, ale w wielu językach. Każdy język ma swoje mocne strony i (teoretycznie) jest specjalnie zaprojektowany do zadania, w którym jest używany. Niektóre domeny problemowe (takie jak logika przeglądarki internetowej lub dostęp do bazy danych) wymagają określonych języków.
źródło
Istnieją biznesowe powody, aby wybrać język, i istnieją techniczne powody, aby wybrać język, a twain nie zawsze się spotykają. Rzucanie z powodów akademickich może pogorszyć sytuację. Wątpię, czy profesor będzie w stanie pomóc ci tak, jak potrzebujesz.
Fakty na temat pochodzenia i cech języka są dość łatwe do znalezienia. Prawdopodobnie mógłbyś spędzić dzień na wikipedii, aby wypełnić większość z nich. Wielkość puli talentów i wynagrodzenie są trudniejsze, ponieważ większość ludzi nie uważa się za programistów w jednym języku. Firmy, które używają mniej popularnych języków, takich jak Scala, raczej oczekują zatrudnienia dobrych ogólnych programistów, którzy nie mają doświadczenia w konkretnym języku. Sądząc z niektórych prezentacji, które widziałem, wydaje się, że strategia ta dobrze się sprawdziła.
Nawet znajomość faktów wciąż pozostawia ci dość subiektywny wybór. Twój dyrektor generalny będzie chciał sprowadzić go do zgrubnej miary, na przykład dolarów na funkcję. Aby uzyskać dokładny obraz, będziesz musiał zrobić kilka prototypów, a następnie porozmawiać o tym, jak łatwo było się nauczyć, jak szybko napisano prototyp po opanowaniu podstaw, jak łatwo można utrzymać , a także, jak Twoim zdaniem ma to zastosowanie do rodzaju pracy, którą zwykle wykonujesz.
Zamiast próbować objąć wszystkie języki, starałbym się uzyskać przedstawicieli różnych paradygmatów programowania i typów ram i zaimplementować prototyp w każdym z nich.
Oto przybliżona lista kategorii zaplecza:
Z przodu:
Spędzenie dnia lub dwóch na każdej kategorii, wdrażając prosty prototyp, zajęłoby ci kilka miesięcy, po czym miałbyś znacznie lepsze pojęcie o mocnych i słabych stronach każdej z nich. Być może mógłbyś wykluczyć niektórych szybciej w oparciu o kulturę lub doświadczenie swojej firmy.
Ponieważ jest to raport biznesowy, poświęcę trochę czasu na przeglądanie takich rzeczy, jak „Jaki język używa <firma>”, zastępując różne firmy, które podziwiasz. Wielu z nich napisało własne dokumenty na temat tego, dlaczego dokonali konkretnych wyborów językowych, co byłoby świetnym odniesieniem do uwzględnienia.
źródło
Zidentyfikuj i oszacuj niedociągnięcia związane z istniejącym procesem programistycznym na kwotę A. Zidentyfikuj koszt przejścia na inny proces programowania jako $ B.
Jeśli $ A jest mniejsze niż $ B, przestań.
Jeśli twoje znane niedociągnięcia przeważają nad kosztem zmiany (a to jest duże, jeśli!), Przeanalizuj je szczegółowo i zacznij szukać języka / środowiska programistycznego / zmian w procesie rozwoju, które to rozwiązają, takich, które nie wprowadzą innych droższych problemów.
Szczerze mówiąc, chyba że obecnie próbujesz tworzyć aplikacje internetowe w Fortran, to jedyny wpływ, jaki będziesz mieć w używanym języku, to koszt kontrahentów, których używasz do wypełnienia luk. Główny strumień i dojrzałe języki / narzędzia / procesy programistyczne już rozwiązały większość problemów, z którymi możesz się spotkać, gdy najgorętsze, najnowsze i najseksowniejsze narzędzia pochodzą z najdroższych trenerów i wykonawców, ale najmniej dojrzałych rozwiązań. A jeśli masz niedociągnięcia, które uzasadniają taką zmianę, jest mało prawdopodobne, że Twój wybór języka w pełni je rozwiąże.
Jeśli jednak rentowność nie jest tu głównym celem, należy uwzględnić piętno bycia uważanym za staroświecki wbrew uznaniu za bycie nowatorskim. Poproś szefa o podanie wartości dolara dla tej części równania.
źródło