Poproszono mnie o zatrudnienie osoby w naszym dziale IT, która nie ma doświadczenia w programowaniu, ale jest inteligentną i zdolną osobą i pomaga mu przejść do programowania w, powiedzmy, początkującym programistą obsługującym istniejące aplikacje .Net. Zdecydowanie wierzę, że ta osoba może to zrobić, ale szukam najszybszego sposobu, aby przyspieszyć. Mam mnóstwo pomysłów, ale chciałem zobaczyć, co myślą inni ludzie. Wiem, że będzie to również bardzo zależało od tego, jak się uczy, ale ogólnie mówię.
Więc pytanie: Jakie są najlepsze sposoby na szybkie przyspieszenie rozwoju oprogramowania przez programistę (w tym przypadku .Net)?
Odpowiedzi:
Zazwyczaj przepisuję tę samą sekwencję każdemu, kto chce nauczyć się programowania. Jest to bardzo teoretyczne, ale stanowi dobry fundament. Studia stacjonarne powinny zająć trzy lub cztery miesiące, ale programowanie nie jest czymś, czego uczysz się z dnia na dzień.
Jeśli nie uda ci się przejść przez tę sekwencję, nie będziesz mógł programować, więc równie dobrze możesz się teraz poddać.
Moją zasadą jest: przejrzyj te trzy książki siłą, jeśli to konieczne. Zadawaj dowolne pytania, ale dopiero po tym, jak starasz się je rozwiązać samodzielnie. Jeśli dasz radę przejść przez te trzy książki, gratulacje, jesteś programistą, teraz mogę rzucić PERLĘ W 15 MINUT lub cokolwiek na śmieci w księgarni w Wielkiej Bibliotece Jawy i poradzisz sobie dobrze. Jeśli nie zdołasz przejść przez te trzy książki, poddaj się, idź do domu, nigdy tego nie dostaniesz.
Szczerze mówiąc, nie sądzę, że musisz uczyć się C i Schematu. Są tylko podstawą do przyszłej nauki. Te dwie dość proste książki są pozornie bardzo proste (C i Schemat są bardzo łatwymi językami), ale bardzo zagłębiają się w prawdziwą sztukę programowania bez marnowania czasu na mylącą składnię, więc doskonale nadają się do ponownego łączenia twój mózg, aby być dobrym programistą.
Próby skorzystania ze skrótu i przejścia bezpośrednio do nauki dokładnie tego, czego chcesz się teraz nauczyć (np. Zaczynając od C # i ASP.NET) są skazane na niepowodzenie.
źródło
up to speed quickly
.Najlepszym sposobem na szybkie przyspieszenie nie-programisty jest zainspirowanie ich !
Aby odnieść sukces, kandydat musi być co najmniej ciekawy, jeśli nie pasjonujący się programowaniem (niezależnie od platformy).
Chociaż zgadzam się z Joelem w przypadku idealnego kandydata, staram się nie wpychać zbyt dużej ilości teorii w słaby umysł - to tylko ich zniechęci. Jeśli są natchnieni, ciekawi i miejmy nadzieję namiętni, będą chcieli zrozumieć teorię po zobaczeniu magii.
Całkowicie zgadzam się z @karudzo - samorealizacja i konstruktywna recenzja mogą być bardzo inspirujące.
źródło
Najszybszym sposobem może być poświęcenie mu czasu , choć może to zająć rok lub dwa.
Jasne, wydaje się łatwe nauczenie go prostego języka (C #, jeśli ma on robić rzeczy .NET), ale nauka języka nie jest nauką programowania.
Jeśli nigdy nie programował, to oprócz składni i biblioteki co najmniej jednego języka będzie musiał nauczyć się o tablicach, połączonych listach, modelu kompilacji dowolnego języka, którego się uczy, modularyzacji, zarządzaniu zasobami, paradygmatach, wzorach, Big- Notacja O ... - cała enchilada. Jest wiele rzeczy do przebrnięcia i większość z nas zajęła kilka lat, aby nauczyć się tych podstaw, a jeszcze więcej, aby stać się prawdziwym profesjonalnym programistą.
Istnieje materiał, który obejmuje wiele z tego (jak najnowsza książka Stroustrupa, która uczy programowania przy użyciu C ++, zamiast uczyć języka C ++), ale nie ma go zbyt wiele i nic, co obejmuje wszystko. Więc facet musi chcieć się uczyć i czytać dużo książek i artykułów.
Co do tego, jak to zrobić: nie mam gotowego programu nauczania do wklejenia tutaj. (Przepraszam.)
Zalecam jednak zacząć od nauczenia go jednego języka programowania, aby miał szansę dokonać szybkiego wstępnego postępu i uzyskać zachęcające wyniki. Istnieje wiele książek do nauczania takich języków, wybierz taki, który znasz. Jeśli książka zawiera wiele ćwiczeń i jest gotów je wykonać, przygotuj się na spędzenie dużo czasu, pomagając mu w tych ćwiczeniach. Jeśli książka nie ma (m) żadnych, zacznij wymyślać własne z dużym wyprzedzeniem, ale bądź przygotowany na dostosowanie ich do jego poziomu / szybkości zrozumienia.
Jeśli tym pierwszym językiem nie był ani C, ani C ++, IMO powinien nauczyć się jednego z nich. K&R jest do tego dobry, podobnie jak TCPL Stroustrupa lub, jeśli może (z twoją pomocą) poradzić sobie ze stromą krzywą uczenia się, Koenig / Moo. Powodem, dla którego polecam to, jest to, że gdy poznasz C lub (najlepiej IMO) C ++, stosunkowo łatwo jest pobrać dowolne z tych pochodnych C, takich jak C #, Java, ObjC ...
Co do reszty, zapewniaj mu ciągły strumień dobrych książek i artykułów. Nie sądzę, aby było to bardzo pomocne, jeśli zasugerujemy zbyt wiele z nich, ponieważ 1) musi pasować do kultury Twojej firmy i 2) musisz czuć się swobodnie, mówiąc mu, żeby się tego nauczył.
źródło
Nie uruchomiłbym ich w .NET. Popełniłem ten błąd zbyt wiele razy. Nie pozwól, aby pracodawca naciskał na ciebie, aby stworzyć niekompetentnego programistę z powodu czasu. .NET może być szybką platformą programistyczną, ale nie zmusza programistów do nauki programowania. W samym C # znajdziesz programistę, który utknął w typach referencyjnych, czasie życia obiektu, pozostawi ogromne wycieki pamięci (tak jest możliwe w .NET) i będzie miał kiepskie projekty. Byłoby znacznie lepiej uruchomić je na C lub C ++ (prawdopodobnie c ++, ponieważ będą musiały używać koncepcji OOP), a następnie powiedzieć coś w stylu: „Czy nie byłoby miło, gdyby twoja pamięć była dla ciebie zarządzana, wszystko było przedmiotem zorientowany i nie musiałeś sobie radzić z tymi wszystkimi paskudnymi wskazówkami? Oto C # i JAVA. Jeśli opanowali język c ++, pokonają oba za tydzień lub dwa. Polecam pułk Joela. To była lista, którą dostałem od mojego nauczyciela CS 101, i byłem znacznie lepszy, kiedy trafiłem na analizę numeryczną. Pozwoli ci to również dowiedzieć się wcześniej, czy kandydat pokroi musztardę, czy nie. Ponadto, gdy zdobędziesz c i c ++, automatycznie zrozumiesz c # i java po przeczytaniu wstępu do książek. Nie tylko je zrozumiesz, ale zrozumiesz je lepiej niż ktoś, kto nie znał C i C ++.
źródło
hWND
latach 80., prawda? Najwyraźniej używasz zamiast tego jakiejś ładnej abstrakcji (która to jest zupełnie inna debata). Pewnie wiedza, jak to działa pod maską, jest dobra, ale nie potrzebujesz C # .NET do abstrakcjiDaj im coś prostego, ale przydatnego do rozwiązania. Pozwól im trochę pogrzebać i pomóż im je wypolerować. Nie ma nic takiego jak małe osiągnięcie, które mogłoby je pobudzić (chociaż ktoś nie jest zainteresowany programowaniem w
źródło
Programowanie w parach. Pozwól im śledzić Cię podczas pisania własnego kodu - dowolnego kodu. W ciągu kilku godzin poproś, aby wprowadzili dla Ciebie Twój kod, a Ty powiesz im, co mają robić, naciskając kolejno klawisze, nawet jeśli to konieczne. Odpowiedz na kilka ich pytań, ale nie na tyle, żebyś znacznie zwolnił - po prostu pozwól im się wsiąknąć. Znajdą też twoje literówki i więcej błędów, niż myślisz. W ciągu kilku dni będą mogli rozpocząć „nawigację” i powiedzieć ci, jaki kod wprowadzić dla zadań podobnych do tych, które widzieli wcześniej.
W ciągu miesiąca nauczyłem się wiele z tego, co wiem jako programista, i nauczyłem w ten sposób kilku innych nowych programistów, z których jeden mógł po kilku miesiącach przejąć funkcję głównego programisty w startupie. Kiedy zaczęliśmy razem pracować, nigdy nie napisał ani jednego wiersza kodu.
źródło
Daj mu dobry ide (studia wizualne, ekspres jest nadal dobry). Naucz go 60% typowej składni (pomiń wydajność, linq, wyliczenia, atrybuty itp., Ucz klas, wirtualny i zastępuj). Poświęć czas na debugger (szczególnie callstack). Następnie powiedz mu, aby google „msdn functionanme” za każdym razem, gdy potrzebuje pomocy, co powinno mu pomóc w szybkim uruchomieniu.
Naucz go również, aby nigdy nie łapał i nie połykał wyjątku. Powiedz mu, że musi go ponownie rzucić lub zalogować!
Bonus: naucz go serializować dane JSON, aby mógł łatwo czytać / zapisywać w pliku. Db jest nadmiaru i zbyt wiele do nauczenia się i nie chcesz, aby pisał niestandardowe formaty plików, chociaż mogę pozwolić jednemu wpisowi na typ pliku przejść, aby zapisać / załadować tablicę ciągów jako akceptowalną.
źródło
Wiem, że wiele osób mówi o językach i książkach dla tych języków. Ja się różnię
Programowanie polega na nauce analitycznego myślenia. Przede wszystkim osoba powinna być w stanie pomyśleć i wymyślić algo na kartce papieru, na czym polega problem. Musisz ich poprowadzić, aby otrzymali właściwą technikę myślenia.
Dalej są podstawy języka. Zacznij je od wybranego języka. Daj problem do zaprogramowania.
Po zakończeniu pierwszego cięcia poproś, aby wykonali podstawy CS i wzorce projektowe.
Teraz poproś, aby przeprogramowali wcześniejszy problem z tymi nowymi koncepcjami.
źródło
Zacznij od podstaw: zmiennych, pętli, podczas gdy pętle, dla pętli, tablic, naucz go podstaw, drukowania na ekranie, robienia prostej matematyki. Przejdź do metod i podstawowego OOP, na przykład jak stworzyć klasę, pokaż mu, dlaczego nie tylko jak.
Język nie ma znaczenia, ale wybierz coś, co wiesz, a to jest wysoce abstrakcyjne (java, python itp.), Dzięki czemu nie musi się martwić o takie rzeczy, jak zarządzanie pamięcią, wskaźniki itp. Naucz się podstaw rekurencja, wieże hanio lub rekursywnie przeszukujące katalogi.
Naucz się programować to dobry darmowy zasób dotyczący programowania w Ruby. Spraw, by było to przyjemne, łatwe i zabawne.
źródło
Daj mu kilka wyzwań i pozwól mu nauczyć się, jak znaleźć zasoby, aby sam rozwiązać problem.
Jeśli nauczysz go, jak znaleźć odpowiedzi i będzie samowystarczalny, w naturalny sposób nauczy się, jak dobrze programować. Krytyczne myślenie i zaradność to dwie kluczowe umiejętności programisty.
Ostatecznie pasja / zainteresowanie z pewnością będzie kluczowym czynnikiem, który odniesie sukces w szybkim nauce. Jeśli nie ma lub nie złapie „błędu”, może to być powolny i / lub bolesny proces. Jeśli złapie błąd, będzie spóźniał się z kodowaniem, poza godzinami pracy, mając czas swojego życia.
źródło