Równowaga między „właściwe narzędzie do pracy” i znajomości [zamknięte]

19

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?

Michael McGowan
źródło

Odpowiedzi:

12

Wow, że jest to bardzo trudne pytanie, kiedy wyjęte ze świata teorii i do świata produkcji.

W teorii

Prosty. Zawsze należy stosować najlepsze narzędzie do pracy i po prostu dowiedzieć się, co trzeba.

W praktyce

Nie tylko jest tam kwestia swojej płynności istnieje wiele innych pytań biznesowych, które muszą być zadawane, zanim będzie można odpowiedzieć na to pytanie:

  • Koszt zakupu „właściwego oprzyrządowania”
  • Koszt utrzymania tego - ludzie muszą być przeszkoleni
  • Krzywa kosztu nauki
  • Koszt integracji z innymi produktami (teraz iw przyszłości)
  • ... itd

Poza teorią istnieją poważne konsekwencje dla wyboru technologii.

Teraz nie mówię, że nie wybieraj właściwego narzędzia - po prostu upewnij się, że odpowiednie narzędzie będzie w stanie wytrzymać nawet ze względu na koszty.

Jeśli jest to projekt osobisty - zawsze używaj „właściwego” narzędzia - więc gdy podejmujesz tę decyzję w kontekście biznesowym, możesz lepiej poinformować.

Stephen Bailey
źródło
2
Teoretycznie nie jest to „proste”. Tylko co robi najlepiej naprawdę znaczy ? Jakie są kryteria?
whatsisname
+1: Po połączeniu wszystkich czynników prawidłowe narzędzie może nie być najlepszym narzędziem - niewiele osób je otrzymuje, wybiera najlepsze narzędzie i ponosi konsekwencje.
Steven Evers,
1
@whatsisname best jest subiektywny i zależy od twojego środowiska, budżetu, ram czasowych ... - ale w duchu projektu domowego byłoby to wypróbowanie technologii zaprojektowanej w celu rozwiązania tego problemu. Np. Erlang dla rozproszonego, Perl do manipulacji tekstem - wtedy możesz dokonać własnego osądu.
Stephen Bailey,
Jedną z rzeczy, których jestem coraz bardziej pewien, jest to, że Java nie jest w większości odpowiednim narzędziem do tego zadania. Jest tak wiele lepszych alternatyw. Nie zrozum mnie źle. To był świetny język w '00 i wiele osób się do niego przyzwyczaiło, ale dla mnie nie jest to NAJLEPSZE narzędzie (ale nadal narzędzie w niektórych przypadkach używam, po prostu nie najlepsze) do mojej pracy. Nie do majsterkowania, nie do dużych zbiorów danych, nie do Internetu.
dbed
9

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

whatsisname
źródło
3

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:

  1. Jeśli jest to coś małego lub krótkoterminowego, zawsze pisz to w znanych narzędziach.
  2. Jeśli jest to rzeczą duży, długoterminowy, spojrzenie na kompromis kosztów i korzyści z uczenia się nowego narzędzia.
  3. Jeżeli nie jesteś pewien, traktować go jako krótki rzeczy dopóki nie masz dowodów, że jest to sprawa długoterminowa. Następnie ponownie spójrz na decyzję.

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.

William Pietri
źródło
1

Ś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 .

Carson63000
źródło
1

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.

użytkownik21007
źródło
0

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.

Julio
źródło
0

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.

Dima
źródło
0

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.

Nemanja Trifunovic
źródło
0

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.

MAK
źródło