Jak rozpocząć programowanie konkurencyjne? [Zamknięte]

17

Od dłuższego czasu ćwiczę kodowanie, ale problem polega na tym, że napisanie rozwiązania problemów zajmuje mi dużo czasu. Chcę zapytać, czy programowanie konkurencyjne może mi pomóc w ulepszeniu tego.

Jeśli tak, to jak mam zacząć i od jakich stron internetowych mogę korzystać (np. TopCoder )? Na razie nie będę w stanie rozwiązać bardzo trudnych problemów. Co powinienem zrobić?

Jeśli nie, co jeszcze powinienem zrobić?

Mam też inny problem, który chcę nauczyć się kodować, ale chodzi o to, że czuję, że nie jestem w tym zbyt dobry. Co powinienem zrobić? To jak wkurzanie mnie od środka.

Wiem, że niektórzy ludzie mogą nie uznać tego pytania za informacyjne, ale proszę pozwolić mi przynajmniej uzyskać odpowiedź.

Vaibhav Agarwal
źródło
1
Nie lekceważ też wartości programowania zespołowego. W naszym zespole widzieliśmy pewne problemy wynikające z nadmiernej konkurencyjności - z powodu problemów technicznych / interpersonalnych. Tak więc konkurencyjne programowanie może ci pomóc, ale może również wziąć udział w projekcie typu open source lub opracować projekt z podobnie myślącymi przyjaciółmi.
Gavin Howden

Odpowiedzi:

19

[czy] programowanie konkurencyjne może mi pomóc w poprawie [prędkości]?

Tak, i przy wystarczającym czasie na pewno tak będzie. Szybkość nie jest jednak najważniejszą umiejętnością, którą zamierzasz poprawić. Z mojego doświadczenia z uczestnictwem w TopCoderze od ponad 10 lat najważniejszą umiejętnością, którą zamierzasz wziąć z konkurencyjnego programowania, jest umiejętność poprawnego pisania prostych fragmentów kodu za pierwszym razem, bez korzystania z debuggera.

Jak zacząć i od jakiej strony, takiej jak TopCoder?

Skorzystaj z sal treningowych dla Oddziału 2. Poziom 1 w Oddziale 2 to zazwyczaj „konkursy na pisanie na klawiaturze”, w tym sensie, że od razu wymyślisz rozwiązanie, dzięki czemu zadanie zaczniesz go kodować tak szybko, jak to możliwe. Większość rzeczywistych zadań jest taka. Szybko zorientujesz się, że debugger jest największym „odpływem czasu”, więc naturalnie spróbujesz ukończyć swój kod bez debugowania. Na początku będzie to frustrujące, ale z czasem ulegnie poprawie. Potrzeba kilkuset problemów na poziomie 1, aby być w tym dobrym, więc nie poddawaj się.

Debugowanie w głowie to umiejętność, która pomoże ci w prawdziwej pracy: chociaż szybkość kodowania nie jest ważna, umiejętność pisania poprawnych fragmentów kodu bez debugowania pomoże ci przejść od dobrego do wyjątkowego.

dasblinkenlight
źródło
Dzięki bardzo @dasblinkenlight!
Vaibhav Agarwal
10

Jako początkujący programista powinieneś bardziej przejmować się jakością kodu niż szybkością jego pisania. Powinieneś sam pracować nad projektami, aby poszerzyć swoje umiejętności. Możesz to zrobić po przejrzeniu projektów typu open source, aby zobaczyć, jak inni piszą kod i być może zacząć wnosić wkład w projekt typu open source.

Przez ponad 25 lat rozwoju kodu na różnych platformach i domenach biznesowych nigdy nie znalazłem przypadku, w którym szybkość pisania kodu byłaby ważniejsza niż jakość i stabilność mojego kodu.

cdkMoose
źródło
Ale kiedy bierzesz udział w konkursie, powiedzmy, że jest jakiś konkurs kodowania lub proces wywiadu, to szybkość ma znaczenie, prawda? I to też bardzo czuję.
Vaibhav Agarwal
@cdkMoose to dobrze, ale czy możesz mi również zasugerować, jak zacząć programowanie konkurencyjne, od czego zacząć?
Vaibhav Agarwal
@VaibhavAgarwal Project Problemy Eulera od 1 do 50: chociaż nie jest konkurencyjny (chyba że próbujesz być jedną z pierwszych osób, które rozwiążą najnowszy problem), jest wyzwaniem i rodzajem pytania, którego można się spodziewać w konkursie kodowania lub proces wywiadu.
@Vaibhav, zacznę programowanie konkurencyjne tak, jak rozpocznę każdy inny konkurs: Ćwicz, ćwicz, ćwicz.
cdkMoose 12.10.12
1
@Vaibhav: Napisałeś, że chcesz nauczyć się programowania. Jeśli na tym etapie jesteś, osobiście nie uważam, że powinieneś zajmować się konkurencyjnym programowaniem. Może to nastąpić po rozwinięciu umiejętności. Jeśli chodzi o rozmowy kwalifikacyjne, nie proszę moich kandydatów o napisanie kompletnych programów. Bardziej martwię się ich zrozumieniem i procesami myślowymi. Próbuję rozwinąć pewność, że mogą rozwiązać problem, a nie że rozwiążą go w rekordowym czasie.
cdkMoose 12.10.12