Mieliśmy gościnnego wykładowcę w naszej szkole, który przeszedł na tangens dotyczący absolwentów, którzy nie osiągnęli wymaganego poziomu umiejętności, tj. znajomość jednego, dobrze skompilowanego języka, takiego jak Java, C ++ lub C #, jednego języka skryptowego, takiego jak Python lub Ruby, jednego frameworka sieciowego. Jakie inne umiejętności według was powinny być absolutnie kluczowe dla ukończenia studiów?
9
Odpowiedzi:
Zdecydowanie chciałbym się nauczyć. College tak naprawdę nie ma na celu dostarczenia umiejętności potrzebnych do zostania programistą. Ma na celu nauczyć cię umiejętności, których potrzebujesz, aby nauczyć się tych umiejętności.
źródło
Nowi absolwenci potrzebują czegoś więcej niż tylko chęci do nauki, potrzebują obsesji na punkcie nauki, zrozumienia, jak się uczyć i solidnego zakorzenienia w realiach oprogramowania. Zasadniczo nie obchodzi mnie, jakie znasz języki, ale każdy uczeń musi:
Zrozum historię . Informatyka to dobrze zbadana dziedzina z wieloma rozwiązanymi problemami. Znajomość tego faktu otwiera drzwi do uczenia się na podstawie tego, co jest przed tobą. Nawet wiedza, że istnieje bogata historia do wydobywania wiedzy, jest więcej niż wielu absolwentów. Obejmuje to takie rzeczy, jak notacja big-O, historia algorytmów, zasady proroków (Knuth, K&R, Hofstdater itp.) Oraz powszechnie akceptowane praktyki i wzorce.
Wiedz, że można to rozwiązać . Zawsze jestem zaskoczony, gdy programista napotyka problem. Częścią nauki uczenia się jest prosta zasada, że problemy są zawsze łatwe do rozwiązania. Gdy się o tym dowiesz, otacza to twoje myślenie o znalezieniu rozsądnej odpowiedzi.
Zrozum rozkład . Nie tylko można rozwiązać problemy, ale droga do tego jest tak prosta, jak dzielenie i podbijanie. Ogranicz problem do prostszych elementów, a Twoja odpowiedź zawsze się pojawi.
Wiedzieć, jak mierzyć . Oprócz możliwości rozkładania problemów nowi programiści muszą wiedzieć, jak gromadzić informacje na temat tych problemów. Jak długo? Jak duży? Jak szybko? Ile? Proste fakty są krokiem do zrozumienia i obiektywnego myślenia. Przyjmowanie założeń bez faktów jest łatwym sposobem na zagubienie się w przestrzeni problemów.
Bądź obiektywny . Wszystkie problemy można łatwo rozłożyć, zmierzyć i zrozumieć. Problemy, których nie można zrozumieć, wymagają jedynie dodatkowego rozkładu, pomiaru i zrozumienia. Nie ma sensu się denerwować ani sfrustrować, nie jest też produktywne spieranie się o teorie lub obwinianie. Wszelkie irracjonalne zachowania lub przekonania związane z procesem rozwiązywania problemów są trucizną, co sprawia, że znalezienie rozwiązań jest bardzo trudne.
Preferuj wzorce i zasady . Poznasz dziesiątki właściwych sposobów robienia rzeczy, języków, modeli programowania, architektur komputerowych, a nawet metod inżynieryjnych. Nie ma jednego właściwego sposobu, ale istnieją solidne podstawowe koncepcje, które można zastosować w kółko. Naucz się widzieć te wzorce, które poprowadzą cię do nauki i myślenia na każdym kroku.
źródło
źródło
Jako pracodawca będę zatrudniać tylko programistów, którzy:
Z mojego doświadczenia wynika, że mniej niż 5% absolwentów informatyki ubiegających się o pracę programistyczną faktycznie posiada te umiejętności na poziomie podstawowym. Są to minimalne umiejętności potrzebne do komercyjnego wykorzystania i, co ważne, nie każdy jest w stanie nauczyć się tych umiejętności.
Inne miłe do zrobienia to:
Ułatwiają one integrację z istniejącym zespołem programistów, ale są to przedmioty, których normalnie można się uczyć w pracy.
źródło
Kiedyś miałem zespół, który „odziedziczyłem” z przeważnie świeżo wyszkoloną kadrą i miałem doświadczenie, że ci, którzy wykonali prawdziwe programowanie „obok” studiów (aby zarobić dodatkowe pieniądze) byli najbardziej zdolnymi członkami zespołu. Stąd doświadczenie jest kluczem i nie ma znaczenia, jaki język.
Jednak jeśli spojrzysz na to, czego szukają rekruterzy (we wszystkich popularnych witrynach rekrutacyjnych, takich jak jobserver.com itp.), Interesujące jest, że często pyta się o C ++, C #, Java, ale są też inne, których szukał i także „egzotyczne” rzeczy, takie jak COBOL, wciąż istnieją.
źródło
Proces uczenia się w tym zawodzie nigdy się nie kończy. Trzeba się ciągle uczyć i doskonalić, w przeciwnym razie „szybko wyskoczy” z gry.
źródło
Inne odpowiedzi są dobre, ale powiedziałbym, że przeoczoną umiejętnością nr 1 na uniwersytecie wydaje się być faktyczna inżynieria oprogramowania .
Podstawowe klasy do nauczania OOP i języka takiego jak Java są świetne, ale w trzecim i czwartym roku dlaczego studenci (przynajmniej na moim lokalnym uniwersytecie) piszą kompilatory i systemy operacyjne zamiast uczyć się, jak identyfikować i tworzyć dobrą architekturę, jak analizować wymagania i tworzyć z nich listę specyfikacji technicznych, a może przede wszystkim, jaka jest różnica między dobrym kodem, który działa, a złym kodem, który działa.
To tak, jakby nasze uniwersytety prawie chciały produkować kodery zamiast inżynierów oprogramowania . Nigdy nie zatrudniłbym kogoś, kto nie wykazywałby się pewnymi umiejętnościami / talentem w inżynierii.
źródło