Programowanie nie jest mi obce. Najpierw zacząłem robić znaczniki (HTML, teraz proszę się ze mnie nie śmiać), kiedy miałem 12 lat, i trochę BASIC, kiedy miałem 13 lat (w tym momencie wiele wiedziałem o schematach blokowych, pseudokodach), ale potem zostałem upomniany Biologia w liceum, a zatem przeoczyła „prawdziwą” znajomość programowania języków takich jak C, Java itp. Podjąłem CS dla mojego UG BE (podobny do BS, ale o wiele bardziej teoretyczny). Nauczyłem się C & C ++ (w mniejszym stopniu) na własną rękę (mój profesor był totalnym bólem, a klasa była przepełniona bzdurami (którzy już nauczyli się tego w szkole, a zatem nie zwracali uwagi na klasę i nie pozwól mniejszym śmiertelnikom takim jak ja zwracać uwagę na klasę) i może stworzyć niesamowity program do dodawania lub mnożenia (taki, który teraz nawet życzliwsi ogrodnicy ”
Moim głównym problemem jest to, że zawsze czułem się niewystarczający i zduszony przez moje ograniczone umiejętności programistyczne i umniejszony przez kibiców (uwierz mi, natknąłem się na tę stronę wieki temu, ale teraz mogłem teraz zdobyć odwagę, by publikować posty pytanie), a czasami nawet przygnębiony z powodu wspomnianej niemożności. Większość ludzi twierdzi, że programowanie niekoniecznie musi dotyczyć języka, ale stanu umysłu danej osoby i technik, które stosuje w celu rozwiązania problemów / problemów. Zgadzam się z takimi sentymentami, ale czy kiedykolwiek mogę uzyskać taki „stan umysłu”, a jeśli tak, to jak powinienem podejść do „Programowania / Kodowania”, a jeśli istnieją jakieś ustalone sposoby i kroki, które należy wykonać, aby osiągnąć „Zen” kodowania ”. Jak mam to zrobić? Nie zaszkodzi też, jeśli jakiś Święty chce mentorować ten zdeptany kawałek $ #! ^.
PS Będę na zawsze wdzięczny każdej osobie, która uważa mnie za wartą czasu, i jako bonus wymienia moje pierwsze oprogramowanie, które wysyłam po nich. (Jeśli kiedykolwiek uda mi się wysłać jeden, tj.)
TL; DR: Nigdy tak naprawdę nie nauczyłem się „programowania / kodowania”, nie mogę rozwiązać problemów, nawet jeśli spróbuję. Pomóż mi!
Odpowiedzi:
Twierdzę, że najlepszym sposobem jest poświęcenie na to więcej czasu (poszukiwanie reguły 10000 godzin). Znajdź coś, co chcesz zrobić, i przygotuj się, aby to zrobić. Wybierz coś, co wykracza poza twoją obecną zdolność, ale nie tak daleko, że nie będziesz w stanie ukończyć go w rozsądnym czasie. Jeśli naprawdę ci się to podoba, przekonasz się, że będziesz w tym naprawdę dobry. Jeśli ci się to nie podoba, być może nie jest to dla ciebie właściwe. Spróbuj się jednak zmierzyć, prawdopodobnie spodoba ci się.
źródło
Wysyłaj rzeczy . To jedyna droga. Zrób rzeczy. W pracy, twoje własne projekty, projekty open source. Zacznij wysyłać rzeczy. Mogą to być bardzo małe rzeczy, takie jak naprawa błędów lub minimalna funkcja rynkowa. Po prostu zacznij wysyłać rzeczy . Nic nie jest bardziej satysfakcjonujące lub budujące zaufanie niż sukces.
Edycja: powinieneś przeczytać Ship It . Wspaniale.
Edytuj ponownie: Doświadczenie w robieniu czegoś innego niż wysyłka to po prostu porażka. Widziałem wielu „starszych” programistów, których głównym doświadczeniem nie było wysyłanie rzeczy (i znajdowanie wymówek dla ich nie wysyłania). Wysyłamy prawdziwych artystów .
źródło
„problem”, „nieadekwatny”, „uduszony”, „ograniczone umiejętności X”, „umniejszone”, „przygnębiony”, „niezdolność” w jednym zdaniu, wszystko skierowane do siebie sugeruje mi jakieś niezagojone rany z przeszłości wciąż bolesne ty. Jeśli znajdziesz sposoby na przezwyciężenie tych problemów, programowanie lub jakiekolwiek takie rzemiosło byłoby bardzo łatwe do opanowania. Być może pomogłoby tu czytanie o odporności innych ludzi. Każdy przeżywa bolesne chwile w swoim życiu. Gdyby te rany / rany nie zostały uleczone, ich sukcesy by nie przyszły. Najpierw ulecz swoje rany. Programowanie może poczekać na później.
Jeśli chodzi o umiejętności programowania, to jak uczę się nowego języka i zaczynam myśleć tak, jak inni, którzy już programują w tym języku, najpierw czytam wszystko, co mogę położyć na ręce, co jest związane z tym językiem. Następnie, gdy przeczytam wystarczająco dużo, zacznij pisać małe programy.
źródło
Kilka rzeczy, których naprawdę potrzebujesz, aby zacząć:
Wytrwałość: Zostanie dobrym programistą wymaga czasu. Musisz napisać dużo złego kodu, zanim napiszesz dobry kod - dużo złego kodu. Na szczęście masz zasoby, takie jak ta strona, które mogą Ci pomóc. Tak długo, jak poświęcisz się nauce programowania, będziesz w stanie szybko połączyć proste gry i narzędzia!
Cele: wyznacz sobie cele. Powiedz, jak nauczyć się używać STL w C ++ za dwa tygodnie. Zobacz, jak sobie radzisz. Jeśli zajmie to więcej czasu, śledź, o ile dłużej, pomoże ci to lepiej w przyszłości. Nauczyłem się tej sztuczki od współpracownika; potrafił oszacować, ile czasu zajmie mu prawie każde zadanie. Pomogło mi to śledzić, jak długo spędzam na osobistych projektach i pomaga mi utrzymać kontrolę nad balonami (nazywają to zarządzanie zakresem).
Ciekawość: musisz być zainteresowany i zaangażowany. Jeśli nie jesteś typem osoby, która nie podchodzi do problemów z chęcią znalezienia rozwiązania, początkowe programowanie będzie początkowo trudne, a debugowanie może być koszmarne. Ale tak wcale nie musi być. Jeśli masz problem, zapytaj w witrynach takich jak ten, zgłoś błąd w Google. Jeśli nie wiesz, jak coś zaimplementować, zapytaj! Zawsze są ludzie, którzy są gotowi pomóc!
Pewność siebie: bądź pewny siebie co do tego, co chcesz zrobić, i wystarczająco pewny siebie, aby zadawać pytania. Jeśli ktoś pokaże ci inny sposób zrobienia czegoś, nie bądź defensywny, ani nie narzucaj się sobie, że zrobiłeś źle; pomyśl o tym, gdy uczysz się innego podejścia do rozwiązania twojego problemu!
Przede wszystkim zachowuj pozytywne nastawienie, czytaj wiele samouczków i zadawaj wiele pytań, a będziesz szczęśliwym programistą! Kolejna rada, którą muszę udzielić, to wybrać język, trzymaj się tego, dopóki nie będziesz bardziej pewny siebie. Masz dużo czasu na naukę różnych języków, ale kiedy zaczynasz, po prostu pracuj z jednym.
Powodzenia! I pamiętaj, to ma być zabawne! = D.
źródło
W rozwoju wydaje się, że paradoks „im więcej wiesz, tym więcej wiesz, że nie wiesz” jest prawdą.
Jeśli jesteś miłą, uczciwą osobą, musisz zaakceptować ten fakt i nauczyć się sobie z tym radzić.
Zaufanie, w sensie sugerowanym przez pytanie, jest bardzo osobistą rzeczą, która naprawdę nie ma nic wspólnego z konkretnym zestawem umiejętności lub metodologią.
W bardziej płytkim tonie, sentyment opisany w http://www.kalzumeus.com/2011/10/28/dont-call-yourself-a-programmer/ (sekcja: radykalnie przeceniasz przeciętne umiejętności zawodów z powodu tłum, z którym się kręcisz) zawsze mi pomagał.
Sugerowałbym, abyś nauczył się być bardziej pewny swojej pracy, niż budować zaufanie do swoich umiejętności jako całości. Najlepszym sposobem na to jest napisanie powtarzalnych testów dla całego kodu. Działa cuda na twojej psychice.
źródło
WhiteFang34 ma całkowitą rację. Jako biolog odkryłem, że jedynym sposobem, aby nauczyć się programowania, jest po prostu zacząć to robić. Przeczytaj kilka książek, miej zawsze pod ręką Google i SO i „po prostu zrób to”. Twoje programy będą na początku bardzo proste, źle zakodowane i zawierają błędy, a wraz z upływem czasu będziesz coraz lepszy. Nie mam czasu na lekcje programowania, ale spędzam dużo czasu na kodowaniu (bo fajnie to robić).
Wybierz język, który pozwoli ci więcej myśleć o tym, co chcesz zrobić, a mniej o tym, jak to zrobić. c nie jest tego bardzo dobrym przykładem. Wypróbuj języki wyższego poziomu, takie jak java lub c #, ponieważ pozwolą ci robić więcej, dzięki czemu zyskasz odwagę próbowania coraz więcej.
(To oczywiście zakładając, że nie zajmujesz się karierą jako profesjonalny programista, w takim przypadku powiedziałbym tylko, że wróć do szkoły ...)
Powodzenia i życzę szczęśliwego kodowania
PS: Och, a będziesz potrzebować dużo lenistwa, niecierpliwości i pychy
http://c2.com/cgi/wiki?LazinessImpatienceHubris
źródło
Zabawne jest to:
Chodzi o zrozumienie subtelności prawdziwego świata, interakcję między rzeczami. Umiejętność myślenia abstrakcyjnego . Umiejętność zauważania i zapamiętywania rzeczy . To nieuchronnie prowadzi do dobrego rozwiązywania problemów.
Wdrożenie, sam kod przychodzi dopiero potem - po pomyślnym
rozwiązaniu danego problemu w twoim umyśle.
źródło
Zaufanie nie jest czymś, co powinieneś spróbować poczuć na temat swoich umiejętności. Zaufanie jest słabo (prawdopodobnie nawet negatywnie) skorelowane z faktycznymi umiejętnościami. Powinieneś pracować nad doskonaleniem swojego zestawu umiejętności zawodowych (lub cenionego hobby) bez względu na to, co myślisz o swoim obecnym poziomie umiejętności.
Zaufanie to coś, co inni ludzie, ci, których uważasz za kompetentnych, powinni poczuć swoje umiejętności po pracy z tobą lub po obejrzeniu pracy.
źródło
To bardzo proste: zainteresuj się tym ! Wydaje się, że już jesteś, więc znajdź coś, co według ciebie byłoby fajne, a następnie zrób to, zadając wszelkie pytania, które potrzebujesz, po drodze, używając wszelkich dostępnych środków, aby ułożyć projekt tak, jak chcesz chcieć tego. Opłucz i powtórz, a okaże się, że jesteś świetnym programistą, nawet bez większego wysiłku, ponieważ po drodze było to interesujące / zabawne.
Ponadto zachowaj równowagę między rozwiązywaniem problemów a zadawaniem wielu pytań. Szczególnie na początku ogromną pomocą jest, aby inni mówili ci, gdzie się mylicie, aby w pewien sposób pobudzić Cię w pierwszej części krzywej uczenia się. Stamtąd postaraj się rozwiązać wszystko samodzielnie, a jeśli utkniesz po chwili, zadaj pytanie na ten temat. To, co często robię, to zamieszczam pytanie na SO, a następnie szukam odpowiedzi, od czasu do czasu sprawdzając SO. Czasami znajduję odpowiedź jako pierwsza, a czasem przede mną.
Nie martw się tak bardzo o to, która technologia, choć tworzenie grafiki za pomocą HTML5 + JavaScript + tag canvas może być naprawdę fajne, ponieważ konfiguracja jest łatwa, nagrody są natychmiastowe i możesz je udostępnić.
źródło
Podejdź do programowania z bardziej pozytywnym nastawieniem uczniów. Nikt nie wie wszystkiego. Po drugie, dowiedz się, dlaczego jesteś zainteresowany programowaniem, tak jak lubisz:
Kiedy wiesz, co lubisz w programowaniu, możesz skoncentrować swoje wysiłki edukacyjne w tym kierunku. Jestem majsterkowiczem / rozwiązuję problemy. To czyni mnie niezwykle pragmatycznym. Algorytmy i struktury danych, ogólnie teoria informatyki uśpiły mnie.
Moje pochodzenie jest podobne do twojego. Zacząłem budować komputery w wieku 10 lat. Czy trochę HTML / C ++ u moich nastolatków ... znudziło się nim ... przestałem na kilka lat. Jednak nigdy nie przestałem bawić się komputerem.
Teraz uwielbiam programować. Co się zmieniło? Znalazłem moją motywację. Zacząłem pracować tam, gdzie dostaję mnóstwo problemów do rozwiązania. Znalezienie sprytnych, prostych rozwiązań złożonych problemów naprawdę rozpala mój ogień.
Wreszcie, nie martw się o to, jak kodują inni, czy jest to „właściwe”, czy nie. Ma rację, jeśli robi to, co chcesz. Po rozpoczęciu pracy w zespole standardy stają się ważne. Wynika to w dużej mierze z faktu, że inne osoby będą musiały być w stanie interpretować i modyfikować twoją pracę. Standardy projektowania nie są czymś, o co powinien dbać nowy programista.
źródło
Podczas uczenia się nowych rzeczy zawsze trzeba przezwyciężyć bezwładność. Ciekawi programiści, których znałem, mają trudności ze znalezieniem motywacji do dalszego uczenia się nowych języków i paradygmatów. Powiedzą: „Potrzebuję projektu, aby wypróbować X”. aby nauczyć się X. Kilku faktycznie znajdzie / wymyśli ten projekt.
Pamiętaj, że kariera programistyczna będzie procesem frustracji, nauki, eksperymentów i przechylania się przeciwko wiatrakom przez całe życie. Dopóki AI nie przejmie wszystkiego.
Jeśli nadal zajmujesz się prawdziwą nauką, powinieneś być w stanie wyobrazić sobie jakiś projekt / potrzebę. Na przykład łączenie danych z wielu źródeł w Internecie lub poza nim. To może zainspirować do nauki javascript lub R, a nawet Excel / VBA. Jeśli potrafisz połączyć kilka kropek dla innych w swojej dziedzinie, zostaniesz rozpoznany, i voila, będziesz programistą.
Używaj, ale uważaj na mentorów. Pytanie organ.
A tak przy okazji, „kodowanie zen” to oksymoron.
źródło
Nigdy nie będziesz pewny swoich umiejętności programistycznych.
Sposób, w jaki opisujesz swoje umiejętności, wskazuje na sposób myślenia, w którym nigdy nie będziesz zadowolony ze swoich umiejętności. Opanowałeś C ++? Poczekaj, jest Java! Opanowałeś Javę? Poczekaj na programowanie równoległe. Opanowałeś programowanie równoległe w C ++ i Javie? Poczekaj, jest SOA! Jest OOD! I MVC! SOLIDNY! Programowanie funkcjonalne! Programowanie sieciowe! Programowanie w chmurze! Programowanie mobilne!
Chodzi o to, aby nie czuć się przygnębionym z tego powodu. Musisz nacisnąć kilka przycisków w głowie: Twoje wątpliwości co do umiejętności są czystym paliwem. Prawdopodobnie nigdy nie osiągniesz satysfakcjonującego poziomu umiejętności programowania. Dopóki tak się stanie, będziesz iść do przodu. Trudność polega na uświadomieniu sobie tego i zrobieniu czegoś przeciwko niemu, chociaż nigdy nie będzie celu. Im dłużej wytrzymasz, tym wyższy będzie Twój poziom umiejętności.
źródło
Kiedyś czułem to samo i to właśnie strony Stack Exchange pomogły mi w uzyskaniu pewności siebie.
Zacząłem używać StackOverflow do znajdowania odpowiedzi na moje pytania i pewnego dnia zobaczyłem odpowiedź, na którą znałem. Zamieściłem odpowiedź, otrzymałem trochę głosów i komentarz, że była to dobra odpowiedź, i to zachęciło mnie do rozejrzenia się za innymi pytaniami, na które mógłbym odpowiedzieć.
Wkrótce stał się dla mnie uzależnieniem, znajdując pytania bez odpowiedzi, które mogłem rozwiązać, a wraz z upływem czasu zacząłem zdobywać zaufanie do swoich odpowiedzi. Nie musiałem już mówić „myślę, że to dlatego, że…” lub „To powinno powodować ...”, ale mogłem powiedzieć z pewnym przekonaniem, że „To dlatego, że ...” lub „To powoduje ...”
Lubię łamigłówki, a dla mnie SO pytania były jak mini-programowanie, z dodatkową korzyścią uzyskania pozytywnej opinii, jeśli otrzymam właściwą odpowiedź. Jeśli otrzymałem błędną odpowiedź, po prostu ją usunąłem i wyciągnąłem wnioski z rozwiązań innych osób dotyczących tego samego problemu.
Więc moim zaleceniem byłoby pójść na SO i przejrzeć pytania w dowolnym interesującym tagu i poszukać takich, na które według ciebie można znaleźć odpowiedzi. Nie ma nic lepszego niż ludzie, którzy powiedzą ci, że twoje odpowiedzi programistyczne są pomocne / dobre, aby dać ci pewność co do umiejętności programowania :)
źródło
Twój mózg nie lubi zbyt ciężkiej pracy. Biorąc pod uwagę wybór, woli wyjść na prostą. Dlatego łatwo jest zrezygnować z rzeczy, gdy próbujesz zmierzyć się z czymś zbyt ambitnym - zbyt wiele do nauczenia się, zbyt wiele drobiazgowych szczegółów, aby dojść do siebie, zbyt dużo golenia jaków.
Jest kilka rzeczy, które możesz zrobić, aby z tym walczyć. Po pierwsze energia. Staraj się ćwiczyć, kiedy jesteś wypoczęty i dobrze karmiony, albo twój mózg dosłownie nie będzie miał wystarczającej ilości paliwa do skomplikowanej abstrakcyjnej myśli. Druga sztuczka to zainteresowanie lub ważność. Jeśli potrafisz przekonać swój mózg, że wiedza o raju jest niezbędna do ucieczki przed goniącym cię tygrysem, nauczysz się i zatrzymasz więcej niż wtedy, gdy twój mózg myśli, że jest to bezsensowne zadanie poboczne na drodze do tego, czego naprawdę chcesz. Trzecim ważnym czynnikiem jest rozciąganie bez przesadzania. Trochę wysiłku da ci gwar od osiągnięć i pomoże ukształtować nowe ścieżki mentalne, nie będąc nieosiągalnym.
Jest też coś do powiedzenia na temat powtarzanej praktyki. Chcesz, aby wystarczająca różnorodność była nowatorska, ale wystarczająco dużo podobieństwa, abyś mógł wykonywać te same działania i je zakorzenić.
Kolejną kwestią jest to, że powinieneś spróbować zakasać rękawy i zabrudzić ręce. Łatwo jest poświęcić dużo czasu na myślenie o alternatywnych podejściach lub idealnym rozwiązaniu, o ile nigdy nie zaczniesz. To jest przykład twojego mózgu próbującego znaleźć łatwiejsze wyjście. Spróbuj rozpoznać, kiedy tak się dzieje, i unikaj tego, próbując zacząć. Nawet test lub eksperyment jest dobry. Ma to również dodatkową zaletę polegającą na tym, że twój mózg chce zakończenia wykonywania zadania lub znalezienia lepszego rozwiązania.
źródło
Trzy rzeczy do rozważenia: (Lub nie, oczywiście).
źródło
Jest tu wiele dobrych komentarzy na temat ćwiczeń, to naprawdę robi różnicę.
Powinieneś mniej martwić się o „blokady kodu” i posłuchać ich rad lub komentarzy dotyczących tego, czym są. Jeśli trudno sobie z nimi poradzić w wątku, prawdopodobnie trudno im też poradzić sobie w prawdziwym życiu; i naprawdę, kto ma czas martwić się o swoją społeczną nieudolność?
Rezultat końcowy jest taki, że istnieją tysiące sposobów podejścia do zadań programistycznych. Wiele rzeczy sprowadza się do osobistych preferencji. Nienawidzę na przykład czytać kodu z operatorami tenary. Inni je kochają. Czy myślę, że mają rację, czy nie? To osobiste preferencje, choć na ten temat odbędzie się wiele gorących debat.
Jeśli ktoś skrytuje twój kod, ponieważ wziąłeś 25 wierszy zamiast 20, zwykle zignoruję go, chyba że znajdzie rzeczywistą wadę logiki. Czasami w prawdziwym świecie musimy po prostu załatwić sprawę (a kto naprawdę chce usłyszeć, jak ktoś puchnie w klatce piersiowej na temat tego, jak skomplikowane ... eee, eleganckie, udało im się stworzyć kawałek kodu, który powinien był zostać wykonany w 10 minut) . Czy potrafisz nauczyć się czegoś z niekończących się debat filozoficznych na temat tego, jak daleko do rzeczy abstrakcyjnych? Jasne ... ale dochodzi do przygniatających zwrotów w ciągłym w 100% elegancji. To nie jest realistyczne przez cały czas, o ile chcielibyśmy udawać, że tak jest. Niektóre z moich najmniej eleganckich kodów, którymi chciałbym się z wstydzić dzielić z kimkolwiek (które napisałem na początku mojej kariery) oszczędzały ludziom tygodni na tygodnie,
Jest świetny post na blogu autorstwa Joela Spolsky'ego zatytułowany Duct Tape Programmer. To świetna lektura, a IMO przedstawia niektóre z twoich obaw w perspektywie.
http://www.joelonsoftware.com/items/2009/09/23.html
Nie mówię, żeby pisać bzdury i ignorować najlepsze praktyki, ale weźcie prymitywnych programistów z odrobiną soli.
źródło
Zadaj sobie pytanie, dlaczego tak naprawdę czujesz brak pewności siebie. Myślę, że dzieje się tak dlatego, że zależy ci na tym, co myślą Twoi rówieśnicy, i to jest całkowicie zrozumiałe. Ale aby być naprawdę zen na ten temat, musisz oczyścić takie myśli i porównać się z czasem tylko do siebie. Kieruj się swoimi zainteresowaniami, ucz się i ciężko pracuj, a staniesz się dobrym programistą bez psychicznego BS.
Nie potrzebujesz tak naprawdę pewności siebie, ale mniej hałasu na drodze do postępu.
źródło