Test umiejętności programisty [zamknięty]

14

Mam wielu przyjaciół, którzy widzą, co robię, uważają to za interesujące i zadają mi pytanie

Do you think I could be a programmer?

Moja odpowiedź brzmi:

...   ummm  ...  do you like math?

Chciałbym uzyskać pomocną odpowiedź, więc nie wiedziałem, czy ktoś wiedział o dość przyzwoitym teście umiejętności dla kogoś, kto zaczynałby od pierwszego, ale ma umiejętności krytycznego myślenia i rozwiązywania problemów?

jondavidjohn
źródło
Proponuję BuzzFizz: Biorąc pod uwagę trzy różne pliki wykonywalne, czy mogą je uruchomić i zidentyfikować, który to „FizzBuzz”?
Macneil
15
Nie mieszaj matematyki i programowania. Od lat pracuję jako programista. Nienawidzę matematyki. Kolejny przykład: Jeff Atwood jest doskonałym programistą. Nienawidzi matematyki (patrz codinghorror.com/blog/2007/01/… , punkt 3).
Arseni Mourzenko
2
@MainMa Nie mogę podkreślić, jak prawdziwe to jest. Jestem dokładnie w tej samej łodzi. Matematyka nigdy nie była moją pasją, ani nawet mocną stroną. To powiedziawszy, wielu, którzy mnie znają, będzie świadczyć o mojej niezwykłej zdolności (czytaj: obsesja) do programowania. Matematyka może być główną częścią programowania, ale jedno niekoniecznie rodzi drugie.
Nathan Taylor
1
może kiedy mówię „czy lubisz matematykę”, mam na myśli „czy szanujesz matematykę?”, właściwie ssę matematykę ręcznie, dlatego lubię zmuszać komputer do matematyki, ale szanuję i rozumiem skończone zasady matematyki, które, jak wierzę, pomagają mi w moich logicznych procesach myślenia.
jondavidjohn
2
„apptitude” to naprawdę fajna literówka w tym kontekście :-)
Ferruccio

Odpowiedzi:

12

„Lubienie matematyki” to zły test. Nigdy nie lubiłem matematyki (głównie dlatego, że 90% nauczycieli matematyki w liceum było do niczego).

Kiedy mówisz „matematyka”, większość ludzi myśli, że masz na myśli „ostrożne rozwiązywanie równania według bardzo ścisłych zasad”. Programowanie wcale tak nie jest.

Programowanie przypomina bardziej rysowanie, ponieważ to, co możesz osiągnąć, jest ograniczone tylko tym, co możesz sobie wyobrazić.

Liczy się umiejętność wyobrażenia sobie systemu i zobaczenia, jak on działa.

  • Czy myślisz o tym, jak to działa?
  • Czy myślisz o sposobach poprawy codziennych rzeczy?
  • Czy potrafisz sobie wyobrazić, jak zbudować coś z prostszych elementów?
hasen
źródło
Czy to bardziej przypomina geometrię?
Gulshan
jest nauką stosowaną, więc nie ma tak naprawdę „naukowego” odpowiednika.
jondavidjohn
1
Programowanie przypomina bardziej stolarstwo, najpierw wizualizujesz rozwiązanie, wybierasz narzędzia, ostrożnie nakładasz swoje rzemiosło przy użyciu najlepszego drewna TDD. Jezus byłby programistą, gdyby Commodore 64 został wynaleziony nieco wcześniej.
Czy
2
W rzeczywistości to, co opisałeś, przypomina matematykę - w przeciwieństwie do tego, co uchodzi za szkoły matematyki.
um
1
@Brennan: Jedyną matematyką, którą znalazłem podobną do programowania, była matematyka dyskretna na uniwersytecie. Większość innych matematyki, które badaliśmy, polegała na bezmyślnym stosowaniu reguł i formuł w celu rozwiązania jakiegoś równania. Możesz argumentować, że to nieprawda, ale to nie ma znaczenia dla tej dyskusji.
hasen
8

Pamiętam od czasów, gdy byłem dzieckiem, który przeprowadzał test umiejętności Brainbencha ; Nadal mam gdzieś certyfikat przechowywany ...

Zarys testu:

Abstract Thinking
    Process Flow
    Spatial Manipulation
Analytical Reasoning
    Inductive Reasoning
    Logic Application
    Word Problems
Attention to Detail
    Following Instructions
    Reading Comprehension
    Rule Interpretation
    Writing Analysis
Mathematical Problem-Solving
    Word Problems
Process Mapping
    General Processes
    Letter Manipulation Processes
    Number Manipulation Processes
    Shape Manipulation Processes
Dan McGrath
źródło
1
To bardzo skomplikowany test. Gdyby ktoś powiedział mi, żebym przystąpił do testu przed przystąpieniem do programowania, byłbym wystraszony. OK, może mnie to nie obchodzi, ale każdy, kto podejmie test na poważnie, byłby wystraszony.
hasen
2
Więc? Programowanie może być skomplikowaną dziedziną (podobnie jak inne). Jeśli tak łatwo Cię odstraszysz, może nie jest to dla ciebie. Wyobraź sobie, że gdyby ktoś zapytał Cię, czy ktoś chce zostać lekarzem, w czym powinien być dobry? Nie sądzę, żebyś się przejmował, że odstraszyło to niektórych ludzi ... Życie jest trudne i złożone, powinni się do tego przyzwyczaić.
Dan McGrath,
2
Dobrze, że to skomplikowana dziedzina, jeśli podejście to udać się na ciebie będzie zawieść. Każdy, kto zaczął programować, zaczynał od łatwych rzeczy i wierzył, że to naprawdę łatwe. Przekonanie to prawdopodobnie zostanie podtrzymane poprzez ich doświadczenie edukacyjne. Nigdy nie zdajesz sobie sprawy, jak skomplikowane jest, dopóki nie spojrzysz wstecz lub nie zobaczysz, jak ktoś zmaga się z czymś, co uważasz za bardzo podstawowe.
hasen
Niestety, na powyższej liście znajdują się niezbędne umiejętności, których będziesz używać jako programista. Myślę, że boisz się ich imion, a nie pytań, które na nie padłyby. To nie jest tak, że pyta cię o złożone koncepcje stosowane w programowaniu. Innymi słowy, testy umiejętności nie mają nic wspólnego z tym, jak dobrze rozumiesz koncepcje programowania, których możesz się nauczyć, chodzi o uzdolnienia , więc komentarz na temat „rozpoczynania od łatwych rzeczy” nie jest tutaj tak naprawdę istotny
Dan McGrath
7

Istnieje szansa, że ​​jest już jeden dobry.

Zobacz na przykład dyskusję na temat oddzielania owiec programujących od kóz nieprogramujących :

Wszyscy nauczyciele programowania stwierdzają, że ich wyniki pokazują „podwójny garb”. To tak, jakby były dwie populacje: ci, którzy mogą [programować] i ci, którzy nie mogą [programować], każda z własną niezależną krzywą dzwonową. Niemal wszystkie badania nad programowaniem nauczania i uczenia się koncentrowały się na nauczaniu: zmiana języka, zmiana obszaru zastosowania, użycie IDE i praca nad motywacją. Nic z tego nie działa, a podwójny garb nie ustępuje. Mamy test, który wybiera populację, która może programować, przed rozpoczęciem kursu. Możemy rozdzielić podwójny garb. Prawdopodobnie w to nie wierzysz, ale zrobisz to po usłyszeniu rozmowy. Nie wiemy dokładnie, jak / dlaczego to działa, ale mamy kilka dobrych teorii.

Test identyfikuje, jak konsekwentni są ludzie z operacjonalizacją sekwencji instrukcji. Oznacza to, że mogą budować modele (abstrakcje) w swoich umysłach i pracować z nimi.

Macneil
źródło
2

Myślę, że ważniejszym „testem” byłoby pokazanie im prostego języka / środowiska programowania, z którym mogliby się bawić. Na przykład przetwarzanie lub python . Jeśli potrafią uczyć się takiego języka i czerpać z niego przyjemność - być może podczas rozwiązywania jednego lub dwóch prostych zadań - jest to prawdopodobnie najlepszy „test umiejętności”, o jaki można poprosić.

Justin Ethier
źródło
2

"Lubisz matmę?" nie jest zły początek. Matematyka jest krytyczna, po tym ...

Wskazane jest, aby poradzić sobie z problemem i zacząć rozbijać go na bloki, tylko w mowie, czy można krok po kroku przejść przez podstawowy problem, to dobry początek.

  • Jak powiedziałbyś robotowi, jak zrobić filiżankę herbaty? Bądź jak najbardziej konkretny.
  • Zamawianie posiłku w McDonalds, jakie kroki należy podjąć w realizacji zamówienia, od początkowego powiadomienia po zmianę / jedzenie.
  • Jak działa system telefoniczny?

Jeśli potrafią odpowiedzieć na nie dobrze, w analityczny i głęboki sposób, z jakim programiści muszą codziennie, zapewne sobie z tym poradzą.

Orbling
źródło
1

Kiedy jesteś narażony na kodowanie, albo musisz to zrobić, albo nie. Umiejętność jest tylko jednym z czynników określających, czy będziesz w tym dobry. Ekspozycja na dobre przykłady, instrukcje, czas na zadaniu, wysiłek to inne. Naprawdę chęć / konieczność zrobienia czegoś znacznie ułatwia wykorzystanie innych czynników.

JeffO
źródło
1

Lepszym pytaniem niż „Czy lubisz matematykę” jest „Czy lubisz rozwiązywać zagadki logiczne”? Są to rzeczy takie jak Sudoku itp. Lub wymyślenie odpowiedzi na takie zagadki, jak: „John, Anne, Peter, Mary i Bretania są sąsiadami. John ma biały samochód, Bretania mieszka na lewo od Anne, bla bla, w jakiej kolejności oni żyją? ”

Bo takie jest programowanie: jedna wielka logiczna łamigłówka.

Lennart Regebro
źródło
1
Ja (trochę) lubię matematykę, ale łamigłówki to po prostu niepotrzebne uderzanie głową w ścianę. Myślę, że potrzebujesz motywacji, aby stworzyć coś pożytecznego - w przeciwieństwie do gimnastyki umysłowej, aby pokazać, jak jesteś inteligentny.
Omega Centauri
OK, nie musisz tego lubić, po prostu bądź w tym dobry. :-)
Lennart Regebro
1

Myślę, że lepszym pytaniem jest „Czy lubisz budować z klocków Lego?”

davidk01
źródło
1

Podobnie jak Gusteau, postać z filmu Ratatouille powiedziała:

Każdy może gotować.

W ten sam sposób każdy może programować. Ale nie wszyscy będą w tym świetni. Większość zadań programistycznych wymaga średniego poziomu umiejętności i kompetencji.

Po prostu odpowiedz tak. Dlaczego? Ponieważ większość ludzi chce po prostu czuć się doceniona przez kogoś, kto ich zdaniem jest inteligentny.

Pablo
źródło
2
Zdecydowanie nie zgadzam się z tym, że każdy może programować. To jest do bani, ale takie jest życie.
um
0

Myślę, że matematyka sympatii jest ważna. Nie z punktu widzenia lubisz rygorystycznie udowadniać rzeczy, które wymagałyby bycia poważnym matematykiem. Ale biorąc pod uwagę ważny dla ciebie problem, możesz sformułować problemy związane z jego rozwiązaniem w sposób matematyczny. Twierdzę, że wszystko, co robi komputer, to matematyka, wymaga pewnego rodzaju symbolicznych danych i wykonuje na nim jakąś operację. To jest istota matematyki. Musisz więc być w stanie wyodrębnić rzeczy w coś w rodzaju struktury matematycznej i uzasadnić kroki do przodu. Brakuje tego, po prostu hakujesz, wyrzucasz trochę kodu i masz nadzieję, że zrobi to, co chcesz. Umiejętność rozwiązywania skomplikowanej algebry bez literówek i zgubienia się prawdopodobnie nie jest tak potrzebna. Ale umiejętność opracowania planu jest ważna. Często piszę dziesięć programów liniowych, aby sprawdzić, czy moja niezbyt skomplikowana matematyka została poprawnie wykonana. Kluczem jest połączenie komputerów z matematyką w celu weryfikacji, odkrycia i tak, aby wypracować szczegóły, gdy jest ich dużo.

Omega Centauri
źródło