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
@kitke: Jeszcze tydzień temu podjąłbym te wyzwanie z Tobą, ale porównałem programowanie na Androida z programowaniem na iOS, zobaczyłem JavaEE, Springi, EJB, itd. i do tego te konfiguracje beanów w XML i powiedziałem sobie 'nie!'. BTW uważam, że Java nie jest prosta https://www.youtube.com/watch?v=zvVkD7huKAE
Jednak życzę powodzenia, poza tym z Java dużo ofert pracy jest, ale to zazwyczaj korporacje. Ciekawe rzeczy robione są zazwyczaj w Ruby, JS, Python.
@Nadrill: Dzięki! Nie nazwałbym tego #!$%@? ;-) Zresztą, nie napisałem tego, za dużo chaosu wkrada się w moją naukę (za dużo na raz bym chciał, wszystko interesujące...). Praca z ludźmi mnie dyscyplinuje, stąd też pomysł na ten wykop.

@CzySwieciSaPoToAzebyZawstydzac: Luz, komp jest z czasów późnego Windowsa XP, więc uciągnie. Zresztą apka ma być w zasadzie prostym menedżerem stosunkwo niewielkiej bazy danych (nieco ponad 3k pozycji w magazynie, przechowującej głównie krótkie
@kitke: zresztą tak jak też javadevmatt mówił, do ogarnięcia są jeszcze: testy jednostkowe, CI (np. Jenkins), Maven (Gradle), może jakiś Hibernate (bo widzę, że zapytania z palca piszesz). Do tego struktura katalogów, mam nadzieje, że korzystasz z jakiego IDE (najlepszy wg. mnie i nie tylko Intellij IDEA, ale najwięcej tutków w necie jest na Eclipsie). BTW taka ciekawostka z gitem przygoda tak naprawdę zaczyna się jak masz różne branche i robisz
@mamapoth: Dzięki, o zmiennoprzecinkowych nie pomyślałem. Co zatem lepiej, BigDecimal, czy long?
@ufik78: Zdaję sobie z tego wszystkie sprawę. Ale jasne jest też, że nie wszystko trzeba opanować od razu, ani w tak samo zaawansowanym poziomie.

Używam Eclipse'a, ale nie jestem z nim związany emocjonalnie. Temat IDEA obadam.
@kitke: Wiesz nie chcę Cie zniechęcać, tylko przygotować, bo to są rzeczy z którymi się spotkasz w firmie. IDEA jest też w darmowej wersji. A Android Studio też oparte jest na Intellij IDEA (włąściwie to okrojone IDEA z dodatkiem Android o ile się nie mylę).
IMHO BigDecimal.
@kitke: piszę na raty, ale co chwile mi się coś przypomina. Na Twoim miejscu, po skończeniu tego projektu poszukałbym stażu, bo wtedy skill bardzo szybko idzie w górę, zresztą tak też javadevmatt robił i sam również uważam to za najlepsze wyjście.
@kitke: @kitke: 3mam kciuku dużo przed Tobą jeszcze:)
Same bazy danych to temat rzeka.
Jak ogarniesz podstawy Javy oagarniaj podstawy JEE(duzy worek technologii), Dependency Injection. Servlety + JSP, dalej JPA, Hibernate,
EJB lub Spring Framework(jest jesze Play Framework, Struts i masa innych)
HTML 5,
Angluar

Np:

Technologie: Java, Spring, Spring Data, Hibernate, Flyway, EhCache, HSQL, HTML5 Maven, JBehave, Selenium WebDriver, JUnit, Mockito, Enterprise Architect, Google Maps API, REST, Jenkins, Apache
@JavaEngineer: Dzięki wielkie, zdaję sobie sprawę z tego. Im dalej w las tym ciemniej jak mówią. Mówią też, że kropla drąży skałę i tego się będę trzymał. Dzięki też za podpowiedzi lektur!

Niewielką część z wymienionych przez Ciebie rzeczy mam ogarnięte (CSS, HTML4, z HTML5 gorzej), ale to najprostsze tematy w sumie.

@ufik78 Mnie trudno zniechęcić. Jakby było łatwo nie brałbym się za temat (a wcześniej nie zaczął pisać doktoratu z