Wpis z mikrobloga

Mirki, postanowiłem dokonać programistycznego coming-out! Ponieważ jestem średnio zadowolony ze swojej obecnej kariery zawodowej i perspektyw w niej (niedokończony doktorat z historii, w humanistyce prognozy na przyszłośc też raczej mało optymistyczne, słabo płatne stanowisko na publicznej uczelni, a już prawie 30-tka na karku), pomyślałem, że warto będzie dołączyć do grona wykopowych programistów. No dobra, ale po co chwalić się tym na mirko? Rzecz prosta, lepiej uczyć się w grupie - przynajmniej ja tak mam, że lepiej uczy mi się i pracuje wśród ludzi o podobnych zainteresowaniach.

Czym postanowiłem się zatem zająć?
- Jako język, który wybrałem do nauki to Java. Materiałów mnóstwo, multiplatformowość, niezbyt trudny w nauce.
- Zaczynam od programowania na PC, ale myślę, że docelowo będzie jednak Android i/lub jakieś rozwiązania dla aplikacji online.

Jakie mam dotychczasowe doświadczenie?
- Dość dobrze ogarniam HTML/CSS, mam podstawy PHP i SQLa. Napisałem dwie strony (frontend i backend) od podstaw, kilka prostych skórek pod Wordpress'a. Wizualnie to wszystko mało atrakcyjne, ale starałem się, żeby kod był solidny.

Co dotychczas zrobiłem?
- Naukę Javy zacząłem na początku grudnia od czytania oficjalnej dokumentacji. Krótko potem zaczałem oglądać wykłady udostępniane przez Uniwersytet Stanforda, które okazały się być strzałem w 10. Śledzę też kanały Derek'a Banasa i naszego wykopowego @javadevmatt'a. Z literatury czytam P. Niemeyer, D. Leuck, Learning Java, wyd. 4, Sebastopol 2013 oraz Eric i Elisabeth Freeman, Head First Design Patterns.
- Powoli ogarniam podstawy języka i jednocześnie wzroce projektowe - z tych drugich opanowałem obestwatora.
- Od razu zacząłem też ogarniać Git'a wypychając swoje 'dokonania' do repo na GitHubie.
- Myślę nad nauką UML-a, ale nie jest to priorytetem.
- Jako założenie przyjąłem też, że komentarze i nazwy zmiennych, a także opisy commitów w gicie będę pisał po angielsku
- Pomyślałem też, że najlepiej będzie pracowac nad konkretnym projektem. Moi teściowie mają niewielki sklep, do zarządzania którym używają starego, DOSowskiego programu 'Szef'. Wymyśliłem więc, że będę jeszcze lepszym zięciem i napiszę Windowsowską wersję programu. Ma to być prosty menedżer sklepowego magazynu z możliwością drukowania podstawowych dokumentów - przede wszystkim faktur sprzedaży detalicznej. Plusem, oprócz samej nauki języka i projektowania programu, jest doświadczenie w bezpośrednim kontakcie z końcowym użytkownikiem programu, które z mojego puntu widzenia wymusza modułowość oprogramowania (możliwość prostego dopisywania i rozszerzenia już istniejąckych funkcjonalności).
Póki co, napisałem podstawowe klasy definiujące m.in. przedmiot przechowywany w magazynie, sam magazyn itd., zacząłem też projektować zręby interfejsu, oraz ogarnałem zapisywanie danych do bazy SQLite, ale jeszcze nie usuwanie. Obecnie pracuję nad importem danych do bazy z pliku generowanego w programie używanym przez teściów (zwykłe parsowanie tekstu plus obliczanie podstawowych wartości, np. ceny brutto, czy marży). Zadanie niby proste, ale jest problem z kodowaniem znaków w pliku...

Fajnie, z mojego punktu widzenia, byłoby znaleźć grupę osób na podobnym poziomie, z którymi razem moglibyśmy pracować i się uczyć. Czasu, pracując na pełnym etacie, z małym bobasem i niedokończoną pracą naukową mam stosunkowo niewiele, więc i rytm nauki jest raczej powolny, ale myślę, że razem po protu będzie bardziej wydajnie.

Będę starał się wrzucać raz w tygodniu, w piątki lub w soboty, uaktualnienia, nad czym aktualnie pracuję.

Moje repo na GitHubie

Wzywam: @JavaDevMatt i wszystkich, którzy chcą pomóc we wspólnym ogarnianiu Javy i programowania w ogóle!

#java #programowanie #naukaprogramowania #nauka
  • 50
  • Odpowiedz
@JavaEngineer: Wow, co za konkretnie wyłożone technologie w ogłoszeniu, zachowanie godne pochwały. A nie jak w części ogłoszeń bywa "Wymaga znajomość Java i Spring" i koniec wymagań :P.
  • Odpowiedz
@Greed: Dzięki :-) Zaczynam niemal kompletnie od zera, ale z drugiej strony, jak pisałem, w razie potrzeby łatwiej będzie wykonać ruch Java - > Python niż odwrotenie.
@CamelCase: Dziękuję :-) Mam nature geek'a, który po prostu lubi się uczyć. Jeśli chodzi o błędy, moją największą obawą jest to, że nie będę ich zauważać, bo że będą nie mam wątpliwości, brnąc przez to w złym kierunku. Po to też ten post
  • Odpowiedz
@kitke: @reckoner: Jako, że ostatnio zdałem OCAJP7 to podzielę się z wami kilkoma poradami
Do egzaminu przygotowałem się używając dwóch książek:
- Mala Gupta OCA Java SE 7 Programmer I Certification Guide
- OCA/OCP Java SE 7 Programmer I & II Study Guide Sierra & Bates
Radziłbym je przeczytać w takiej kolejności w jakiej są wyżej wypisane

Po przeczytaniu tych książek i przejściu wszystkich mini testów tam umieszczonych oraz napisaniu
  • Odpowiedz
@kitke: Gratuluje rozpoczecia nauki programowania.

Przejrzalem Twoje git repo, mam dwie drobne uwagi:
1. Dane odnosnie logowanie sie do bazy danych (username, password) zrob jako wartosci ENV, ktore beda pobierane z innego pliku. Nazwe pliku, z ktorego beda pobierane dane do logowanie umiesc w .gitignore.

2. Wedlug nomenklatury git, commity powinny byc pisane w czasie terazniejszym (add, remove, correct etc.) - nie jest to istotne na tym etapie nauki, jednakze ulatwia
  • Odpowiedz
@TurTuru: Dzięki! Ja też jestem, podobnie jak @reckoner, ograniczony czasowo. Mówiąc ogólnie, polecam naukę czegokolwiek ZANIM się ożenicie i wejdzie w posiadanie dziecka własnego wyrobu ;-)

@briskmann: Dzięki :-) Ad 1. Sama baza SQLite nie wymaga logowania (w odróżnieniu od np. MySQL), ale program będzie w finalnej wersji posiadał moduł logujący odblokowujący pełny dostęp do niego. Ad. 2, Dzięki, umknęło mi to, a jakoś czas przeszły prosty wydawał mi
  • Odpowiedz
@kitke: Ad 1. Chcialem tylko zwrocic uwage, ze na poczatku takie rzeczy jak bezpieczenstwo moga nie miec znaczenia, a w dalszym etapie dzialania nad programem, kiedy dolaczasz wrazliwe dane moze to umknac poprzez pospiech albo zwykly brak pamieci. Lepiej to wdrozyc na poczatku, dla samego cwiczenia, by wyrobil sie nawyk.
  • Odpowiedz
@briskmann: Jasne, wielkie dzięki :-) Moim problemem, jak zdaje się wielu osób uczących się samodzielnie, jest skakanie od problemu do problemu. Na tyle, na ile temat ogarnąłem, moduł logowania to sprawa dość poważna i zaawansowana jednocześnie, i tak jak piszesz niezwykle istotna z punktu widzenia zabezpieczenia danych wrażliwych. Dlatego chcę najpierw ogarnąć rzeczy bardziej podstawowe, żeby do zagadnienia przysiąść z większym zrozumieniem materii. Zresztą na niezabezpieczony program w żadnym razie nie
  • Odpowiedz
@kitke: Jeśli chcesz robić coś co operuje na pieniądzach to musisz się mocno przyłożyć bo to jest materia gdzie pomyłka programisty może się skończyć w sądzie (a w twoich przypadku na kłótni rodzinnej).
  • Odpowiedz