Zdjęcie w tle
Programowanie

Społeczność

Programowanie

1k+

Czasem ludzie pytają mnie „wombat, tak dobrze ci się żyje, może ja bym sobie też po godzinach dorobił na tym #programowanie ?”


Ja w takiej sytuacji zawsze polecam przeczytanie pierwszego rozdziału „Automate the Boring Stuff with Python” https://automatetheboringstuff.com/ i wrócenie do mnie żeby przerobić pytania z końca rozdziału. Do tej pory nikt jeszcze nie wrócił.


#pytanie do Was Tomeczki, czy macie jakąś inną rekomendację? Zakładam że problem jest w moich rozmówcach, ale może są też jakieś nowsze, ciekawsze, łatwiejsze, darmowe materiały do polecania zainteresowanym #naukaprogramowania ?

AureliaNova

A tak serio, to książki Jurka Grębosza.

Barcol

@wombatDaiquiri serce na tacy wyłożyłem żeby przyjaciół i znajomych nauczyć programowania jak ssało jak po⁎⁎⁎⁎ne. Przygotowałem zadanka, organizowałem spotkania, własne książki dawałem. Jeden znajomy skorzystał, reszta olała.

Catharsis

@wombatDaiquiri Też kiedyś polecałem tę książkę nawet jeśli nie lubię Pythona oraz go nie znam dobrze xD. Ale zawsze uprzedzałem, że realistycznie nie ma szans żeby byli się w stanie nauczyć bezboleśnie i w krótkim czasie całej potrzebnej wiedzy żeby móc w tym zarabiać na boku i że jeśli chcą to jedynie aby sobie napisać coś dla siebie do pomocy w pracy np. automatyzując jakieś excele albo dla hobby. Ewentualnie polecałem też naukę JS bo wydaje mi się, że dla takich osób jest lepszy bo szybciej widać "widoczne rezultaty" w postaci jakiś prostych stron a zanim dojdą do GUI w Pythonie to im się znudzi xd.

Od czasu powstania gen AI to mówię, że już zwyczajnie nie warto poza hobby ponieważ większość prostych rzeczy które chcieli by zautomatyzować ogarnie im już AI.

Zaloguj się aby komentować

https://github.com/torvalds/AudioNoise


Repo Linusa Torvalds w którym pisze, że jest wywajbkodowane.

Also note that the python visualizer tool has been basically written by vibe-coding. I know more about analog filters -- and that's not saying much -- than I do about python. It started out as my typical "google and do the monkey-see-monkey-do" kind of programming, but then I cut out the middle-man -- me -- and just used Google Antigravity to do the audio sample visualizer.

#linustorvalds

koszotorobur

@Deykun - ale to jest jego hobby projekt.

To tego cieszę się że nie zdział i potrafi używać współczesnej technologii.

Zaloguj się aby komentować

Zwykle udostępniam tu artykuły, które publikuję na swoim blogu. Tym razem mam jednak do pokazania coś większego


294 dni. Tyle minęło od napisania pierwszego zdania do postawienia ostatniej kropki mojego najnowszego e-booka. „Kolejna książka o Gicie” w końcu ujrzała światło dzienne i jestem ogromnie dumny z produktu, który mogę Ci dziś zaprezentować!


„Kolejna książka o Gicie” to ponad 180 stron konkretnej i praktycznej wiedzy. E-book przeprowadzi Cię krok po kroku od podstaw po bardziej zaawansowane treści. Nie jest to jedynie teoretyczny opis działania Gita, ale opisałem również praktyczne wskazówki i rekomendacje, które pomagają pracować z nim lepiej i efektywniej.


Oprócz treści teoretycznej w e-booku znajdziesz sporo ćwiczeń praktycznych pozwalających na przetrenowanie zdobytej wiedzy i wykorzystanie Gita w skryptach czy automatyzacjach.


W premierowym artykule znajdziesz szczegółowe informacje dotyczące zawartości e-booka


https://devszczepaniak.pl/kolejna-ksiazka-o-gicie-premiera/


#git

#ebook

#programowanie

#informatyka

#programista15k

#frontend

#naukaprogramowania

#backend

wonsz

W premierowym artykule znajdziesz szczegółowe informacje dotyczące zawartości e-booka

Dla tych co jak ja już chcieli pytać co jest w kolejnej i czy koniecznie trzeba zaglądać do poprzedniej

Penetrator4000

Czyli to nie poradnik dla idących do więzienia …?

elszczepano

@Penetrator4000 niestety, w pierdelku się nie przyda. Sam tam również się jak na razie nie wybieram więc raczej takowego nie napiszę

TheCommitLine

Jestem akustykiem - jak dołączałam do branży do super ekspert miał na nazwisko Szczepaniak, teraz programuję akustyczne rzeczy, i nadal ekspert to Szczepaniak, damn... rodzina geniuszy?

elszczepano

@TheCommitLine popularne nazwisko i raczej przypadek

Myślę, że w ciągu życia poznałem kilkadziesiąt osób o tym nazwisku i większość z nich to nie jest moja rodzina. Podobno w Polsce żyje 25 tys. osób o tym nazwisku.

Zaloguj się aby komentować

adeptom #programowanie polecam myśleć o testach jednostkowych jako "zbiorze aksjomatów o kodzie których znajomości oczekujesz od próbujących rozwijać twój system".

dodatkowe twierdzenie do udowodnienia w swojej duszy dla chętnych - #sztucznainteligencja nie chce nic, więc większość testów jednostkowych które proponuje jest k⁎⁎wa bez sensu xD

#autyzm #psychiatria #komunikacja

wombatDaiquiri

prompt: zaproponuj wpis na portal społecznościowy hejto na temat "co to testy jednostkowe"

Pewnie każdy coś słyszał, ale krótko i po ludzku

Co to są testy jednostkowe?

Testy jednostkowe to małe, automatyczne sprawdziany dla kodu.
Biorą najmniejszy sensowny kawałek programu (funkcję, metodę, klasę) i sprawdzają, czy:

  • dla danych wejściowych X

  • zwraca wynik Y

  • zawsze i przewidywalnie

To trochę jak test smaku w kuchni:

zanim podasz danie gościom, próbujesz łyżeczką sosu, a nie czekasz aż ktoś się zatruje.

Po co to komu?

  • szybciej rozumiesz własny kod (i cudzy)

  • zmiany nie psują rzeczy, które już działały

  • refaktoryzacja przestaje być rosyjską ruletką

  • mniej „działało u mnie”

Czego testy jednostkowe NIE robią:

  • nie sprawdzają UI

  • nie testują całego systemu

  • nie zastępują myślenia

Najczęstszy błąd:
„Napiszę testy na końcu”
(spoiler: na końcu już się ich nie pisze)

Dobrze napisany test jednostkowy to:

  • szybki

  • deterministyczny

  • czytelny

  • testuje jedną rzecz

A najlepszy moment na testy?
w chwili, gdy kod jeszcze boli od świeżości

Jeśli chcesz, w kolejnym wpisie mogę:

  • pokazać zły vs dobry test

  • albo wytłumaczyć testy bez frameworków i buzzwordów

malkontenthejterzyna

@wombatDaiquiri


Biorą najmniejszy sensowny kawałek programu

To jest mega nieoczywiste. Moim zdaniem AI często testuje zbyt nisko, betonując kod.


To jest mega artykuł na ten temat - w Pythonie, ale imo lang agnostic. Cała książka też sztos.

https://www.cosmicpython.com/book/chapter_05_high_gear_low_gear.html


Generalnie narzucanie architektury dla kodziku to jedna z ważniejszych rzeczy przy vibe-codowaniu.

dotevo

Ja ogólnie lubię TDD i wydaje mi się, że to najlepszy sposób na AI. Odpalasz takiego gemini cli i mowisz aby na podstawie wymagań (tutaj uzupelniasz) napisał Ci testy. Sprawdzasz czy mają sens i potem w kolejnej iteracji mówisz aby zaimplementował kod jtóry przejdzie testy i spełni wymagania. Potem każda poprawka to najpierw poprawa testów, a dopiero potem zmiany w kodzie. Takie coś u mnie się sprawdza

wombatDaiquiri

@dotevo


mowisz aby na podstawie wymagań (tutaj uzupelniasz)


Czyli dosłownie przekazujesz logikę testów a AI je tylko tłumaczy na język programowania? Czy w ogóle piszesz test i mówisz „uzupełnij przykłady dla następujących warunków brzegowych”? Pragnę zwrócić jedynie Twoją uwagę na fakt, ze całe „myslenie” tj. „podejmowanie decyzji na podstawie ekspertyzy” nadal w swoim podejściu odpowiadasz sam.

dotevo

@wombatDaiquiri ależ oczywiście. Zresztą osobiście mało używam AI w pracy. Za to do hobbistycznych projektów owszem bo mocno przyśpiesza pracę, a przy tym trenuję sobie jak pracować z AI.


Wydaje mi się, że dałoby radę napisać jednego dobrego prompta, który zrobi wszystko. Używam gemini-cli i piszę mu tylko "W pliku readme.md masz opis projektu, zaimplementuj go używając TDD w języku XYZ. Projekt będzie gotowy gdy ...., pamiętaj o podziale na moduły oraz kod musi być w języku angielskim". Potem mieli cały dzień i na koniec wychodzi coś sensownego. W prompcie najlepiej wprost powiedzieć na co musi zwrócić uwagę. Np. bezpieczeństwo, testy e2e, dokumentację itd.


Druga sprawa to czego używasz do kodowania? bo wg mnie chatgpt jest słaby, gemini ok, claude najlepszy - ale za free mało można.

baklazan

@wombatDaiquiri Mój problem z UT (po nastu latach pracy w zawodzie) jest taki, że są to duplikaty większości aksjomatów które w kodzie... już są. W kodzie.


Kod produkcyjny jest sam w sobie właśnie takim aksjomatem. Więc dodanie duplikatu powoduje w wielu (nie wszystkich!) wypadkach marnowanie czasu na pracę "żeby testy przeszły" po najmniejszej zmianie: czy to funkcjonalnej, czy refaktorze.


Dlatego z mojej perspektywy podwójnie chore są "progi pokrycia testami jednostkowymi" które spotykam w różnych firmach.


Gdyby tylko zamiast nad testami UT spędzić więcej czasu nad kodem produkcyjnym, przygotowaniem zmian... : ).


UT nie są zupełnie bezużyteczne. Nie wszystko da się łatwo wyczytać z kodu, wyłączam z tego zbioru UT na bardzo nietypowe edge case'y (typu reprodukcje bugów) i testy modułowe (które de facto nie są UT, ale to często te same narzędzia i ten sam run).

wombatDaiquiri

@baklazan ja osobiście potrzebuje „sanity check” ze każdy komponent który napisałem działa tak jak sie spodziewam zanim będę składał komponenty ze sobą. Ale ja pracuję też dość głęboko w infrastrukturze dużych serwisów, więc mogę mieć zboczenie na bezawaryjność.


Natomiast zazdroszczę ludziom którzy są przekonani ze napisali to co chcieli po tym jak to napiszą xD

baklazan

@wombatDaiquiri Nigdy nie jesteś pewien na 100%, więc testy są konieczne: po prostu z reguły UT są najmniej użyteczne. Generalnie chodzi o to żeby tworzyć zmiany małymi krokami, używając do tego bardzo małych commitów, jednocześnie nie zmieniając zachowania tam gdzie nie trzeba.


Podam Ci przykład jak do tego podchodzę:

Zmiana w aplikacji rozszerzającej zachowanie jakiegoś modułu.

Zaczynasz od refactorów, które mają nie zmieniać zachowania klasy. Każdy refactor to osobny commit. Każdy commit musi być czysty (tzn nie zawierać innych zmian, nie będących częścią tego co robisz), więc np:
- osobny commit na uporządkowanie zmiennych w funkcji, tak, żeby dało się jej część wyciągnąć robiąc niewiele więcej niż kopiuj-wklej,

- osobny commit na wydzielenie metody,

- itd.

Generalnie osobny commit na każdy krok refactoringowy. Podobnie przy dodawaniu nowego kodu, idealnie byłoby podzielić go na kawałki.


Każdy commit musi działać! (przechodzić wszystkie testy itp)


Z reguły zmiany wprowadzające zmianę zachowania są na końcu takiego brancha/patchsetu i powinny być tryawialne: żebyś był w stanie szybko je wycofać, ale też szybko wyłapać jakiś problem.


Wiadomo - przeoczysz wiele błędów. Ale jeśli przy każdym commicie przejrzysz zmiany które zrobiłeś, zmniejszasz szansę na wprowadzenie regresji, i to wielokrotnie. Pomaga przy tym pisanie dobrych opisów commitów: opisując nie "co zrobiłem" tylko "po co to zrobiłem" - to "co zrobiłeś" widać w commicie, zwłaszcza jeśli jest mały i prosty. Pytanie "dlaczego ten commit zrobiłeś" jest jeśli nie nieoczywiste to na pewno trudne do zgadnięcia. Finalnie: odpowiedź na to pytanie wiele razy sprawiła że wywaliłem dane zmiany jako kompletnie niepowiązane ; D.


To jest workflow do którego się trzeba przyzwyczaić, wymaga dużo czytania i rozumienia kodu, ale bardzo szybko powoduje, że nie dość że robię o wiele mniej błędów, to do tego bardzo dobrze rozumiem co się dzieje w kodzie - żeby przygotować dobry patchset musisz dobrze zrozumieć co robi kod w którym pracujesz.


Prywatnie zmieniło to moje podejście do pisania kodu o 180 stopni. Jeśli zaczniesz stosować ten workflow i nabierzesz wprawy zaczynasz pisać kod paradoksalnie bardzo szybko i bez błędów - nie marnuję czasu na debugowanie, bo najczęściej nie mam po co go robić.


I powoduje że UT są po prostu upierdliwe, bo przenoszę ciężar z "napisz kod produkcyjny i opisz go testami" na "napisz kod produkcyjny tak żeby działał i nic nie popsuł". Testuję go najczęściej tylko manualnie wysokopoziomowo, czasem piszę i odpalam testy modułowe/systemowe.

Zaloguj się aby komentować

666

nie wyplaca sie za to ze dopuscili HR'owy do pisania rakowego contentu na Li. Dobrze im tak. Kiedys to byl fajny portal

Zaloguj się aby komentować

ZohanTSW

Vibe coding to gówno które prędko nie stanie się użyteczne bizesowo. No chyba że użytkownicy nie obrażą się na potwornie zabugowane aplikacje.

Zaloguj się aby komentować

trixx.420

Wszystkie ręce na pokład

wombatDaiquiri

@trixx.420 poza moimi, ja muszę odebrać dziecko z przedszkola a potem mam pilates.

maly_ludek_lego

@wombatDaiquiri Mam dosc korpo i wszystko mnie tam ostatnio triggeruje. Jedynie kasa mnie tam trzyma. Czuje mega obrzydzenie do siebie pracujac w korpo. Juz dawno powinienem byc "na swoim", no ale jakos sie nie udalo do tej pory.
A jakie teksty mnie najbardziej denerwuja? - Wszystkie.

wombatDaiquiri

@maly_ludek_lego a co za robota ze „powinieneś być na swoim”? Sporo korpo roboty wymaga skali i jest średnio transferowalne na mała organizację.

MostlyRenegade

@wombatDaiquiri może nie programowanie, ale ekskierownik (tfu!) w mojej eksfirmie był takim głąbem i ignorantem, że na porządku dziennym była rozmowa:
Głąb: <przychodzi z jakimś nowym "projektem" wyciągniętym z d⁎⁎y>.

Ja: - Musielibyśmy zrobić to, to i tamto - wiedząc, że nikt w firmie nie ma zielonego pojęcia jak to zrobić.

Głąb: - No. Zrobisz to?


EDIT:

I jeszcze "weź zadzwoń", "weź napisz", "weź załatw" kiedy ON miał załatwić coś merytorycznego.

wombatDaiquiri

@MostlyRenegade ja zawsze pytam w jakim czasie i jakim budżecie i mowie ze za tyle to nie

MostlyRenegade

@wombatDaiquiri ja mówiłem, że nie wiem jak to zrobić. Nawet jeśli wiedziałem.

Zaloguj się aby komentować

Zaloguj się aby komentować

@koszotorobur pamiętam ze zrzucałeś kiedyś dane z hejto. Czy byłoby dużym problemem zrobić ranking użytkowników na podstawie ich średnich plusów za wpis? Jeśli akceptowalnym, to bardzo proszę #programowanie #hejto #gownowpis

koszotorobur

@wombatDaiquiri - jak będę się nudził w pracy to zobaczę co się da zrobić.

Ale mogę przy okazji zabić Hejto bo będzie to wymagało pobrania dużej ilości danych

wombatDaiquiri

@koszotorobur dobra to będę na spokojnie Wykop lukrował aż hejto wróci do żywych, nie przejmuj się

Ragnarokk

@koszotorobur Pusc o 1 w nocy, wtedy starzy ludzie śpią@koszotorobur

Zaloguj się aby komentować

Ragnarokk

@Deykun

J⁎⁎ać oba

rith

@Deykun proszę nie szkalować mi mojej ulubionej chmury ( ͠° ͟ʖ ͡°)

Orzech

@Deykun Tylko Google cloud mordo

Zaloguj się aby komentować

radziol

@Deykun a u nas działa

Zaloguj się aby komentować

Następna