Jako freelancer często klienci pytają mnie, co muszą wybrać między podobnymi elementami, z których żaden nie jest lepszy od innego. Przykłady:
„Czy potrzebuję, aby moja strona e-commerce była w PHP lub ASP.NET?”
„Czy muszę hostować tę zwykłą usługę internetową w chmurze, czy korzystać ze zwykłej usługi hostingowej?”
„Który jest lepszy dla mojej nowej witryny: MySQL lub Oracle?”
itp.
Być może istnieje co najwyżej 1% przypadków, w których wybór jest istotny, i istnieje rzeczywisty, obiektywny powód, aby stosować jeden na drugim, na podstawie dokładnych wskaźników i badań. We wszystkich innych przypadkach nie ma to żadnego znaczenia. Jest to całkowicie, zupełnie nieistotne, albo dlatego, że nie ma żadnych implikacji¹, albo ponieważ te implikacje są zbyt małe, aby je wziąć pod uwagę², lub wreszcie, ponieważ nie można przewidzieć tych implikacji³.
Jeśli wiesz jedno, a nie drugie, odpowiedź na te pytania jest łatwa:
„Możesz napisać aplikację w języku C # lub Java, przy czym oba są prawdopodobnie równoważne w twoim przypadku. Zauważ, że jestem programistą C #, więc jeśli wybierzesz Javę, nie będę mógł pracować nad twoim projektem i będziesz musiał znaleźć innego freelancera. ”
Znając obie technologie, nie możesz na to odpowiedzieć.
W takim przypadku, jak wyjaśnić klientowi, że pytanie, które zadaje, podlega flamewarowi i nie ma realnych konsekwencji dla jego projektu?
Innymi słowy, jak wyjaśnić, że wybrałeś jedną technologię zamiast równoważnej z powodów związanych z zasobami ludzkimi, nie sprawiając wrażenia, że jesteś nieprofesjonalny lub nie przejmujesz się projektem?
¹ Przykład: Czy MySQL jest lepszy (gorszy?) Pod względem wydajności, w porównaniu do Oracle, dla osobistej strony internetowej, do której dostęp będzie, och, bądźmy optymistyczni, dwie osoby dziennie?
² Przykład: dla danego projektu zostałem poproszony o ustalenie, czy hosting Windows Azure byłby tańszy niż hosting tej samej aplikacji u znanego dostawcy hostingu ASP.NET. Koszt okazał się dokładnie taki sam.
³ Przykład: klient ma pomysł na przyszłe zastosowanie (sam pomysł jest bardzo niejasny). Nie ma biznesplanu, żadnych wymagań, nic. Po prostu pomysł. Zostaniesz zapytany, czy Java jest lepsza niż C # dla tej aplikacji. Na co odpowiadasz
źródło
Myślę, że wasza przesłanka, że decyzja jest w dużej mierze arbitralna, jest warta zakwestionowania. Zgadzam się, że nie chcesz skończyć w paraliżu analizy, w którym odbywają się miesiące posiedzeń komisji, ale warto to rozważyć. Patrząc z wysokiego poziomu, wybór technologii rzadko jest arbitralny. Jest to klucz do strategii biznesowej, ponieważ silnie wpływa na to, dokąd firma może pójść w przyszłości, a rolą programisty jest prowadzenie firmy przez proces decyzyjny.
Specyfika technologii, taka jak użycie B-drzew w MySQL w porównaniu do Oracle, lub składnia PHP w porównaniu do ASP.NET , są oczywiście otwarte na wiele religijnych debat wśród programistów i naprawdę sprowadzą się do twojego gustu. Ponieważ podobny konsultant do ciebie może mieć radykalnie odmienną opinię, te rzeczy są rzeczywiście raczej arbitralne. I jest dość dobrze ustalone, że każdy programista, który jest kompetentny w danej technologii, i tak wykona dobrą robotę. Tak więc ważniejsze dla firmy są nie drobiazgi językowe, ale pytania wyższego poziomu, takie jak:
Jaki jest scenariusz wdrożenia? Niektóre technologie są bardziej praktyczne, szczególnie jeśli istnieją usługi hostingu w chmurze, takie jak Heroku . Niektóre firmy to polubią, inne będą musiały same się hostować, mieć silniejszą obecność administratorów systemu itp.
Jaki jest czas życia i zakres projektu? Na przykład PHP jest prawdopodobnie łatwiejsze niż Java, aby rozpocząć projekt, ale trudniej jest go skalować i utrzymywać przez wiele lat.
Jakich programistów przyciągnie technologia? W przypadku Javy bardziej prawdopodobne jest, że zdobędziesz doświadczenie w przedsiębiorstwie. W przypadku PHP możesz uzyskać więcej typów projektantów crossoverów lub administratorów systemu. W przypadku Node.js dostaniesz więcej front-endowych i eksperymentalnych programistów, dla Haskella, tłumu akademickiego itp. Wszystkie stereotypy, które znam, ale daje to biznesowi pewne wskazówki. Każda z tych grup ma własną kulturę, oczekiwania dotyczące płatności i środowiska pracy oraz sposoby współpracy między sobą i resztą organizacji.
Jaka jest dostępność programistów? Zakładając, że programiści muszą być fizycznie obecni, niektóre lokalizacje mają określone ekosystemy. W mieście pełnym startupów będzie dużo programistów Ruby on Rails i PHP, w mieście pełnym departamentów rządowych będzie dużo Java / MS itp. Zdecydowana większość języków programowania na świecie musi być wykluczonym na tej podstawie.
To tylko kilka przykładów. Najważniejsze czynniki będą zależeć od sytuacji, ale najważniejsze jest to, że firmy muszą świadomie stosować technologie, które pasują do ich strategii, kultury i okoliczności.
źródło
Dałbym klientowi obiektywną matrycę porównawczą dotyczącą wykonalności zastosowania tej technologii. Na przykład:
W twojej matrycy:
Itp.
W zależności od liczby elementów w macierzy, należy szybko wymyślić wynik i określić wykonalność tej technologii w porównaniu do drugiej. W niektórych przypadkach MySQL może być lepszy, w innych Oracle.
źródło
Wyjaśnij to w zrozumiały sposób - pieniądze. Możesz powiedzieć im, że wybrałeś X zamiast Y, ponieważ chociaż oba byłyby odpowiednie dla tego projektu, znasz lepiej X niż Y. W ten sposób będziesz mógł dostarczyć im aplikację po niższych kosztach, gdy używając X niż gdyby zostało napisane przy użyciu Y.
źródło
„Wolisz prowadzić Forda lub Chevroleta?” byłby analogią kierującą, którą rzuciłem, by sprawdzić, czy potrafią zrozumieć, że pytanie nigdzie się nie zmierza. Podobne pytanie może brzmieć: „Który lepszy jest hamburger lub pizza?” gdzie bez dodawania kolejnych ograniczeń pytanie ma wiele możliwych odpowiedzi.
Innym sposobem spojrzenia na to jest pytanie, dlaczego tak ważne jest, aby wiedzieć, i w zależności od tego, jaki dodatkowy materiał można znaleźć, wyjaśniając pytanie, może to prowadzić do lepszej odpowiedzi. Niektórzy mogą się zastanawiać: „Co zostało użyte do zbudowania mojej witryny e-commerce?” choć woleliby robić wrażenie i wrzucać kilka bzyczących słów.
źródło
Wiele dobrych odpowiedzi już, ale jedna rzecz, którą zauważyłem, nie została wspomniana: jest to doskonała okazja do pełnego ujawnienia z twojej strony. Na przykład,
„Teraz zarabiam na życie głównie dzięki technologii <foo>, więc nie jestem całkowicie bezstronny. Jednak ...”
Naprawdę myślę, że zyskujesz wiarygodność dzięki tego rodzaju stwierdzeniom.
źródło
Są rzadkie przypadki, w których jedna technologia jest wyraźnie gorsza od drugiej - „Czy powinienem rozwijać swoją stronę internetową w Pythonie lub Cobolu?”, Ale głównie chodzi o konie na kursy.
Przy podejmowaniu decyzji, która technologia odpowiada klientowi, stosuję metodologię:
W większości przypadków wybór kończy się na etapie drugim. Jeśli klient korzysta z widgetów Acme , ma osoby doświadczone w korzystaniu z widgetów Acme, ma zestaw standardów, kontroli zmian i procedur zarządzania opracowanych wokół Acme Widgets i Acme Widgets może wykonać to zadanie, to Acme Widgets jest właściwą drogą - nawet jeśli Ezee DohDahs jest technicznie lepszy do tego zadania!
źródło