Produktivita vývojáře v době AI

Re:Produktivita vývojáře v době AI
« Odpověď #15 kdy: 11. 10. 2024, 08:43:46 »
Je několik scénářů, kdy se to hodí. Asi spíše v podobě brainstormingu než jako finální řešení.

* Pojmenování – popíšu, co chci pojmenovat, a řeknu si o několik názvů, potom z toho vyberu.
* Analýza chybových hlásek – někdy dovede pěkně prozkoumat chybovou hlášku včetně stacktrace. Sice to nebylo při vývoji, ale čučel jsem u analýzy stacktrace z kernelu.
* Ladění – popíšu chování, nechám ho elaborovat příčiny. Tady je ale trochu problém zvládnout předat potřebný kontext, takže to asi nedělám až tak často.
* Návrh – popíšu problém, nechám si poradit, kudy se vydat. Většinou bez samotného kódu. Je pak ale na mě vyhodnotit, jestli je to dobrý nápad.

Zkoušel jsem to i nechat generovat kód, případně zjednodušovat vlastní kód, ale pro toto moc využití nemám.


Re:Produktivita vývojáře v AI době
« Odpověď #16 kdy: 11. 10. 2024, 08:46:10 »

Pokud by to takto fungovalo tak by to byl dar z nebes. CTRL+C a CTRL+V a ještě u toho nic nevymýšlet? Pro mě dokonalý sen a ještě se u toho ani neunavím.

Pokud to je něco, co člověk vymýšlet nechce, proč ne. Ale já osobně se tedy tímhle oborem živím právě proto, že mě to něco vymýšlet baví. A za to mě ostatně taky platí.

Ono to tak ale stejně skutečně nefunguje. Funguje to tak u tisíckrát vytvořených jednoduchých věcí... tedy většinou víceméně funguje. Hodí se to pro to, čím se člověk většinou stejně nechce zabývat, je to víceméně primitivní a co nikdo nechce dělat. Ale pro vážnou práci zatím fakt ne.

Re:Produktivita vývojáře v době AI
« Odpověď #17 kdy: 11. 10. 2024, 10:00:37 »
Produktivita znamena mira produkce. Tzn. otazna zni "Jsou vyvojari schopni vyprodukovat vice kodu s AI?" a odpoved bude pravdepodobne ano...
Ale kod neni "asset", ale naopak.... kod me stoji zdroje na udrzbu... Takze limitne pokud dokazu vyresit problem bez kodu nemam vydaje... takze cim min kodu tim lip.. 

Takze jestli jsou vyvojari produktivnejsi a jestli je to zadouci jsou dve ruzny otazky.

Re:Produktivita vývojáře v AI době
« Odpověď #18 kdy: 11. 10. 2024, 10:04:20 »
Pokud to je něco, co člověk vymýšlet nechce, proč ne. Ale já osobně se tedy tímhle oborem živím právě proto, že mě to něco vymýšlet baví. A za to mě ostatně taky platí.

Mám náladu tak si trochu zakomunikuji. V programování high lvl/low lvl v 99,999% vymýšlíš tak jako tak znovu kolo, které před tebou už někdo vytvořil. Jinak řečeno naprogramuješ stejnou myšlenku jinak(někdy lépe, někdy hůře-> respektive většinou hůře).

* Co jsi kdy vymyslel co před tebou ještě nikdo nikdy nevymyslel či nestvořil ? Stačí 1 příklad a kolik jsi jich celkově za celý život zvládl.

Re:Produktivita vývojáře v době AI
« Odpověď #19 kdy: 11. 10. 2024, 10:30:20 »
Práve výšlo zaujímavé video/článok na túto tému:

https://www.youtube.com/watch?v=khIFjdNTfdA

Ja tiež používam AI(Gemini), ale iba takým spôsobom ako už napísali vyššie. Ako tak trocha inteligentnejší google. Keď som si prvý krát dal vygenerovať nejaký JS kód, tak vyzeral opticky fakt dobre až na to, že nerobil to čo má. Potom som išie riadok po riadku a zistil som, že používa funkcie tak ako sa nemajú.
Keď som mu zadal aby mi spravil malý skript v Go, tak si dokonca navymýšľal funkcie, ktoré v knižnici čo použil ani nie su. Ale opäť to na pohľad vyzeralo veľmi vierohodne  :D


Re:Produktivita vývojáře v době AI
« Odpověď #20 kdy: 11. 10. 2024, 11:03:03 »
Pracovní použití:

1. transformace textu - na to je to skvěle použitelné, nepřekvapivě :) typický příklad konverze z jednoho formátu do jiného s nějakou transformací, přeskládáním hodnot atd. "tady máš xml, vytáhni z toho tyhle data, takto je přeskup a ulož do jsonu". Dříve bych si na takové věci psal skript v pythonu, dnes deleguji na AI.

2. SQL - manželka v práci hodně dělá se SQL a hodně používá bing chat pro tvorbu dotazů, což je varianta 1 - transofrmace přirozené řeči na SQL. SQL má být blízko přirozené řeči by design, ale v tomto poslání imho úspěšně failuje :) a AI zde pomáhá hodně

3. programování - můj skoro denní chléb je java, občas javascript, python, různé shell skripty atd. Tady je můj pocit takový ambivalentní (ve fázi "pozoruji a s opatrností občas použiju"). Jak tu někdo psal, výstupy vypadají často velice věrohodně, což právě může být ta zrada :)  Často vypadá kód přesně tak jak potřebuji až na drobnost "otočený operátor v podmínce atd.".  Nicméně např. funkci IntellJ IDEA  pro "chytré našeptávání" (full line completion) nechávám zapnutou, protože už je to za mne lehce nad hranicí toho, kdy se nemohu rozhodnout jestli to pomáhá nebo škodí (spíš pomáhá). Pořád je to jen generování textu na základě nějaké pravděpodobnosti (teď si ten kdo rozumí ML musí trhat vlasy na hlavě, ale já tomu nerozumím, tak se na to dívám takto). S tím souvisí ty nebezpečné "drobné zrady" ve výstupu a také to, že pokud se AI náhle skvěle trefuje v tom co chci psát, možná píšu stopadesátou repetitivní variantu téhož a měl bych se zamyslet jestli něco nechci spíš zobecnit/refaktorovat. Může být snadné podlehnout svodům "copy paste programování" když ten repetiviní  kód nabízí AI.  Jak říkám, použít, ale opatrně. A to se podle mne hned tak rychle nezmění (můžu se plést).

Re:Produktivita vývojáře v době AI
« Odpověď #21 kdy: 11. 10. 2024, 14:12:31 »
Vlastně ještě jedna věc: orientace v nedokumentovaném kódu. Hodím mu kód a nechám si jej vysvětlit. Někdy to funguje překvapivě dobře.

Re:Produktivita vývojáře v AI době
« Odpověď #22 kdy: 11. 10. 2024, 15:17:27 »
Pokud to je něco, co člověk vymýšlet nechce, proč ne. Ale já osobně se tedy tímhle oborem živím právě proto, že mě to něco vymýšlet baví. A za to mě ostatně taky platí.

Mám náladu tak si trochu zakomunikuji. V programování high lvl/low lvl v 99,999% vymýšlíš tak jako tak znovu kolo, které před tebou už někdo vytvořil. Jinak řečeno naprogramuješ stejnou myšlenku jinak(někdy lépe, někdy hůře-> respektive většinou hůře).

* Co jsi kdy vymyslel co před tebou ještě nikdo nikdy nevymyslel či nestvořil ? Stačí 1 příklad a kolik jsi jich celkově za celý život zvládl.

S dovolením vstoupím do diskuze s paralelou stavebnice. Samozřejmě mne nikdo nezaplatí, že vyrábím kostky lega, to umí už někdo lépe, dokonce i za to, že složím pár kostiček k sobě a vznikne jednoduchý podvozek auta mne nikdo moc nepochválí, ale že z těch dílů, a složitějších celků složím dohromady stavbu, kterou zákazník chtěl (a ani neví, že ji vlastně chtěl a to co prvně říkal, že chce, může být vlastně něco úplně jiného), to je ta přidaná hodnota, a to je to co zatím AI nahradit neumí.

Re:Produktivita vývojáře v AI době
« Odpověď #23 kdy: 11. 10. 2024, 15:39:43 »
S dovolením vstoupím do diskuze s paralelou stavebnice. Samozřejmě mne nikdo nezaplatí, že vyrábím kostky lega, to umí už někdo lépe, dokonce i za to, že složím pár kostiček k sobě a vznikne jednoduchý podvozek auta mne nikdo moc nepochválí, ale že z těch dílů, a složitějších celků složím dohromady stavbu, kterou zákazník chtěl (a ani neví, že ji vlastně chtěl a to co prvně říkal, že chce, může být vlastně něco úplně jiného), to je ta přidaná hodnota, a to je to co zatím AI nahradit neumí.

Taková paralela na celkem už starý vtípek:

"Aby AI nahradila práci programátora, musel by se zákazník naučit detailně popsat svoje požadavky.. Jo, jsme v pohodě"  ;)

Re:Produktivita vývojáře v době AI
« Odpověď #24 kdy: 11. 10. 2024, 17:05:41 »
Otázka je, jestli jsme blíže AI, která naprogramuje něco většího, nebo AI, která bude konverzovat se zákazníkem, aby zjistila všechny požadavky…

Re:Produktivita vývojáře v AI době
« Odpověď #25 kdy: 11. 10. 2024, 20:22:14 »
musel by se zákazník naučit detailně popsat svoje požadavky..
Takovemu cloveku ze rika prompter a tohle povolani ma pred sebou budoucnost.

Re:Produktivita vývojáře v době AI
« Odpověď #26 kdy: 13. 10. 2024, 18:36:11 »
Otázka je, jestli jsme blíže AI, která naprogramuje něco většího, nebo AI, která bude konverzovat se zákazníkem, aby zjistila všechny požadavky…

Zatím je problém ve velikosti contextu. Zatím není možné do LLM nahrát celé monorepo, nebo hromadu souvisejících (přímo i nepřímo) mikroservis/repos.

Jinak osobně používám Copilota na autocomplete a ChatGPT na dotazy, generování SQL, jq, bash atd. Bohužel Copilot Chat, ač má určitý context, tak je většinou vedle jak ta jedle.

A tady pro mistra know-it-all, kterému hloupá AI nedokáže ani trochu poradit: lol

Re:Produktivita vývojáře v době AI
« Odpověď #27 kdy: 13. 10. 2024, 18:54:17 »
Těch problémů tam bude víc, nicméně pointa je, že ten argument přesností zadání moc nedává moc smysl, protože jestli tu někdy bude AI schopná programovat komplexní projekty, dost možná tu už bude i AI schopná to přesné zadání vykomunikovat…

qelurg

  • ****
  • 380
    • Zobrazit profil
    • E-mail
Re:Produktivita vývojáře v době AI
« Odpověď #28 kdy: 14. 10. 2024, 10:50:18 »
Používám placený ChatGPT intenzivně a to ve dvou scénářích, otrok a rádce, mám na to zvlášť nastavené agenty. Otrok dělá jednoduché věci, primitivní věci, ideálně se často opakující, kdy mu dám vzor, a nechá́m ho vygenerovat zbytek. Výhodou je ušetřený čas. Rádce mi radí, když něco nevím, automaticky nabízí víc variantních řešení, srovnává je a uvádí výhody a nevýhody. Tyto věci nepřebírám do kódu, beru je jako výukový materiál. Používání AI mě přimělo/naučilo psát krátké jednoznačné a jednoúčelové funkce, ideálně nezávislé na zbytku programu, aby se na nich dalo s AI pracovat samostatně bez nutnosti znalosti rozsáhlého kontextu. To bylo v doporučeních jak správně kódovat už dávno, ale respektovat jsem to začal až teď.

Re:Produktivita vývojáře v době AI
« Odpověď #29 kdy: 14. 10. 2024, 14:52:34 »
Ahoj, asi pul roku pouzivam neplacenou verzi SourceGraph Cody v podobne doplnku do VS Code. Pouziva model Anthropic Claude Sonnet 3.5 (tedy dlouhy kontext a fill in the middle a ne predict next word jako ChatGPT modely, coz by melo byt pro programovani uzitecnejsi -- ale nemam osobni zkusenost) spolecne s lokalnim RAG/retrieval-augmented generation (probehne se po celem naklonovanem Git repu a zaindexuje si ho -- napocita embeddingy meho kodu pres LLM API a nahodi lokalni similarity/semantic search, kterym obohacuje dotazy do LLM API) a da se pouzit jak pro code completion, tak pro chat (tam je mozne pridavat kontext -- napr. oznacit blok radku nebo cely soubor). Super bonus je, ze se zasilana data nepouzivaji pro trening modelu -- i ve free verzi!

Free verze nema zadny limit ktery by me realne omezoval a nevyzaduje nic vic nez GitHub ucet (zadny telefon, cele jmeno a datum narozeni apod.). Pokud si nekdo plati nejake LLM API, tak se da pouzit i vlastni API klic. Pomoci GitHub uctu dovede zjistit, jak moc se zmenil kod oproti dobe kdy nad nim napocital embeddingy, takze je muze pregenerovat.

Diky RAG je coding asistent velice relevantni, protoze napovida nejen generickym know-how vydestilovanym z internetu, ale aplikuje lokalni coding style z meho Git repa. Fun fact: Dost mu pomahaji typove anotace, semanticky spravne nazvy trid/metod, docstringy a komentare -- myslim, ze to je ultimatni argument proti zastancum zakazu veskerych komentaru/docstringu. ;-)

Sice pouzivam striktni linting, pomerne striktni typove anotace a v IDE mam doplnek, ktere diky typovym anotacim dovede opravdu slusne doplnovat, ale diky asistentovi je mozne doplnovat i opakujici se fragmenty kodu (napr. konstrukce SQL dotazu pro ruzne DAO metody, kde se casto opakuji jmena tabulek, struktura slozenych primarnich klicu, WHERE podminky apod.). U testu a docstringu pouzivam styl "zacnu psat, necham ho doplnit, doupravim to po nem a zas necham doplnit". Diky specializaci na integraci do IDE se nemusim moc zabyvat prompt engineeringem, protoze system prompt maji zrejme tak vytuneny, ze mi casto staci jen pastnout treba cast interaktivni session v IPython REPL nebo z prikazove radky vcetne chybove hlasky a ani nemusim pripisovat at to opravi nebo poradi co je spatne. Pomerne uzitecna je i prvotni orientace v nezname codebase (nechat si pres chat vysvetlit, k cemu dane repo slouzi a kde jsou zajimave casti kde se deje to nejdulezitejsi).

Naopak, na code review mi hodne vadi, kdyz se autor neobtezuje po asistentovi projit a doplnit docstringy -- protoze pak jen duplikuji to, co se da vycist ze jmena metody/jeji tridy a nemaji tak skoro zadnou pridanou hodnotu.

Za me stoji za to asistenta pouzivat -- rozhodne ze me nedela dva programatory v jednom, ale setri mi cast prace a pomaha generovat napady. Nebojim se, ze by (i pri dnesnim prekotnem vyvoji) tahle technologie nahradila programatory -- ale nektere veci diky tomu pujdou delat s mensi drinou.