Nauka programowania

Przyznam szczerze, uczenie ludzi, którzy chcą się nauczyć, jest chyba najbardziej satysfakcjonującą rzeczą jakiej doświadczyłem w karierze zawodowej. Mam się czym dzielić, trudno żeby było inaczej, jeśli spędziłem w temacie prawie jedną trzecią życia (od ok. 2002r). I wiecie co? Nie lubię ściemy, dlatego proponuję zasady, które sprzyjają przejrzystości tego co robimy.

Po pierwsze, cel nauki jest jasny i jego osiągnięcie jest podstawą do wypłacenia wynagrodzenia, za osiągnięcie celu, nie poświęcony czas. Pół godziny konsultacji nt. celu gratis. Więcej to już mentoring. Zgłoszenia przyjmuję w zależności od możliwości czasowych w danym terminie.

Gdy wiem jaki jest cel, przygotowuję test, który pokaże jakie zagadnienia wymagają uzupełnienia. Na tej podstawie układany jest program nauczania wraz z wynagrodzeniem za realizację.

Nauka idzie do przodu albo nie. Jak nie to dziękuję, nie ma sensu marnować czasu. Jeśli masz wątpliwości co do mojej oceny, że nie ma sensu kontunuować możesz próbować kupić lekcje na godziny. To wyjście dla znających siebie i swoje możliwości, przewlekłe wykorzystywanie nie wchodzi w grę.

Mój zakres wiedzy jest raczej szeroki, prędzej nie będę w stanie przygotować programu nauczania dla bardziej szczegółowych zagadnień. Jednak to, że nie mam w czymś doświadczenia nie znaczy, że nie będę w stanie takiego programu stworzyć, jednak ewentualne badanie tematu wpisuję w koszty. Najlepiej czuję się w zagadnieniach niskopoziomowych: architektura i assembler (zwłaszcza x86); system operacyjny i jego API (zwłaszcza Linux, włączając w to powłokę), w mniejszym stopniu firmware (zwłaszcza Coreboot i UEFI); języki programowania (zwłaszcza C, C++, Java, Scala, Lisp, HTML5/JS, powłoka); Reverse Engineering (zwłaszcza x86 i JVM, ruch sieciowy); Konstruowanie języków programowania i kompilatorów (flex+bison, Lisp); Narzędzia Open Source; Zarządzanie kodem (paradygmaty Obiektowy i Funkcyjny, refactoring, metaprogramowanie, testowanie, git).

Zapraszam do kontaktu lew@wiedz.net.pl.