Trochę tła
Mam dziś 28 lat i nigdy nie odbyłem żadnego formalnego szkolenia w zakresie tworzenia oprogramowania, ale mam dwa stopnie naukowe odpowiadające licencjatowi z Public Relations i Executive MBA z zakresu zarządzania projektami. Pracowałem na tych polach łącznie przez około 6 lat, a 2,5 roku temu rzuciłem / straciłem pracę i postanowiłem zmienić kierunek.
Po miesiącu zastanowienia postanowiłem rozpocząć freelancing, tworząc małe strony internetowe w WordPress. Sam się nauczyłem i dzisiaj mogę powiedzieć, że prowadzę skromną, ale odnoszącą sukcesy karierę, opracowując od podstaw motywy i wtyczki dla moich klientów - głównie agencji zlecających część pracy programistycznej dla średnich / dużych stron internetowych.
Ale czasami po prostu czuję, że brak wystarczającej wiedzy z matematyki lub brak formalnego zrozumienia rzeczy naprawdę mnie powstrzymuje, gdy muszę konkurować lub pracować z bardziej doświadczonymi programistami. Ciągle szukam sposobów, aby dowiedzieć się więcej, ale wydaje mi się, że brakuje mi podstaw.
Niestety, spędzanie 4 kolejnych lat w informatyce nie jest teraz opcją, więc staram się nauczyć wszystkiego, co mogę, z książek i zasobów internetowych. Ta metoda nigdy nie spowoduje, że NASA mnie zatrudni, ale tak naprawdę nie obchodzi mnie to w tej chwili. Moim celem jest, aby najpierw przekroczyć poprzeczkę i móc nazywać się prawdziwym programistą.
Obecnie spędzam wolny czas studiując Javę dla programistów (aby opanować język, który według wszystkich jest trudny / wymagający), czytając fragmenty kodu Complete (aby uzyskać najlepsze praktyki), a także Code: The Hidden Language of Computer Sprzęt i oprogramowanie (aby uchwycić wewnętrzne działanie komputerów).
TL; DR
Tak więc moja obecna sytuacja jest następująca: w zasadzie jestem w stanie napisać dowolny kompletny system w PHP (z pomocą Google i kilku książek), zintegrować Ajax, SQL i tak dalej, i może trochę wolniej niż oczekiwałby doświadczony programista z powodu wszystkich zaangażowanych badań.
Ale wczoraj utknąłem w martwym punkcie, próbując znaleźć (nie Google) rozwiązanie dla testu FizzBuzz, ponieważ nie zapamiętałem operatora modułu if($n1 % $n2 == 0)
metody .
Co sugerujesz jako dobry sposób rozwiązania tego dylematu? Jakie przedmioty / książki powinienem studiować, aby szybciej rozwiązywać problemy, a może bardziej „w sposób programistyczny”?
EDYCJA - Wydaje się, że było pewne zamieszanie w kwestii tego, czego nie wiedziałem, aby rozwiązać FizzBuzz.
Może nie wyraziłem się dobrze: znałem kroki potrzebne do rozwiązania problemu. To, czego nie zapamiętałem, to operator modułu. Problem polegał na transpozycji podstawowej matematyki do programu, a nie na znajomości podstawowej matematyki.
Podjąłem test dla zabawy, po przeczytaniu o nim w Coding Horror . Właśnie zdecydowałem, że to dobra linia porównawcza między mną a formalnie wyszkolonymi deweloperami.
Użyłem tego tylko jako przykładu tego, jak nie radzenie sobie z matematyką w środowisku komputerowym sprawia, że tracę czas na szukanie podstawowych rzeczy, takich jak operatory modułu, aby móc rozwiązać proste problemy.
stuck b/c I didn't memorize %
problemu warto zauważyć, że istnieją inne sposoby na zrobienie tego: (przy założeniu, że $ n2! = 0) if (is_int ($n1 / $n2))
lub if (($n1 / $n2) == (int) ($n1 / $n2))
znajomość słów kluczowych to jedno, a umiejętność wyrażenia podstawowych pomysłów w przypadku braku wbudowanego rozwiązania jest inne.
I'm basically capable of writing any complete system in PHP (with the help of Google and a few books)
i łączę to z tym, że nie wieszif($n1 % $n2 == 0)
, zastanawiam się nad narażeniem na rzeczy napisane w PHP. Myślę, że większość rzeczy, które robisz, wykracza poza proste obliczenia modulo. Czy mógłbyś dać więcej wglądu w to, co według ciebie jesteś w stanie zrobić?