Czytałem esej Paula Grahama - Beating The Averages (2003) i oto, co miał do powiedzenia:
Im bardziej charakter IT miał opisy stanowisk, tym mniej niebezpieczna była firma. Najbezpieczniejsi byli ci, którzy chcieli doświadczyć Oracle. Nigdy nie musiałeś się o to martwić. Jesteś również bezpieczny, jeśli powiedzą, że chcą programistów C ++ lub Java. Gdyby chcieli programistów Perla lub Pythona, byłoby to trochę przerażające - to zaczyna brzmieć jak firma, w której przynajmniej stroną techniczną zarządzają prawdziwi hakerzy
To jest przestarzały esej. Nie widzę jednak, w jaki sposób używanie nietypowego języka (C / C ++ / Java, C #) byłoby „mniej niebezpieczne” . Jeśli programiści organizacji bardzo biegle posługują się językiem programowania, powinni być równie biegli w tworzeniu kodu w przyzwoitym tempie. W rzeczywistości, jeśli użyjesz niepospolitego języka, problemy z konserwacją / ulepszaniem nie uderzą cię w twarz, ponieważ na zbyt długo nie będzie dostępnych zbyt wielu programistów?
Jeśli chodzi o tworzenie szybkich i brudnych systemów, zgadzam się, że niektóre języki pozwalają na start stosunkowo szybciej niż inne. Ale czy esej / komentarz Paula Grahama ma sens w 2012 roku i później? Gdyby startup miał użyć typowego IT miałby języków do programowania, dlaczego jego konkurencja nie powinna się tak martwić?
Nie rozumiem, jak sam język robi różnicę. IMHO to doświadczenie programistów z językiem, który ma znaczenie, oraz dostępność frameworków, dzięki czemu SUSZASZ (nie powtarzaj się) nie tylko kodując w danym języku.
Czego mi brakuje? Czy to oznacza, że startupy lepiej wybierają języki bez smaku IT (nawet jeśli programiści mogą być w nich bardzo biegli)? Jakie (programujące) siły ekonomiczne / rynkowe stoją za tym roszczeniem?
PS: „lingua obscura” nie ma na celu zranienia niczyich uczuć :)
Odpowiedzi:
Łańcuch narzędzi jest objawem.
Kiedy firma wybiera Oracle, oznacza to:
Gdy firma wybiera Pythona, jest to znak:
Kiedy te dwie osoby się spotykają, strategia dużej korporacji polega na unikaniu ryzyka, wykorzystaniu pędu i wyprzedzeniu konkurencji. Strategia małej konkurencji polega na tym, aby najpierw pokonać konkurencję na rynku, a następnie być lepszym produktem. Jeśli mała firma wybierze odpowiednie bitwy, może łatwo przewyższyć dużą firmę, po prostu będąc szybszym i bardziej reaktywnym oraz wykorzystując tendencję dużej firmy do unikania ryzyka.
źródło
Wybór niejasnego języka oznaczałby rzadką techniczną pewność siebie w startupie. Firma chcąca porzucić powszechną mądrość może wiedzieć coś o rozwoju oprogramowania, czego większość firm nie wie. Z drugiej strony, mogą być tylko palantami.
źródło
Widzę komentarze PG bardziej na temat postawy niż specyfiki języka. Ludzie z wewnętrznym nastawieniem IT grają bezpiecznie. Korzystają z technologii niskiego ryzyka, mają procesy minimalizujące ryzyko i podejmują strategię niskiego ryzyka. Są zbyt zajęci martwieniem się o swój lunch, aby zjeść swój.
Ludzie na krawędzi krwawienia (python 2003) powinni się martwić. Oni są głodni. Podejmują ryzyko. Są intelektualnie ciekawi. Ten sam typ osoby, która spóźnia się z nauką nowego ekscytującego języka, jest typem osoby, która może ulepszyć Twoją branżę przed tobą.
źródło
Graham oznacza mniej niebezpieczny dla niego jako konkurenta, a nie tylko mniej niebezpieczny. Jego zdaniem nie chodzi o to, że Java (lub C ++ w 2003 r. Lub COBOL w 1980 r.) Jest mniej niebezpieczna, ale raczej, że jest normalna i że istnieje duże prawdopodobieństwo, że firmy poszukujące takich umiejętności są jedynie przeciętnymi konkurentami. Ale firmy, które szukają silnego talentu w niejasnych (lub, mówiąc dokładniej, mocniejszych i mniej znanych) językach, są firmami do obejrzenia.
I tak, ma to dziś sens. To miało sens na długo przed napisaniem przez Grahama, wtedy po prostu nie rozmawialiśmy o Javie.
źródło
Zobaczmy, jakie języki były używane przez udane start-upy. Nienaukowa lista z góry mojej głowy. Właściwe randomizowane badania byłyby lepsze, gdyby ktoś miał energię.
Przypuszczalnie dochodzimy do wniosku, że Facebook i Stackexchange nie stanowiły żadnego zagrożenia dla ich konkurentów. Niezbyt przekonujące.
Zobaczmy, czy Paul Graham w to wierzy obecnie. Współzałożyciel YCominator, który finansuje start- upy . Strona główna zawiera listę niektórych udanych start-upów. Przejrzałem je w kolejności, bardzo szybko próbując zbadać języki, których używali na początku.
Cóż, są pewne oznaki preferencji dla stosunkowo niejasnych i prawdopodobnie potężnych języków. Ale wymienione są także Flash, PHP i klasyczna ASP.
To jest esej . Jest to hiperboliczny zastrzyk dla stosunkowo niejasnego języka, który uwielbia, wraz z podstawową radą, że start-upy powinny pokochać swoją technologię i działać tak szybko, jak to możliwe. Słusznie.
źródło
Przeciętny programista używa przeciętnych narzędzi, ponieważ nie widzi wartości mocniejszych:
(Podkreśl moje.)
Im mocniejszy język, tym mniej programistów będzie go używać i tym rzadziej będzie on używany. Popularność jest zatem dobrym miernikiem tego, jak daleko siła języka jest od średniej. Im bardziej niejasny jest język, tym większa jest szansa, że programista, który go używa, wie, co robi, i wybrał go z dobrego powodu w porównaniu z innymi profesjonalistami - a doświadczony konkurent jest niebezpieczny.
źródło
Wybór języka jest trudny dla startupu. Wiele bardzo dobrych startupów wybiera „popularne” języki, aby szybko wejść na rynek, poznać założyciela i ułatwić przyszłe zatrudnienie.
Wybór rzadziej używanego języka niesie dobre znaki. Mówi, że jesteś przygotowany na poważne potraktowanie rozwoju i ciężką próbę zatrudnienia wyspecjalizowanych programistów. To tylko sygnały, że start-up to coś więcej niż wybór języka.
Podsumowując, wybór języka powinien być odpowiednio oceniany w kontekście. Na przykład Facebook działał poprawnie przy użyciu php, który ogólnie nie jest uważany za bardzo skalowalny język
źródło
Zapytaj najlepszych i najgorszych programistów, których znasz, według dowolnych kryteriów, jakie znają języki. Teraz napisz ogłoszenie o pracy, aby przyciągnąć tego pierwszego, a otrzymasz odpowiedź. Nawet jeśli twoja aplikacja jest w C ++, zyskasz lepszą klasę programistów, jeśli zatrudnisz tych, którzy znają języki, których nie uczy się w szkole.
źródło
Są dwie różne rzeczy, o które powinieneś się martwić, jeśli zawodnik używa nietypowego języka:
Obie te zalety mogą nie mieć zastosowania w danej sytuacji. Na przykład startup może łatwo przyjąć język „ponieważ jest fajny” bez zastanowienia się, czy to właściwy wybór. Mogą łatwo popełniać błędy w zatrudnieniu. Mogą łatwo strzelać sobie w stopę, nadużywając „mocnego” języka.
Ale jeśli konkurent wybiera nietypowy język i dobrze go używa wtedy tak, możesz mieć poważne zagrożenie.
Myślę, że ta zasada jest dość ponadczasowa i jest tak samo prawdziwa, jak w 2003 roku - konkretne języki i paradygmaty mogą pojawiać się i znikać, ale pomysł wyboru mocnego, ekspresyjnego języka, który będzie pasował do twojej problematycznej dziedziny zamiast ogólnego, bezpiecznego języka ogólnego prawdopodobnie zawsze zasługuje na poważną uwagę.
źródło
Jeśli twoi klienci nie są zamknięci, to tak . Powinieneś martwić się konkurencją używającą zaawansowanych języków.
Java, C #, C ++ są stosunkowo szczegółowe i mają stosunkowo wolne cykle edycji / testowania. Ogranicza to szybkość, z jaką nawet najszybsi programiści mogą dostarczać funkcje. Bardziej wyraziste języki z wbudowanym zaawansowanym metaprogramowaniem i zerowym czasem kompilacji pozwalają ekspertom na tworzenie funkcji tak szybko, jak to możliwe. Jeśli jesteś w wyścigu o udział w rynku, z ogromną nagrodą dla zwycięzcy, warto zatrudnić najlepszych programistów, których możesz znaleźć, i użyć dowolnego języka, który pozwoli im odejść najszybciej. Później możesz się martwić o skalowalność.
źródło