Zależność od IDE. Jak może mi to zaszkodzić?

27

Jestem programistą w dużym stopniu zależnym od IDE (NetBeans i Eclipse, ponieważ jestem programistą JAVA). Mogę poprawnie kodować, jeśli mam IDE. Mogę na tym bardzo polegać przy programowaniu, debugowaniu i wdrażaniu. Ale bez IDE nic nie mogę zrobić. Potrafi kodować prosty program hello world lub proste aranżacje interfejsu użytkownika, ale potrzebuję IDE do robienia skomplikowanych rzeczy lub długiego kodowania prostszych rzeczy.

Myślisz, że to mi szkodzi? Niektórzy programiści, którzy mają ponad 6-letnie doświadczenie w programowaniu, mocno wierzą, że może to zaszkodzić, ale myślę, że jeśli mogę szybko i właściwie zrobić skomplikowane rzeczy, dlaczego powinienem trzymać się notatnika i narzędzi wiersza poleceń, aby wykonać czasochłonne zadanie, gdy IDE mają kliknięcie przycisku, aby to zrobić?

Prasham
źródło
29
Nie dodam tego jako odpowiedzi, ale bycie programistą Javy (tylko) jest tym, co może ci zaszkodzić, i wiele. Naucz się prawdziwego języka, nie bądź kolejną małpą kodową spośród gazillionów używających Javy tylko dlatego, że taniej jest używać złych programistów. Proszę?
Lacrymology
5
To jest dla mnie fascynujące pytanie; Nigdy nie programowałem w niczym innym niż Emacs lub Vi. W rezultacie nie mam pojęcia, co daje ci IDE, od którego możesz się nawet uzależnić.
kasterma
8
@kasterma Zobaczmy: pomoc do kodu, narzędzia do refaktoryzacji, kreślenie kodu, debugowanie, debugowanie sparametryzowane, śledzenie stosu, obserwowanie parametrów, strukturyzowanie rozwiązania, rad, intellisense, fragmenty kodu, pomoc w kompilacji i kompilacji błędów, egzekwowanie standardów, szablony szybkiego startu, składnia zaznaczanie i wiele więcej ;-)
Syg
2
Myślę, że @Lacrymology zbliża się do innego punktu: Java jest zależna od IDE. Spróbuj nauczyć się języka, w którym większość programistów nie używa IDE, takich jak Python, Scheme lub Common Lisp; dzięki temu zyskasz nowe umiejętności i czasami będziesz trzymać się z dala od IDE.
JasonFruit
7
@ Lacrymology: Java nie jest zależna od IDE i jest jednym z najpopularniejszych języków. Uważam za szokujące, że nie uważasz, że jest wystarczająco „realne”.
Josh K

Odpowiedzi:

15

Jak powiedzieli inni, lepiej jest być szybszym w swoim IDE niż bez niego, o to właśnie chodzi. Ważną umiejętnością jest umiejętność prawidłowego korzystania ze złożonych narzędzi w celu zwiększenia wydajności.

Nadmierna zależność od IDE może jednak powodować problemy. Umiejętności i wiedza, których już nie ćwiczysz, znikną, a twoje zrozumienie niektórych aspektów może być płytkie. Klasycznym przykładem jest kompilacja i uruchamianie z wiersza poleceń - prawie za każdym razem, gdy to robię, coś mi się nie zgadza (zwykle dotyczy ścieżki klasy), ponieważ w 99% przypadków pozwalam Eclipse zrobić to za mnie.

Nie wpływa to tylko na ciebie, gdy jesteś poza środowiskiem IDE - jeśli twoja wiedza na temat złożoności ukrytego przed tobą IDE jest płytka, to kiedy pójdzie nie tak (w pewnym momencie pójdzie nie tak) znacznie trudniej to naprawić.

Zajmuję się tymi dwoma sposobami:

  1. Naucz się nowych narzędzi w ich najbardziej podstawowej formie. Na przykład przełączyłem się z SVN na Mercurial, ale zacząłem od klienta wiersza poleceń zamiast wtyczki Eclipse. Dzięki temu zrozumiałem, co się dzieje znacznie głębiej, co oznaczało, że wiedziałem, co się dzieje i jak to naprawić, gdy IDE rzucało błędy.

  2. Ćwicz swoje podstawowe umiejętności kodowania w wierszu poleceń. Jednym z fajnych miejsc do zrobienia tego jest CodingBat, w którym nie ma podświetlania składni, dopasowywania nawiasów, żadnych czerwonych podkreśleń, nic. Nie zapomnij jednak także ćwiczyć umiejętności wiersza poleceń java i javac! (I wszelkie inne odpowiednie dla twojego przepływu pracy - dla mnie będzie to również hg i ant)

Na koniec nie przejmuj się tym zbytnio. Jest mało prawdopodobne, że kiedykolwiek będziesz musiał wykonać dużą pracę bez NetBeans lub Eclipse, więc dopóki jesteś w stanie kodować bez nich i zrozumieć, co robi dla ciebie IDE, nie ma znaczenia, że ​​„ spowalniaj lub popełniaj więcej błędów bez niego.

ZoFreX
źródło
2
Jako hobby spędzanie czasu i komórek mózgowych na poznaniu szczegółów niskiego poziomu jest zabawne. Z handlowego punktu widzenia traci dużą wartość. To czas, który lepiej poświęcić na naukę biznesu, niż wdrażanie z dodatkową wydajnością, jaką zapewnia IDE.
Brian Knoblauch,
CodingBat ma teraz podświetlanie składni.
masterxilo
29

Nie. Myślę, że jest odwrotnie. IDE eliminuje konieczność znajomości frameworka na pamięć (poprzez intellisense) i upraszcza nudne / powtarzalne / złożone zadania (debugowanie, wdrażanie), rzeczy, na których tak naprawdę nie zależy. Pozwala to skupić się na rozwiązaniu problemu biznesowego . Znajomość i IDE oraz dobra znajomość mogą naprawdę pomóc w szybszym pisaniu możliwego do utrzymania kodu.

Oczywiście bycie programistą to nie tylko o to. Doświadczenie, jakie masz jako programista, pomaga ci zastosować właściwe rozwiązanie problemu, który przecina twoją ścieżkę. Myślę, że to prawdziwa umiejętność.

Syg
źródło
2
+1 za inteligencję! Żal mi ludzi, gdy patrzę, jak piszą każdą postać w programie, kiedy inteligencja tak bardzo ją przyspieszy.
David
8
Dla reszty z nas to się nazywa autouzupełnianie :)
mhitza
4
@David: Bolesne jest dla mnie patrzenie, jak ludzie wpisują dwie postacie, a następnie czekają pół sekundy, aż pojawi się autouzupełnianie i pytają, co mają na myśli. Następnie zostaną przeniesione do myszy i będą przewijać dostępne opcje, aż w końcu klikną jedno z nich. Nie, autouzupełnianie nie jest wybawieniem ani nawet naprawdę przydatne. To narzędzie leniwych.
Josh K
1
@Josh K: To prawda. Autouzupełnianie może pogorszyć złych programistów, ale może również pomóc dobrym programistom w zwiększeniu wydajności. :)
David
2
@Josh Ale na pewno jest coś więcej do intellisense / autouzupełniania niż dokończenie nazwy twojej metody? A co z opisami metod wbudowanych (co robi i jakie parametry przyjmuje), przeciążeniami dostępnej metody, dostępem do fragmentów kodu, wglądem w metody, które można zastąpić itp. Jest to naprawdę pomocne, nie ma nic wspólnego z lenistwem ...
syg
24

Nie, to ci nie „szkodzi”. Oczywiście powinieneś zrozumieć, jak działa rzeczy bez IDE (tj. Powinieneś zrozumieć podstawowy proces kompilacji itp.), Ale nie bądźmy masochistyczni w tym ... jeśli IDE sprawia, że ​​jesteś bardziej produktywny niż nieużywanie jednego, to dlaczego nie miałbyś ty

Dean Harding
źródło
17

Uzależnienie od IDE wiąże się z następującymi zagrożeniami:

  • tworzysz kompilację oprogramowania, która wymaga określonego IDE i wersji.
  • zmuszasz inne osoby z twojego zespołu do używania tego IDE do zbudowania systemu.
  • nie można łatwo zautomatyzować budowy oprogramowania.
  • nie masz pojęcia, jakie są twoje zależności oprogramowania.

Upewnij się, że możesz zbudować oprogramowanie również z wiersza poleceń. Np. W Javie użyj maven lub ant. Następnie zmniejszasz powyższe ryzyko.

Inne zagrożenia zależności IDE:

  • IDE oznacza błędy i ostrzeżenia w kodzie i daje szybkie poprawki. Mogą one nie być odpowiednie - być może w grze występuje problem z projektem lub wymaganiami.
  • zapominasz podstaw - musisz znać podstawy wybranego języka, aby go opanować i przekazać umiejętności podczas wywiadów.
  • w końcu utkniesz w piaskownicy IDE - boisz się spróbować czegoś nowego lub czegoś, co nie jest obsługiwane przez twoje IDE. Na przykład twoje IDE może mieć dość rozbudowane funkcje wyszukiwania i zamiany. Ale to nic w porównaniu z mocą i szybkością narzędzi wiersza poleceń, takich jak grep i sed. Możesz nie tworzyć Androida, ponieważ wybrane IDE (np. Netbeans) nie obsługuje go dobrze.
  • niektóre IDE nie mogą obsługiwać dużych plików - np. spróbuj otworzyć duży plik wyjściowy serwera w środowisku Eclipse. To trwa wiecznie i / lub kończy się pamięć.
Conor
źródło
3
Zgadzam się z twoimi uwagami, ale nie sądzę, aby dotyczyło to prawdziwego pytania. Pytający jest zależny nie tylko na przykład od Netbeans. Jeśli tak, to wszystkie te punkty mogą być prawdziwe, ale pytanie, jak rozumiem, polegało na użyciu ogólnie IDE, w przeciwieństwie do podstawowego edytora tekstu i wiersza poleceń.
jzd
2
Odniesienia do instancji IDE w mojej odpowiedzi to tylko przykłady tego, jak zależność IDE może być ryzykowna. Nie wskazuję konkretnie fasoli sieciowej ani zaćmienia.
Conor,
Używam Netbeans w pracy, ale wszystkie moje skrypty Ant napisałem ręcznie, aby każdy mógł zbudować projekt bez potrzeby Netbeans. Lubię funkcje edytora i łatwą nawigację po kodzie, ale robię wszystko, co w mojej mocy, aby zachować niezależność IDE.
jonescb
9

Nie ma nic złego w większej wydajności dzięki wybranemu zestawowi narzędzi. Ale jeśli po prostu nie możesz bez niego pracować, byłbym bardzo podejrzliwy w stosunku do twojej wewnętrznej wiedzy.

Nie porzucaj IDE; ale od czasu do czasu spróbuj zrobić kilka „łatwych” zajęć za pomocą edytora i dokumentacji w przeglądarce.

Pamiętaj, że nawet szybciej niż najlepsze narzędzia nie trzeba ich używać.

Javier
źródło
Nie jestem zatrzymany ani osłupiały (w 40% przypadków), jeśli nie mam IDE, ale moja prędkość zostanie drastycznie zmniejszona, jeśli nie będę mieć IDE w pobliżu. Aby wykonać dziesięciominutowe zadanie z IDE, spędziłem cały dzień z notatnikiem i javac, gdy mój ide się zawiesił.
Prasham,
cóż, notatnik jest za niski. wypróbuj edytor programisty, np. notepad ++. Pomyśl o tym jak o ćwiczeniu: nie jest zabawne, ale czyni cię lepszym, jeśli robisz to regularnie.
Javier
4

Ale bez IDE nic nie mogę zrobić.

Potrzebuję IDE do robienia skomplikowanych rzeczy lub długiego kodowania prostszych rzeczy.

Możesz to naprawić, wiesz.

Możesz nauczyć się języka i frameworka.

Nic cię nie powstrzymuje.

O ile oczywiście nie przechwalasz się zależnością od IDE.

dlaczego powinienem trzymać się notatnika i narzędzi wiersza poleceń, aby wykonać czasochłonne zadanie, gdy IDE mają kliknąć przycisk, aby to zrobić?

Jest niepowiązany „Trzymaj się notatnika” jest całkowicie niezwiązane z „bez IDE nic nie mogę zrobić”. Nic nie robienie w notatniku to nic innego jak trzymanie się notatnika. Który to jest?

S.Lott
źródło
3

Nie jesteś tak „zależny”, ponieważ oba IDE są oprogramowaniem typu open source, więc nie znikną lub nie zostaną przypadkowo „ulepszone” do tego stopnia, że ​​nie będą nadawać się do użytku. A wybrany język nie pozostawia Ci żadnych opcji - jesteś zależny od gazillionów bibliotek i po prostu głupio jest próbować zapamiętać wszystkie te nieistotne rzeczy, gdy istnieje IDE, które ci pomoże. Java jest pracowita, gadatliwa i nie możesz być produktywny bez inteligentnych narzędzi, które wykorzystują zbędną gadatliwość.

Logika SK
źródło
czy powiedziałbyś to samo dla innego języka? (w moim przypadku myślę o PHP), ale nie jestem pewien, czy to dobra rada z zasady. JAVA może być tutaj wyjątkiem
Quamis
1
Powiedziałbym to samo dla C #, może być również dla PHP. Każda kombinacja języka i problematycznej domeny, w której musisz użyć ogromnego zestawu różnorodnych bibliotek, będzie wymagać inteligentnych narzędzi. Niektóre języki są wystarczająco mocne i wyraziste, aby można je było używać bez wielu bibliotek - i można kodować proste rzeczy bez IDE. Niektóre języki zawsze potrzebują pomocy, nawet w najprostszych sprawach. Kiedy piszę w Lisp, nie mam nic przeciwko emacs, a nawet CLI REPL. Kiedy koduję w C # lub Javie, nie zrobię nic bez porządnego IDE (msvs lub eclipse).
SK-logic
ale czy potrzeba „inteligencji” lub „projektanta formularzy” nie powinna być ostrzeżeniem dla źle zorganizowanych (lub nazwanych) członków obiektów? Zauważyłem, że ludzie, którzy często używają inteligencji, używają dłuższych i bardziej szczegółowych nazw dla obiektów / funkcji / zmiennych, co sprawia, że ​​nazwy te są trudniejsze do zapamiętania. czy powinienem zrozumieć, że to także dobry nawyk?
Quamis,
Quamis: Czy nie jest odwrotnie? Konieczność pisania powoduje, że wybierasz krótkie nazwy, które nie opisują klasy / metody, a także długie nazwy.
DistantEcho
@Niphra: tak, a ja bardziej lubię krótsze nazwy bardziej :) moim zdaniem ułatwia odczytanie kodu .. jeśli metoda robi coś, czego nie da się opisać w skrócie, to tak, dłuższa nazwa jest akceptowalna, ale ja Staram się w skrócie mówić krótko i nie widzę w tym nic złego.
Quamis,
3

Myślę, że szkoda wynikająca z nadmiernej zależności od IDE pojawia się, gdy bezmyślnie polegasz na kreatorach, którzy generują kod dla ciebie. Zarówno NetBeans, jak i Eclipse są dość lekkie w stosunku do tych, co jest dobrą rzeczą IMO. Kolejną szkodą byłoby, jeśli znasz tylko jedno IDE i nie możesz używać innych. Niektóre firmy mają zasady, które określają, z czego będziesz korzystać. Na dobre lub złe, to jest to, czym jest.

Uważam, że jeśli IDE nie czyni cię bardziej produktywne, to nie opłaca. Na przykład jestem najbardziej produktywny dzięki JetBrains IDEA, ale Eclipse przeszedł długą drogę i mogę być całkiem produktywny. Eclipse został również przystosowany do szerokiego zakresu zastosowań - co jest podwójną korzyścią. Chociaż mogę się poruszać w VIM lub innym edytorze tekstu, istnieją inne funkcje, które uważam za niezastąpione w większości obecnych IDE, takie jak obsługa refaktoryzacji.

Berin Loritsch
źródło
2

Nie sądzę, że robisz sobie przysługę. To prawda, że ​​używasz Eclipse, które jest bezpłatnie dostępne i działa w dowolnym miejscu, w którym masz JVM. Ale wcześniej zdarzały mi się sytuacje, w których musiałem zdalnie podłączyć się do innego komputera za pośrednictwem sesji terminalowej bez serwera X, co oznacza, że ​​musiałem użyć zwykłego edytora tekstowego, takiego jak vi, i zbudować z wiersza poleceń. Pracuję również w środowisku, w którym sieć programistyczna jest fizycznie odizolowana od reszty świata, a wszystkie transfery między nią a siecią publiczną odbywają się za pośrednictwem mediów fizycznych. Jedynym powodem, dla którego mamy Eclipse w tej sieci, jest to, że najpierw przeszła kilka warstw akceptacji.

Obciąłem zęby na C i Fortran 77 w środowisku wiersza poleceń (VAX / VMS), więc uważam, że potrzeba IDE jest nieco podejrzana. Są to jednak małe języki w porównaniu do bestii jaką jest Java; Biorąc pod uwagę, że potrzebujesz wózka widłowego do noszenia najnowszej książki Java Nutshell, widzę, jak posiadanie IDE ułatwia życie.

John Bode
źródło
2

To może naprawdę nie zaszkodzić, ale zyskałbyś, gdybyś był również zaznajomiony z robieniem rzeczy bez IDE. Nie bój się poszerzać swojego horyzontu.

Pamiętaj, że większość narzędzi programistycznych jest najpierw zapisywanych jako narzędzia wiersza poleceń. IDE to przemyślenia, co jest w porządku. Z drugiej strony często znajdziesz „przełączniki wiersza poleceń ukrytego klejnotu” lub „zaawansowane sztuczki”, których nigdy nie dowiesz się, jeśli będziesz ciągle wskazywać i klikać.

Aby odpowiedzieć na pytanie „Jak może mi to zaszkodzić?” Myślę, że zaszkodziłoby ci, kiedy przywiązałeś się do niego tak bardzo, że uważasz, że wszystkie narzędzia wiersza poleceń będą działały wolniej niż klikanie przycisków, do tego stopnia, że ​​unikniesz nauki narzędzi wiersza poleceń (które są początkami).

To tak jak nauka asemblera jako programisty - bardzo niewielu z nas dzisiaj pisze asemblera ręcznie, ale uważam, że ci, którzy rozumieją asembler, są lepszymi programistami w każdym języku, którego używają.

kizzx2
źródło
2

Uzależnienie od komputera jest już dość szkodliwe. Zawsze programuję w przepasce biodrowej z dużą kamienną tabletką i młotem. Kod zabiera trochę czasu, ale kiedy kończysz szczególnie dużą metodę, zwykle coś jesz. Tam staram się być niezależny od supermarketu i tego rodzaju rzeczy, więc uprawiam całą moją pszenicę w domu i po prostu jem. Oczywiście dostawcy nasion i wody pszenicy prawie mnie uzależniają, co sprawia, że ​​myślę, że nie ma wyjścia z tego cyklu zależności.

Poważnie: jeśli <disclaimer>użyjesz IDE i </disclaimer>nie będziesz mieć IDE, a MUSISZ program, powinieneś po prostu zastanowić się nad grą

  1. Zadzwoń do IT lub
  2. Napraw problem samodzielnie, jeśli jesteś IT

Nie tylko nie powinieneś programować bez narzędzi, które uznasz za konieczne, ale nie możesz również używać pasty do zębów jako pasty termicznej.

Dan Rosenstark
źródło
1

Bycie zależnym od IDE niekoniecznie musi cię skrzywdzić, ale umiejętność działania bez wybranego środowiska jest istotną umiejętnością.

IDE mogą powstrzymać cię od uczenia się „drobiazgów”, które są zwykle nieistotne i mogą pomóc w szybszym wykonaniu zadania, ponieważ unikniesz niepotrzebnego pisania na klawiaturze. Zazwyczaj można również rozwiązać problemy, gdy się pojawią, np. Źle napisała funkcję.

Moją osobistą zasadą przy nauce dowolnego języka / frameworka / etc jest nauczenie się go najpierw. Potem, kiedy go opanowałem, upadłem, zyskałem prawo do robienia tego w prosty sposób. Chodzi o to, że jeśli nie znasz niektórych drobiazgowych drobiazgów, kiedy główny kanał ściekowy zacznie wylewać bzdury z zlewu kuchennego, będziesz SOL. Jeśli wiesz, jakie są podstawowe operacje, które mogą być potencjalną przyczyną, prawdopodobnie możesz rozwiązać problem lub całkowicie go zatrzymać.


źródło
0

Wypróbujmy dobry edytor tekstu, np. PSPad dla MS-Windows (darmowy), TextMate dla Mac OS X, Geany dla GNU Desktop (opensource) lub Kate dla KDE (opensource).

MultiEdit4.0 dla MS-DOS zmieniło moje życie kilka lat temu, od tego czasu jestem bardzo rozsądny dla edytorów tekstu.

ern0
źródło