I co ja robię tu… I
Dużo było technicznie. Czas na coś lżejszego. Częstym pytaniem, jakie zadają osoby zaczynające swoją przygodę z programowaniem, jest:
Co ja w zasadzie powinienem umieć?
Odpowiedź prosta – programować. Jednak jak wiadomo, proste odpowiedzi nie są tym, czego od nas oczekuje życie. W najbliższych wpisach chciałbym przedstawić wam co, moim zdaniem, powinien potrafić początkujący programista.
Jak działa komputer?
To jest jedno z moich ulubionych pytań rekrutacyjnych, skierowanych do osób, które nie mają jeszcze doświadczenia. Oczywiście odpowiedź prowadząca do sytuacji w rodzaju:
Nie jest satysfakcjonująca.
Musisz wiedzieć
Istnieje pewna baza pojęć, które musisz przyswoić i w nocy o północy, wyrwany ze snu ładnie wyrecytować. Przede wszystkim musisz wiedzieć, z czego składa się komputer. Skrzynka, monitor, klawiatura i mysz, to nie jest poprawna odpowiedź. Procesor, pamięć operacyjna i pamięć trwała, zasilacz, płyta główna, to takie minimum. Podobnie jak w przypadku samochodu wiemy, że ma silnik, hamulce, układ kierowniczy. Kolejna rzecz to system operacyjny. Czym jest i do czego służy. Fajnie, jeżeli miałeś styczność z dwoma czy trzema systemami i wiesz co nieco o ich zasadach działania. Paradoksalnie odpowiedź „Linux nie ma gier” będzie OK, ponieważ przynajmniej wiesz, że jest coś takiego jak Linux. Musisz też rozumieć, że komputer robi tylko, to co mu każesz.
Powinieneś wiedzieć
Poza rzeczami, które musisz wiedzieć o działaniu komputera, są też takie, które powinieneś przynajmniej kojarzyć. Czym jest system dwójkowy, ósemkowy, szesnastkowy. Nikt nie będzie od ciebie wymagać umiejętności liczenia w tych systemach, ale powinieneś wiedzieć, że są i do czego służą. Kolejna rzecz to procesor. Czym jest pamięć podręczna, ALUW, rejestry. Ta wiedza zapewne na początku nie będzie przydatna, chyba że idziesz pracować jako programista asemblera, ale jest to coś, o czym trzeba wiedzieć. Skoro już pada pytanie o procesor, to ogarnij architektury. Serio, to jest taka fajna wiedza. Nawet na podstawowym poziomie. Miło zaskoczysz, jeśli będziesz wiedział, że PC-et i komórka nie mają takich samych procesorów. Znowuż bez szczegółów, ale ogólnie warto wiedzieć, że procesory mają różne architektury. Idąc dalej, powinieneś znać podstawowe pojęcia związane z systemem operacyjnym. Planista zadań, powłoka, system plików, to takie abecadło. Niekoniecznie dokładnie, ale wiedza na poziomie popularnonaukowym.
Pozytywnie zaskoczysz, gdy
Będziesz wiedział co, to są przerwania. Bonus, wiesz jak je skonfigurować, by działała muzyka w DN3DW. Potrafisz korzystać z powłoki shella lub innej podobnej. Umiesz coś więcej niż tylko klikanie „Następny” w Windowsie. Ogólne obycie z komputerem jako narzędziem. Umiejętność podstawowej konfiguracji. Zrozumienie zasad doboru sprzętu. To wszystko są rzeczy, które powodują, iż w moich oczach, jako osoby prowadzącej rekrutację techniczną, będziesz „rósł”.
Podsumowanie
Bardzo często jest tak, że osoba zaczynająca swoją pierwszą pracę jako programista ma jako taką wiedzę w zakresie technologii, z którą pracuje. Jednocześnie gdy musi zmierzyć się z jakimś podstawowym problemem, to okazuje się, że kompletnie nie rozumie narzędzia jakim jest komputer. W efekcie tworzy problemy, które nigdy nie powinny się pojawić.