Tak więc, wybierając język, który ma być użyty w projekcie, w idealnym świecie język jest wybierany, ponieważ jest właściwym narzędziem do pracy. Często jednak wolę używać języka, w którym jestem biegły , niż takiego, którego musiałbym się uczyć lub w którym rozmawiam. Oczywiście biegła znajomość języka wymaga również znajomości odpowiednich bibliotek w tym języku. To, że naprawdę lubię język ogólnego przeznaczenia, taki jak Java, nie oznacza, że zawsze powinienem go używać, ale jednocześnie nie oznacza to, że powinienem wyłamywać coś takiego jak Perl za każdym razem, gdy trzeba wykonać przetwarzanie tekstu. Jak znaleźć równowagę tutaj?
źródło
Myślę, że za znajomość nie ma wystarczającego uznania. Twoja znajomość bardzo dobrze wpływa na to, jakie jest właściwe narzędzie. Musisz użyć tego narzędzia do ukończenia projektu. Co więcej, korzystanie z czegoś, co lubisz, może bez wątpienia przekroczyć wszelkie niedociągnięcia w jego sprawności, ponieważ będziesz bardziej podekscytowany wykonaniem pracy i osiągniesz lepsze wyniki.
http://headrush.typepad.com/creating_passionate_users/2006/08/when_the_best_t.html
źródło
Naprawdę nie da się tego rozwiązać, chyba że jako pytanie biznesowe. Jednak wiele pytań gospodarcze są patrząc tylko na liczby krótkoterminowych, co jest błędem ze takie rzeczy.
Moje ogólne podejście:
Trzy rzeczy, aby pamiętać, jak myślisz o koszty i korzyści: jedna, ludzie w pośpiechu tendencję do krótkiej zmienić przyszłość. Po drugie, koszty utrzymania stanowią lwią część kosztów każdego udanego systemu. Po trzecie, dobrzy programiści lubią uczyć się, a utrzymywanie zadowolenia programistów to dobra inwestycja długoterminowa.
źródło
Świetne pytanie! Jak powiedział w swojej odpowiedzi whatsisname, „znajomość nie ma wystarczającego uznania”. Inne narzędzie, inna struktura, inny język może być bardzo dużo lepsze niż to, do czego jesteś przyzwyczajony, a przy pierwszym użyciu nadal będziesz o wiele mniej produktywny.
Od kilku lat pracuję jako programista ASP.NET w agencjach cyfrowych, w których mamy mieszankę dużych projektów, małych projektów, ciasnych projektów, dobrze wypełnionych projektów itp. Co staramy się robić, aby poszerzać nasze umiejętności, szuka „miękkich celów”, mniejszych projektów, które nie mają boleśnie napiętych i trudnych terminów, i wykorzystuje je jako okazję do wykorzystania nowej technologii, która może być lepsza. .NET 2.0, 3.5, 4.0, ASP.NET MVC, Linq to SQL, Entity Framework - wszystkie z nich po raz pierwszy użyłem w takim projekcie.
Jeśli wykorzystasz takie możliwości, to masz nadzieję, że będziesz gotowy z większym pakietem opcji wyboru odpowiedniego narzędzia bez cierpienia braku znajomości. Podobnie jak w przykładzie Julio: znaleźli cel, w którym mogliby dodać Ruby do swojego repertuaru, a teraz idąc naprzód mogą wybierać między Javą a Ruby.
Ale jeśli termin jest krótki i solidny, a projekt jest ważny, radzę trzymać się dobrze znanych narzędzi. Coś innego może być lepiej dostosowane, ale w takich projektach chodzi o ryzyko .
źródło
To zależy od kilku rzeczy:
1. Jak dobry jesteś w nauce nowych języków lub narzędzi.
Jeśli szybko się uczysz, bariera w nauce nowych języków lub narzędzi jest niższa. Daje to możliwość dodania innego narzędzia do przybornika.
2. Jak niezależny jest język / narzędzie od środowiska pracy.
Jeśli przepływ pracy zależy w dużej mierze od narzędzi, bariery w nauce różnych języków są większe. Jeśli jesteś przywiązany do konkretnego IDE, zmiana języka wymaga znacznie więcej niż tylko nauki języka, ponieważ edytowanie tekstu z pewnością cię frustruje.
Ktoś używający vima lub emacsa nie ma tego problemu. Wszystko, co muszą zrobić, to nauczyć się nowego języka.
3. Rzeczywistość biznesowa
Nauka nowych narzędzi / języków wymaga czasu. Ten czas ma swój koszt. Ale ten koszt może potencjalnie być inwestycją, która zwraca więcej niż początkowy koszt. Ponadto nieefektywne rozwiązanie zwykle zajmuje więcej czasu i jest trudniejsze w utrzymaniu. Jeśli jest to coś większego niż mały projekt, a narzędzia w moim istniejącym zestawie narzędzi wydają się nie pasować do problemu, zbadam, które narzędzia pasują do problemu. Zainwestowałem także w środowisko dostosowane do podejścia ogólnego, ucząc się korzystać z vima jako mojego wybranego redaktora.
Kolejna sprawa - jaka jest najkrótsza odległość między dwoma punktami? Jeśli ktoś inny napisał coś, co prawie robi to, co chcę, zazwyczaj najprościej jest po prostu zmodyfikować to, aby dopasować do moich potrzeb.
źródło
Jeśli jesteś ciekawy nowego języka, a Ty (i firma) możesz sobie na to pozwolić, dlaczego nie poświęcić na to od kilku tygodni do miesiąca?
W ten sposób nauczyłem się rubinu. Mój partner programista miał 7 lat doświadczenia w Javie. Miałem 11 lat doświadczenia w Javie. Żadne z nas nie wiedziało nic o ruby, tylko że chcieliśmy tego spróbować.
Przekonałem go i resztę firmy do wypróbowania rubinu przez miesiąc (miał to być projekt 6-8 miesięcy). W najgorszym przypadku zaczniemy od nowa za pomocą Java.
Na szczęście po tygodniu byliśmy uzależnieni, więc wszystko poszło dobrze. Być może możesz spróbować czegoś podobnego? Sprawdź, czy możesz zbudować coś od zera w jakimś innym języku, ale wyjaśnij firmie, dlaczego to robisz, a co najmniej równie ważne, jaki jest plan B na wypadek niepowodzenia eksperymentu.
źródło
Oczywiście nie ma jednej odpowiedzi na to pytanie, która dotyczyłaby wszystkich sytuacji. Ale tutaj jest aspekt, o którym myślę, że nie został jeszcze wspomniany. Jeśli jesteś programistą, powinieneś również wziąć pod uwagę własną zbywalność. Jeśli język X zostanie wybrany dla twojego projektu, jak to będzie wyglądać w twoim CV? Dobrym pomysłem może być wybór języka, którego nie znasz, aby mieć powód do nauki go, poszerzenia horyzontów intelektualnych i uczynienia swojego zestawu umiejętności bardziej atrakcyjnym dla przyszłych pracodawców.
źródło
Powiedziałbym, że znajomość języka jest również aspektem „bycia odpowiednim narzędziem do pracy”. Nie wyobrażam sobie sytuacji, w której np. Prolog byłby dla mnie właściwym narzędziem do pracy, biorąc pod uwagę moją całkowitą nieznajomość języka.
źródło
Moja własna wersja polega na „korzystaniu z odpowiedniego dostępnego narzędzia” do pracy. Bycie „dostępnym” oznacza, że mogę z niego korzystać, nie tylko że mogę kupić / pobrać kompilator i // lub środowisko uruchomieniowe.
W prawie każdym scenariuszu z życia, mając problem, masz bardzo ograniczony czas na jego rozwiązanie. Nie wierzę, że naprawdę możesz nauczyć się nowego języka w bardzo krótkim czasie . Uczenie się języka oznacza faktyczne czytanie książek, zapoznawanie się z kodeksem innych ludzi, rozumienie jego działania i leżącej u jego podstaw filozofii. Można po prostu przeczytać samouczek z Internetu (który jest doskonale dobry jako punkt wyjścia) i uzyskać hakowanie. Doprowadziłoby to do okropnego kodu i prawdopodobnie lepiej byłoby napisać lepszy kod w języku, który znasz, w możliwie dużo krótszym czasie.
Pomimo zalet przysłowia „odpowiednie narzędzie do pracy”, najpopularniejsze języki są w rzeczywistości ogólnego przeznaczenia. Mogą mieć mocne strony w niektórych obszarach i nie być tak dobre jak inne w innych obszarach, ale mogą wykonać większość prac. Nieznajomość języka praktycznie oznacza, że narzędzie nie jest dla Ciebie dostępne.
Nie mówię, że uczę się jednego (a nawet dwóch lub trzech) języków i używam ich do wszystkich projektów i nie uczę się niczego innego. Ważne jest, aby uczyć się innych języków, aby zdobyć więcej narzędzi do dodania do zestawu narzędzi. Ale w obliczu problemu lepiej jest trzymać się narzędzi, które znasz, niż zwiększać obawy, korzystając z nieznanych technologii. Ale ucz się innych języków, aby następnym razem wybór był łatwiejszy.
źródło