Kiedy słyszymy, że ktoś jest programistą najczęściej myślimy o gamedevie lub osobie, która odpowiedzialna jest za tworzenie narzędzi, które instalujemy na gotowym systemie operacyjnym. Ewentualnie kojarzy się z osobą, która tworzy strony internetowe z którymś z języków wysokiego poziomu. Często laik nie ma pojęcia jak szerokie jest pojęcie programisty i w stosunku do czego może się odnosić.
Język programowania
Nauka języka programowania to wcale nie jest bardzo skomplikowana sprawa. Jeśli znamy język angielski, to często dalej jest dużo prościej. Zwłaszcza w językach wysokiego poziomu. Rozmawiając z osobami, które zajmują się oprogramowaniem dowiemy się, że racjonalnie jest znać kilka języków i na nich się skupić. Dzięki temu będziemy dobrzy w tym co robimy i w oparciu o nasze umiejętności będziemy mogli poszerzać wiedzę. Dużo bardziej skomplikowane jest programowanie niskopoziomowe. Można znaleźć informacje, że dziś praktycznie się tego nie robi. W skrócie można powiedzieć, że jest to programowanie, które wydaje polecenia bezpośrednio dla naszego komputera. Jest to bardzo skomplikowane, gdyż programowanie maszynowe odbywa się w kodzie binarnym. Jest to trudne, gdyż są to polecenia wydawane dla procesora a dla człowieka są mało czytelne.
Systemy operacyjne
Żeby programy wysokiego poziomu działały muszą być przetłumaczone do kodu binarnego, dopiero wtedy komputer może zadziałać. Oczywiście między innymi w tym celu powstały systemy operacyjne. Zwiększają czytelność programów i ułatwiają pracę. Dzięki temu możemy dużo lepiej tworzyć oprogramowanie, gdyż nie musimy zastanawiać się nad każdym elementem procesora. Tworzenie skomplikowanych programów byłoby bardzo skomplikowane lub niemal niemożliwe a dodatkowo zajmowałoby niesamowicie dużo czasu. Trzeba też pamiętać, że każdy program musiałby być pisany z myślą o innej infrastrukturze procesora. Potrafią się bowiem różnić od siebie bardzo znacznie, przez co stworzenie działającej gry byłoby niesamowicie drogie i zmuszałoby firmy do zatrudnienia ogromnej ilości programistów. Problemy z obsługą infrastruktury procesorów często pojawiają się w przypadku konsol. To ten przemysł starał się niejednokrotnie znaleźć inne rozwiązania. Często doprowadzało to do ostatecznego niepowodzenia nowego sprzętu.
Programowanie niskiego poziomu pozwala na stworzenie programów, które będą kompilowały działanie systemów operacyjnych a dalej programów użytkowych. Dzięki odpowiedniemu systemowi łatwiej jest przetłumaczyć kolejne polecenia. W dzisiejszych czasach, kiedy programiści pokazują swoją kreatywność byłoby to problemem, gdyby nie istniały osoby zajmujące się wyłącznie podstawami.