Pokud děláte ve firmě, prasíte?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Zax
Člen | 370
+
+1
-

Nedalo mi to, musel jsem se zeptat…

Až do nedávna jsem neměl zkušenost se zaměstnáním. Peníze jsem měl a tak jsem si nějakou dobu spokojeně žil, učil se Nette a vše kolem, snažil jsem se nasávat informace co se týče best practices… Prostě jsem se připravoval na to, že nejspíš budu až do konce života vyvíjet, a samozřejmě jsem to chtěl dělat co nejlépe.

Před měsícem a půl jsem však nastoupil do svého prvního zaměstnání a musím říct jen jedno: veškeré ideály ze mě opadaly prakticky hned první den. Presentery prolezlé špagetami, používání $this->context, testy žádné, všude to smrdělo copy&pastem, hrůzy typu {if $product->id === 123}...{/if} v šablonách, v laděnce klidně přes sto dotazů na databázi…

Když jsem pak měl pohovor ještě u jiné firmy, dozvěděl jsem se, že u nich to funguje velmi podobně.

Nyní pracuji samostatně na větším projektu a zjišťuji, že jak se objevují nové požadavky, které musí být zapracovány co nejrychleji, tak také začínám dost prasit, až se mi to nelíbí. Sice usiluji o nějakou strukturu, vše dělím na komponenty, píšu si poctivě extensions apod., ale například některé komponenty měly původně jiný účel a rychlými hotfixy jsem je předělal na něco úplně jiného, takže nesedí názvy, mají 10+ závislostí a podobně. A samozřejmě jak se spěchá, tak není čas ani nálada to předělat, opravit, čímž samozřejmě pak další úpravy trvají delší dobu a problém se víc a víc nabaluje (snowball effect). Normálně se mi programování začíná znechucovat :-(

Je skutečně korporátní sféra obecně natolik prohnilá a uspěchaná, že se prostě nedá vyvíjet čistě? Opravdu musí mít člověk živnosťák a sám si vybírat neuspěchané kšefty, aby mohl vyvíjet podle svého gusta a aby ho práce skutečně bavila a naplňovala?

Jak to máte vy?

Tomáš Jablonický
Člen | 115
+
+5
-

Ano, je to tak.

Jednoduchá rada. Pokud firmě nevadí špagety kód a dokonce tě do něj tlačí, není nic lepšího než ji opustit. To samé platí i o projektech.

Dost závisí na projkťácích. Těm hloupím je úplně jedno jak je to napsané – hlavně, že to funguje. Ti chytří si uvědomují, že dobrá práce vyžaduje hodně času a taky s tím počítají. Netlačí na programátora ale na klienta aby si pustil více peněz a uvolnil více času.

To co je děláno formou špagety kódu smrdí vždy průserem.

Schrnuto takto. V PHP dělá každý druhý programátor a málo kdo zvládá základy programování natož myslí v OOP. Pak ta práce i tak vypadá, prože firma nechce utrácet za dobré lidi ale hledá nejlevnější řešení aby vydělala. Zažívám to furt a dobrý projekt najdu jednou za dva roky … bohužel :-(.

Nejlepší je dělat sám na sebe a držet si laťku hodně vysoko. Pak to člověka baví, má z toho poměrně vysoký příjem (přeci nebudu dělat projekt za pár šlupek) a hlavně dobré jméno…

Pavel Kravčík
Člen | 1195
+
0
-

Byl jsem na tom podobně, ale teď jsem dostal trochu času to změnit. Takže vyvíjíme aplikaci 2.0, kde se snažím ten návrh přizpůsobit, co nejlepšímu řešení.

Ale časem se do toho stejně nastrkají špagety. Protože plánování je všude na prd a neustále se mění priority, na to si budeš muset zvyknout. Snaž se naučit, co nejvíce a odvést, co nejlepší práci. Neděláš to pro firmu, děláš to pro sebe. A pak se můžeš posunout dále. :)

Jan Endel
Člen | 1016
+
+10
-

Všude to tak skutečně není, u nás v damejidlo fungujeme na principu milestonu (takovy osekany scrum). V úterý se nahází issue, co se mají ten týden stihnout a @stekycz už je natolik zkušený, že nedovolí aby se zadalo víc, než by bylo zdrávo. Samozřejmě se občas něco nestihne a celé se to posune do dalšího milestone.

Taky se na server nedostane nic, na co by se neudělalo code review, takže vyložená prasárna se odstíní už tady. Ono když člověk začně věci psát fakt tak jak má, včetně testů atp. tak nakonec zjistí, že je stejně produktivní, ne-li produktivnější, než když pravidelně prasí.

Plus nám pomáhá to, že se každý měsíc potkáme všichni vývojáři někdy o víkendu a pořádně zrefaktorujeme nějakou větší část co byla ještě „naprasená“.

Shrnuto podtrženo, rozhodně se všude neprasí, a je jenom na firmě, jestli investuje víc a tím vydělá mnohem víc nebo se spokojí s levným řešením a je otázkou času, kdy je její produkt naprosto neudržovatelný a plný bugů.

Editoval Jan Endel (11. 3. 2015 9:11)

Tomáš Jablonický
Člen | 115
+
0
-

@Jan Endel Jenže tento model využívá jen minimum firem :-(. Zkoušel jsem to zavést, tam kde to mělo smysl, a koukali na mě jako bych je chtěl okrádat a buzerovat. Prostě stejně jako jsou hloupí lidi, tak jsou i hloupé firmy.

To co píšeš je ideální situace, a opravdu mám zkušenost, že jsem minimálně stejně produktivní jako nějaký Ital co to bastlí, tak jak mu to přijde pod ruku.

Editoval Tomáš Jablonický (11. 3. 2015 9:35)

Quinix
Člen | 108
+
0
-

Na to je jednoduchá rada – pokud se ti systém vývoje nelíbí a vedení nebo ostatní vývojáři nechtějí nic změnit, běž jinam.

Po (dobrých) programátorech je velká poptávka a všude se to tak rozhodně nedělá. Je to zkušenost, a aspoň člověk ví, na co se má př dalších pohovorech zeptat :-)

Jan Endel
Člen | 1016
+
0
-

bohuzel no, pak bych poradil dve veci, nejdriv se pokusit to zavest v te firme kde jsem a pote co pro to udelam maximum, tak aktivne hledat takovou firmu, kde toto maji.

Ale chapu ze z me pozice uz se to spatne radi :).

Zax
Člen | 370
+
+1
-

Pánové, díky za odpovědi.

Odchod jinam jsem samozřejmě zvažoval, ale ve hře je spousta faktorů, které spíš tlačí k tomu, abych zůstal.

  • Najít firmu, kde by to fungovalo podle mých představ, zjevně nebude snadné.
  • Mám dost problém zvykat si na nové lidi a prostředí (mnoho let jsem strávil zavřený doma v pokoji).
  • Do práce to mám pět minut pěšky. To je hodně fajn, ne? :-)
  • Kolega je dost v poho, když jsem po nástupu navrhnul, že bych chtěl mít aspoň nějaký firemní framework jako composer balíček, pochopil, kam tím mířím.
  • Šéf asi poznal talent :-D a když zjistil, že hledám místo jinde, tak mi udělal velmi dobrou nabídku, která zahrnuje i permanentní home office (v práci máme open space kancl a když někdo začne stříhat video a pouštět to dokola na repráky, tak mám chuť vraždit :-/). Jinde bych si musel takovou důvěru získávat opět od píky.
  • Mám tu rozdělaný větší projekt a není tu nikdo, kdo by to mohl případně převzít a dodělat (kolega na to nemá čas).
  • Potřebuju prachy a to hned, ne až za měsíc nebo za půl roku, prostě HNED. Jinak můžu jít na ulici nebo zpět k rodičům.

Zkusím tedy nějak vedení vysvětlit, o co mi jde, ale jak to vystihl @TomášJablonický – nerad bych v někom vyvolával pocit, že ho chci okrádat. Třeba psaní testů je krásný příklad: skoro nikdo to nedělá, je to spousta práce navíc (testy můžou být klidně větší, než kód samotného projektu), která vlastně ani není vidět, a těžko někomu vysvětlit, že je to lepší, než trávit půlku pracovní doby proklikáváním a čekáním, kdy vybafne laděnka (což je koneckonců taky práce, která není moc vidět, ale zase ji může dělat kdokoliv).

Průser je, když je fakt potřeba mít něco rychle hotové a ještě se do toho požadavky každou chvíli mění. Vůbec mě nenapadá, jak toto řešit :-(

Editoval Zax (11. 3. 2015 12:43)

Kcko
Člen | 468
+
0
-

Pokud Ti takhle firma vyjde vstříc není důvod ten progres a vylepšování workflow postupně zvedat a dovést k dokonalosti.

Všechno není hned a pokud si takhle vyšlapeš cestičku, tak proč nezůstat a naučit ostatní jak to dělat lépe?

Najít slušnou firmu není jen tak, přeci nebudeš hned na pohovu klást otázky, píšete špageti kód, verzujete znáte composer? Ne , nechci díky.

Já jsem působil ve středně velké firmě, kde byly tyto návyky stejné (amatérismus), ale klienty měla firma velké.

Postupně jsem tam vyšlápaval cestu k nějakému zlepšení, což se cenilo (nejen finančně) ale i na vážnosti a když se pak bohužel propouštělo (firma měla nadbytek programátorů …) tak jsem nebyl na pořadu dne :).

Jan Endel
Člen | 1016
+
+3
-

Co se týče psaní testůů, krásně to vystihl David Grud: „Psaní tesů není práce navíc, ale namíň“, děláš to samé, jen místo neustálého refreshování prohlížeče si pouštíš command line, navíc se razantně sníží počet bugů, které způsobuje to, že se šáhne na něco, co se ještě používá někde jinde. Takže ve finále si to nemusíš obhajovat, protože ten čas je téměř stejný.

Zax
Člen | 370
+
+1
-

@JanEndel to je sice fakt, ale problém je počáteční investice, kdy vlastně ze začátku neděláš nic moc produktivního (čti: to, co je vidět) – musíš si nainstalovat tester, nastavit prostředí, zjistit, že testeru musíš předhodit nějaký custom php.ini a pak pochopitelně ty testy napsat (a i v testech se dají dělat chyby, který je pak opět potřeba odhalit a opravit). Prostě trvá o něco dýl, než začnou být vidět výsledky a to bohužel moc nezapadá do situace, kdy musíš mít zítra hotovo a výsledky musí být vidět co nejdřív. A pak když to „nějak“ funguje, tak se pochopitelně už na testy kašle, protože přichází další projekty, které je třeba opět co nejrychleji začít řešit. Je to takový začarovaný kruh.

Jan Endel
Člen | 1016
+
0
-

Tak je třeba se holt práci věnovat semtam i o víkendu, tedy nastavit si prostředí, abych do ní chodil s větší chutí.

studna
Člen | 181
+
+1
-

Zax napsal(a):

Prostě trvá o něco dýl, než začnou být vidět výsledky a to bohužel moc nezapadá do situace, kdy musíš mít zítra hotovo a výsledky musí být vidět co nejdřív

Pokud dostaneš zadání s tím, že má být všechno ASAP a v prezentovatelné formě, tak řekni NE. Neseš přece zodpovědnost za kvalitu kódu a když se z toho stane neudržovatelná, zabugovaná aplikace, tak nebudou vinit projekťáka, ale tebe.

A to je právě daleko horší, než absence testů. Programuješ ze dne na den, uzpůsobuješ vývoj projekťákovi/klientovi. Nepracuješ průběžně, ale skokově („na to se vykašli, teď potřebujeme prezentovat toto“). Pomalu ztrácíš kontrolu nad kódem (nad vývojem už jsi ji ztratil). Pracuješ od rána do rána, protože zítra je potřeba něco ukázat klientovi. A stejně se nestíhá. A tak tlak ze strany klienta narůstá stejnou rychlostí, jako počet bugů. Je to neúnosné, ale klient refaktorizaci nezaplatí (proč taky?). A tak dále.

Takže pokud je u vás vývoj projektů neřízený, tak zkus nejdříve lobovat za změnu tam. Pak zavedeš psaní testů mnohem snadněji.

Zax
Člen | 370
+
0
-

@studna Když řeknu ne, tak ale musím taky počítat s možností, že dostanu odpověď ve stylu „no když ne, tak si běž a my si najdeme někoho ochotnějšího“… to si s pěti stovkama na účtu nemůžu dovolit :-(

Nicméně jsem zadavateli (a šéfovi) zkusil popsat, jaká je situace a jaká je má představa. Uvidím, co mi na to řeknou. Ale vzhledem k tomu, že to chtějí spustit fakt co nejdřív, tak se nejspíš nevyhnu tomu, že budu muset projekt nějak doprasit aspoň v základní verzi.

Každopádně si připadám trochu jako neschopný idiot když se snažím vysvětlit, že bych potřeboval strávit celkem značné množství času prací, která nebude vlastně vůbec vidět. Je mi to celé hrozně nepříjemné :-(

enumag
Člen | 2118
+
+2
-

@Zax Doporučuji přečíst tento článek. ;-)

David Grudl
Nette Core | 8227
+
+19
-

@Zax ty se v oboru, kde je poptávka pro kvalitních programátorech asi tak 20× větší, než nabídka na trhu, obáváš, že tě někdo vyhodí? Bože, to tě bude čekat děsivý půl den bez práce, než seženeš další.

grogy
Člen | 147
+
0
-

Přesně tak, jak píše @DavidGrudl. Na konci září budu volný a strašně se těším na novou práci. Ale nehledám ji, protože to stačí týden před tím, než budu chtít nastoupit. Stejně bude nabídek X desítek, takže si budu moci vybírat. (a to ani zdaleka nejsem takové eso jako David)

Proto říkám, pokud chceš dělat kód pořádně, tak jej pořádně dělej. Tam kde seš, nebo jinde. Prasit místo Tebe bude dalších X desítek lidí. :)

Zax
Člen | 370
+
+3
-

@DavidGrudl Půl dne bez práce? No problem. Když odejdu (ať už z jakéhokoliv důvodu) a nedostanu zaplaceno? Měsíc nemám co žrát…

@grogy Ale to je právě ono. Na jednoho programátora, který chce dělat práci poctivě, připadá x lidí, kteří to sice naprasí, ale budou mít mnohem rychleji hotovo a za míň peněz. Projekťák nepozná, že kód smrdí a potřebuje refaktorovat, a určitě ho nezajímají kecy, že je třeba věnovat nějaký čas velmi užitečné práci, která ale nebude vůbec vidět. To radši vezme patlala, který drží hubu a krok, s ničím neprudí a jehož výsledky jsou vidět okamžitě.

Quinix
Člen | 108
+
+2
-

Kcko napsal(a):
Najít slušnou firmu není jen tak, přeci nebudeš hned na pohovu klást otázky, píšete špageti kód, verzujete znáte composer? Ne , nechci díky.

Ale to je právě to, na co by ses měl zeptat (pokud tě to teda zajímá). :-) Technologie, workflow atd… samozřejmě za předpokladu, že jsem na pohovoru s někým z vývoje.

Jan Endel
Člen | 1016
+
+4
-

@Zax – ale přesně to je projekťáková práce, pokud to nepozná, nemá dělat projekťáka.

chikeet
Člen | 160
+
+1
-

@Zax

Zax napsal(a):

Když odejdu (ať už z jakéhokoliv důvodu) a nedostanu zaplaceno? Měsíc nemám co žrát…

Takže, pokud to správně chápu, to máš de facto do důchodu, neb když odejdeš, tak nedostaneš zaplaceno a umřeš hlady. No, nepěkné vyhlídky… Každopádně pracovat u firmy, kde si nejsem jistá výplatou, bych fakt nechtěla. To budu radši měsíc jíst suchý chleba, našetřím si něco do rezervy a zdrhnu tak brzo, jak to půjde. Tohle totiž vypovídá docela dost o tom, jak si firma váží svých lidí. Solidní firma ti nikdy nebude vyhrožovat, že ti nezaplatí za odvedenou práci, aby si tě udržela.

Editoval chikeet (12. 3. 2015 3:40)

Zax
Člen | 370
+
0
-

@chikeet Asi si trošku nerozumíme. Nikdo mi ničím nevyhrožuje, výplatou si jsem jistý, dokud tam pracuji. Jenže si to představ taky z pohledu zaměstnavatele – přijde ti nový vývojář, měsíc dělá samostatně na projektu a pak ti zdrhne a nechá za sebou něco, co není dodělané, a ani se v tom nikdo (čti: ten jediný kolega vývojář, který ve firmě je) nebude chtít vrtat, protože jak se spěchalo, tak je to holt zbastlený. Měla bys chuť za něco takového zaplatit? Asi moc ne, co? ;-)

Je to spíš jen takové „co by kdyby“, ale to neznamená, že to nemůže nastat a že s tím nemusím vůbec počítat.

Šaman
Člen | 2662
+
+2
-

Jop, prasení je celkem běžný jev ve větších projektech. Zvlášť na těch starších, které třeba ještě ani neví, co je DI. Co se týče práce, tak to nevidím tak růžově, jako někteří výše – ano, poptávka po dobrých programátorech je, ale je trochu o štěstí dostat se k projektům, které jsou psané opravdu na kvalitu, nikoliv na čas. Já mám rád spíš menší zakázky, kde jsem jediný programátor a mám plnmou kontrolu nad kódem. Střední projekty se daří držet v rozumné čistotě už jen za cenu častého refaktoringu. A velký projekt, o které bych řekl, že je čistý a přehledný, jsem zatím neviděl.

newPOPE
Člen | 648
+
0
-

Ja mam s „korporatom“ skusenost len jednu. Slovenska firma ktora vyvija GPS navigacie na telefony :).

Pohovor:
Q: Povedzte mi teda nieco o workflowe?
A: Ideme na scrume, mame high availability DB master slave, 4 aplikacne… Pouzivame GIT a Jenkins. Takisto CI.

Realita:

  • Infrastruktura dobra (lebo tam boli ludia ktori to nepustili)
  • Projektov pre dany tim bolo asi 8. Od webu, eshopu, fakturacneho systemu po rozne APIs
  • Jenkins sice bol ale robil asi 2 joby a aj to stylom „musis ist sem a kliknut sem, sem sem“
  • Vsade bolo pocut len „v tej dobe okrem Zendu 1 nic ine nebolo tak sme si to napisali sami!“

Code reviews (len ako priklad):
Pocuvali sme „Ano robte ich.“ Opat v reale (schvalne som to skusil commitnut slovo „pi**“ ze co sa stane) uplne inak. Do par min schvalene. Ku koncu mojho posobenia som "tech guru"ovi povedal ze ten kod co poslal vygeneruje moj brat ktory studuje stavebnu fakultu. Po par desiatkach minut hlasneho dohadovania som to proste vzdal. V takychto veciach ste vacsinou sami a nik sa za vas nepostavi (lebo sa boja o miesto pracu … a NEUVEDOMUJU si ze do par dni maju pracu)

Nakoniec som odtial odisiel asi po 1,5 roku z dobrym pocitom, ze pouzivaju Jenkinsa poriadne (cca 30jobov, autobuildy, …), maju vyborny dev stack pre web/eshop devel zalozeny na Grunte, maju TESTY ktore su spustane automaticky atd. Stalo to ale nervov a sebazapierania. Otazne kolko to tam vydrzi :D.


Na druhu stranu je podstatne lahsie pisat nieco od zaciatku ako niekam prist a dat to do „poriadku“. Schvalne si to skuste :)


No a na zaver: Ja som sice v BA ale je to rovnake aj inde. Zamyslite sa na par minut nad tym ktore typy ludi chodia na meetupy, konfery, coding pivá a podobne. Ja osobne som dosiel k tomu, ze ti ktori su v danej firme najmudrejsi taki sa tam vobec neobjavuju!

H0w4rd
Člen | 96
+
+10
-

Už jste někdy viděli příkazy mysql_connect, mysql_query, mysql_fetch_assoc v presenteru v action metodě? Já ano :-(

Filip Klimeš
Nette Blogger | 156
+
+3
-

Já mám zkušenost s tím, jak to chodí ve startupech, a je to velmi podobné. Ze začátku nejsou prostředky na drahé programátory, ani na drahé technologie. Typicky je potřeba rychle vyprodukovat prototypy, které pomůžou získat investici. Na tom není nic špatného, ale často tyhle prototypy zůstávají a lepí se na ně další funkcionalita. Neexistuje dokumentace, neexistují testy a dodělat je by stálo obrovské množství času, protože kód bývá netestovatelný (spaghetti presenter pattern).

V těch lepších se po získání investice kód zahodí a napíše znovu, lépe. V těch horších kód zůstává, programátoři jsou znechuceni a odcházejí (což často zabíjí i samotný projekt).

Velký problém je, že často se nedělá počáteční analýza projektu. Nedá se pak dopředu navrhnout architektura, nenastaví se žádné standardy ani metriky pro měření kvality kódu.


Za dva roky, co programuji za peníze, jsem došel k následujícímu závěru. Programování je řemeslo jako každé jiné. Vyžaduje disciplínu a dobré řízení.


newPOPE napsal(a):
No a na zaver: Ja som sice v BA ale je to rovnake aj inde. Zamyslite sa na par minut nad tym ktore typy ludi chodia na meetupy, konfery, coding pivá a podobne. Ja osobne som dosiel k tomu, ze ti ktori su v danej firme najmudrejsi taki sa tam vobec neobjavuju!

„najmudrejsi“ je ironie? :)

Editoval Filip Klimeš (12. 3. 2015 11:19)

chikeet
Člen | 160
+
0
-

@Zax aaha, tak to je trochu jiná :-) Taky mám za sebou jeden podobně zbastlený projekt z doby svých začátků s phpkem a taky mám potřebu dostat ho do rozumného stavu, takže chápu. Odejít od rozdělaného projektu, ve kterém se nikdo jiný nevyzná, je prakticky nemožné, pokud teda člověku není úplně fuk, co po něm zůstane a jaký dojem zanechá.

Edit: A možná, že zrovna na to pak hřeší manažeři, kteří tlačí na rychlost a kvalita je jim šumák. A doplácí na to samozřejmě programátor, pokud nemá kachní žaludek a hroší kůži. Takže je na něm, k čemu se nechá dohnat… Asi si tím holt musí projít každý sám za sebe :-)

Omlouvám se za ten předchozí výlev, ale v českých firmách jsou podobné praktiky bohužel často realita (bez ohledu na obor) a přijde mi celkově dost smutné, že tady máme takové „standardy“, takže mě vždycky nadzvedne, když o něčem takovém slyším.

No, každopádně kdyby tě ten boj s větrnými mlýny časem přestal bavit a nic tě tam už nedrželo, tak se ozvi, další programátor myslící správným směrem by se nám hodil do týmu.

Editoval chikeet (12. 3. 2015 13:56)

Zax
Člen | 370
+
+2
-

To je fakt hustý jak to tady čtu… nějakou dobu to ještě vydržím, ale asi si brzo udělám živnosťák a začnu být prostě velmi vybíravý. Naštěstí nejsem náročný na prachy, dokážu vyžít i s 10k měsíčně naprosto v pohodě, jde mi hlavně o to, abych z té práce nepřišel o zbytky svého chatrného duševního zdraví. Freelance programátoři mi obecně připadají víc spokojení se svým životem, než zaměstnanci – už je mi naprosto jasné, proč.

Nechápu, že ještě zadavatelům a projekťákům nedošlo, že když se spěchá, tak to prostě stojí za ho*no. Asi fakt není od věci prostě odmítat dělat pod časovým tlakem… chcete to fakt rychle za každou cenu? Smůla, nebudete mít nic, nechci nést zodpovědnost za něco, kde nemám kontrolu nad kvalitou, stáhněte si open source řešení a nashle. ¯\_(ツ)_/¯ To je jak když se staví barák honem honem, šetří se na materiálech a kdo pak nese zodpovědnost když to lidem spadne na hlavu a zabije je to?

Je tu někdo, kdo dělal v zaměstnání a pak přešel na živnost? Jak jste to vyřešili s konkurenční doložkou, která je v pracovní smlouvě? Měli jste třeba problém dostat ze zaměstnavatele písemný souhlas?

Jan Endel
Člen | 1016
+
+1
-

Měl jsem to v několika firmách a nikdy na ni nikdy prakticky nedošlo. Je to jenom právničina, kterou pokud se nenajde nějaký chytrák, tak bych se tím netrápil.

encero
Člen | 6
+
+2
-

@Zax ahoj kolego.

Ad testy.

Četl jsem desítky článků o tom že se musí testovat i otom jak se ma testovat. Že testy jsou super, ale ještě jsem nenarazil na ukázku testů z realného webového projektu. Na githubu jsou stovky knihoven s 100% test coverage ale běžný malý web o třech modelech a pěti presenterech kde by se člověk mohl se svými testy odpíchnout… Rád si nechám poradit.


Ad code review.

Code review je taky super věc a upřímně doufám, že se mi ji povede časem zavést. Na druhou stranu nedokážu říct zda jsem schopný dělat code review na projektu který neznám. Jen ve velmi málo případech se se @Zax potkáme na jednom projektu oba dva.

Za mě otázka do pléna, máte někdo zkušenost s děláním review na kódu o kterém nevíte vůbec nic?


Ad tlak na rychlost práce.

Moje zkušenost je taková, že se dá skoro vždy domluvit. To že je na práci málo času, a „musí“ se prasit je málo kdy vina jednoho člověka. Mnohdy je to souhra mnoha faktorů. Klient to chce hned, account nechal projekt vyhnít, projekťák dodal pozdě podklady, programátor udělal špatný odhad času.

Když si představím, že za mnou příjde account s tím že je potřeba vyvinout aplikaci do konce týdne. Protože si u klienta uděláme oko. Pořípadě že se u projektu neplní KPI tak je potřeba udělat nějakou úpravu super rychle. A já mu ukážu prostředníček že píšu testy ať příjde za čtrnáct dní… No myslím že bych firmně, sobě ani klientovi dobrou službu neudělal.

Z druhé strany, pokud se dostane do produkce nějaké bota z mojí strany tak mě account podrží a s klientem to urovná.

Jako programátor se opravdu necítím jako nadrasa které musí zbytek firmy pochlebovat a ustupovat. Jsme snad lidi tak se můžeme rozumně domluvit.


Ad refaktorace

Refaktoruju vždy když je volná chvíle a pomalu likviduju „technický dluh“ aspoň z téhle strany. Pokud se do modelu, componenty, presenteru nabastlí nějaká featura. Mám ji na wanted listu dokud se nenaskytne příležitost tenhle kus kodu zrefaktorovat. Samozřejmě se snažím psát rovnou „čistě“ občas se ale stane že postupnými úpravami se změní kompletní účel. A je potřeba celý kus přepsat.


Abych nebyl za úplného negativistu tak, z mé zkušenosti se dá psát čistý kód. Je to skill jako každý jiný a sám vidím pokroky které v téhle oblasti dělám. Pokud se člověk snaží psát čistě tak se v psaní čistého kódu zlepšuje.

btw: dělá někdo „školení“ na testy? Unit, Integrační, Selenium? Zmého pohledu se tahle zkušenost musí předat. Článek na webu neodpovídá na otázky.

chikeet
Člen | 160
+
+1
-

@Zax

Zax napsal(a):

Je tu někdo, kdo dělal v zaměstnání a pak přešel na živnost? Jak jste to vyřešili s konkurenční doložkou, která je v pracovní smlouvě? Měli jste třeba problém dostat ze zaměstnavatele písemný souhlas?

Zaměstnaná jsem byla jednou a konkurenční doložka se, pokud si pamatuju, vztahovala pouze na specifické know-how firmy. Stejně tak v případě pozdější spolupráce s firmami jako OSVČ. Konkurenční doložky, které ti brání pracovat v oboru (tzn. např. že tři roky po ukončení spolupráce s firmou nesmíš programovat v phpku) jsou z praktického hlediska blbost, protože jsou pro programátora skoro likvidační. Pokud si firma dá něco takového do smlouvy, riskuje, že každý programátor, který si tu smlouvu aspoň přečte, se s nimi obratem rozloučí. Věřím, že takovou hloupost snad ani u nás firmy nedělají (a pokud se pletu, vyveďte mě z omylu).

Jinak k té spokojenosti – když máš svůj život ve svých rukou, řídíš si ho sám a jediný, koho můžeš vinit z nespokojenosti, jsi zase ty sám, žádá si to trochu jiný přístup, než když žiješ jako oběť okolností, které máš mizivou šanci ovlivnit. Je tam velký potenciál pro osobní rozvoj, ale s negativním přístupem se daleko nedostaneš, takže je to hodně i o změně uvažování zaměstnanec → freelancer. Jako freelancer si jednoduše nemůžeš dovolit negativní přístup a svalování viny na okolnosti a druhé lidi, protože lidi i okolnosti jsou následkem tvého rozhodnutí.

Pokud nejsi závislý typ, který by čekal, až mu někdo řekne, co má dělat (což zjevně nejsi), budeš na volné noze spokojenější než v zaměstnání.

Šaman
Člen | 2662
+
+3
-

Co myslíš konkurenční doložkou? Běžně se podepisuje mlčenlivost o firemním know-how, procesech a obchodních tajemstvích. S tím není problém, jen pokud používám třeba svoje vlastní composer balíčky, tak to hlásím projekťákovi, aby bylo jasné, že tohle je moje a zůstává moje. Composer s tím pomáhá, protože takovýhle kód pak ani není součástí repozitáře projektu, takže je poměrně jasně vidět, co je firmy a co moje.

Taková ta doložka o nemožnosti pracovat jako programátor po nějaký čas není běžná a pokud by tam byla, musel bys prý dostat tzv. zlatý padák (a to i když odejdeš sám, nebo jsi vyhozen za porušení kázně). Občas se stává, že podepíšu, že pak třeba rok nebudu dělat v konkurenčním oboru firmy, pro kterou programuji (takže ne, že nebudu programovat, ale třeba rok nemohu programovat pro jinou sázkovou společnost). S tím zas takový problém nebývá, oborů které potřebují webovou aplikaci je mnoho.

Šaman
Člen | 2662
+
+1
-

encero napsal(a):

Ad testy.

Četl jsem desítky článků o tom že se musí testovat i otom jak se ma testovat. Že testy jsou super, ale ještě jsem nenarazil na ukázku testů z realného webového projektu. Na githubu jsou stovky knihoven s 100% test coverage ale běžný malý web o třech modelech a pěti presenterech kde by se člověk mohl se svými testy odpíchnout… Rád si nechám poradit.

Myslím, že na takovýhle jednoduchý web ani nejsou tak moc potřeba. Testy jsou klíčové u modelu a knihoven, které se používají na více místech a občas se aktualizují. V tu chvíli by bylo potřeba kompletně proklikat X projektů a stejně by mohla někde nějaká chyba zůstat skrytá. Pak je dobře mít aspoň otestované API těch modelů a knihoven.
Jinak taky jsem četl o testech spoustu článků, každá firma říká, že chce začít testovat, ale reálně jsem ještě testy nepsal, ani u firem s poměrně čistým kódem. Za úspěch považuji pokud má firma testera, který opravdu poctivě otestuje celou aplikaci a zkouší i neplatně vstupy. Občas se ale testování nechá na zákazníkovi – co reklamuje, to se opraví. Typicky to bývá na těch špagetových projektech s napnutým deadlinem…

Zax
Člen | 370
+
0
-

@encero Za mě největší problém je ten efekt sněhové koule, který je vyvolaný časovým tlakem.

Jasně – u hodně malých projektů, které se objeví, dva týdny žijou a pak chcípnou, je zbytečné to řešit, ale třeba projekt s medailonky (víš o čem mluvím ;-)) už je dost velký a s dostatečně dlouhou životností na to, aby se tomu člověk věnoval pořádně. Myslím, že moc dobře víš, jak moc naprd je tam cokoliv měnit a doufat, že se to nerozpadne. A jak už je to jednou ve stavu, že je to celé na ho*no, tak už se to prostě neřeší. Když jsem dostal za úkol přidat další medailonek, tak mě samozřejmě napadlo, že bych mohl do databáze přidat příznak, jestli se má zobrazovat medailonek, a medailonky udělat přes komponenty, ale když jsem si uvědomil, jak vypadá celý zbytek projektu, tak mi to prostě začlo být jedno a nablil jsem to tam prostě tak, jak to bylo všude. Nevěřím, že to někdo bude někdy refaktorovat…

Kdyby nemuselo být vše hned a začalo se třeba tím, že přepíšeš požadavky klienta do testů, tak mohlo být vše úplně jinak. Je to investice, výsledky začnou být vidět později, ale když ti pak pr*el kryjí testy (testy by měly pokrývat aspoň věci, které jsou pro chod projektu nezbytné), tak nemusíš po každé drobné úpravě web proklikávat a máš rázem víc času na vývoj a větší vnitřní klid.

Mně třeba ruply nervy včera když jsem na eshopu řešil odesílání mejlů. Mejly se neposílaly, žádný error, nic. Když ani po půl hodině nedorazily (mejly se klidně mohly posílat, ale prostě občas se stane, že přijdou později), tak jsem si otevřel zdrojáky a hledal a hledal, v čem by mohl být problém. Začal jsem si dumpovat v event subscriberu, abych zjistil, jestli se event volá. Nevolal se. Tak jsem si dumpoval v metodě, která event vyvolává, jestli se vůbec spouští – spouštěla se. Než jsem zjistil, že v komponentách jsou Kdyby\Events zabugované a je třeba si injektnout event manager a volat jej ručně, tak jsem u toho strávil celý večer a hledal problémy úplně někde jinde. Navíc po každém „testu“ jsem se musel vrátit zpět do eshopu a znovu naplnit košík, protože odeslání objednávky samozřejmě košík vyprázdní. Vědět, že u toho strávím večer, tak jsem se na to vys*al a místo toho ty testy napsal. Ve finále bych u toho strávil stejný čas, ale měl bych už do budoucna klid, věděl bych, že když tam budu dělat nějaké změny, které to rozbijou, tak na mě vyskočí červené FAILED i s popisem, co je špatně. Měl bych větší klid. Ale vzhledem k tomu, že eshop musí být v pondělí funkční, tak jsem se vydal cestou že to prostě namatlám a budu doufat, že to pojede. No, nejelo to a průser byl na světě… Chápeš, co se tím snažím říct?

ViPEr*CZ*
Člen | 817
+
+1
-

Jak to tak čtu, tak to mám taky občas obdobně. Někdy se holt prostě spěchá, refaktoring je náklad, kterej nechce nikdo hradit. A testy… testy snad udělaj uživatelé za běhu ne :-D

encero
Člen | 6
+
0
-

Zax napsal(a):

@encero Za mě největší problém je ten efekt sněhové koule, který je vyvolaný časovým tlakem.

Jasně – u hodně malých projektů, které se objeví, dva týdny žijou a pak chcípnou, je zbytečné to řešit, ale třeba projekt s medailonky (víš o čem mluvím ;-)…

Že zrovna zmiňuješ medailonky. Ty už tak týden bydlí hezky v teple v componentě. Byly nemilosrdně zrefaktorovány a zmizely wanted listu.

Mně třeba ruply nervy včera když jsem na eshopu řešil odesílání mejlů. Mejly se neposílaly, žádný error, nic. Když ani po půl hodině nedorazily (mejly se klidně mohly posílat, ale prostě občas se stane, že přijdou později)…

Stejný problém jsem řešil v pondělí. Měl ses zeptat bych tě nasměroval rovnou :).
btw: neřekl bych že jsou zabugované. Kdyby/Events se registrují jen na objektech v Containeru. A to componenty a Presentery běžně nejsou. Zvlášť když je tvoříš v továrně.

@FilipProcházka nejde eventy na komponentě nejak elegantně do registrovat. Například právě v továrničce? sorry za offtopic

@Šaman napsal
Co myslíš konkurenční doložkou? Běžně se podepisuje mlčenlivost o firemním know-how, procesech a obchodních tajemstvích. S tím není problém, jen pokud používám třeba svoje vlastní composer balíčky, tak to hlásím projekťákovi, aby bylo jasné, že tohle je moje a zůstává moje. Composer s tím pomáhá, protože takovýhle kód pak ani není součástí repozitáře projektu, takže je poměrně jasně vidět, co je firmy a co moje.

To s těmi composer balíčky je dobrý tip.
V předchozí práci jsem měl v konkurenční doložce, zákaz pracovat pro konkurenci a po ukončení smlouvy dva roky s bývalými a současnými zaměstnanci té firmy.

encero
Člen | 6
+
0
-

@Zax ještě k té sněhové kouli.

Za mě máš jako developer dvě možnosti. Dát od toho ruce pryč jak narhují @Quinix@TomášJablonický

Nebo se postavit osudu a odvést nejlepší možnou práci. Protože popravdě tu práci za tebe nikdo neudělá. Projekt je tvoje „dítě“ a pokud v kódu vytvoříš nějaký dluh tak je jen na tobě aby si ho splatit. A to že je nějaká featura zadrátovaná špagetama není rozhodnutí ani klienta ani projekťáka. Tím že na tebe někdo tlačí časem ti nepomáhá. Ale věřím tomu že speciálně v tomhle případě je časový tlak „odůvodněný“.

Zax
Člen | 370
+
0
-

encero napsal(a):

Že zrovna zmiňuješ medailonky. Ty už tak týden bydlí hezky v teple v componentě. Byly nemilosrdně zrefaktorovány a zmizely wanted listu.

Wau, dobře ty :-) Nicméně nejde přímo o medailonky, ale o pointu. Když je projekt naprasený, tak to prostě vede k tomu, že se spíš bude prasit dál. Naopak když je projekt od začátku pěkný a čistý, tak se člověk víc snaží a třeba pak ani není potřeba něco refaktorovat. Stojí to sice víc práce a času to udělat dobře hned ze začátku, ale vrátí se to když pak člověk nemusí (tolik) refaktorovat a neustále proklikávat. A o tom to je.

Viz eshop na kterém dělám. Zpočátku jsem si to dělal pěkné, košík funguje suprově, stromečkové kategorie a filtrování produktů jakbysmet, ale pak se objevil deadline, já začal panikařit a začal jsem bastlit, jen abych to měl hotový co nejrychleji a výsledkem je to, že to sice možná spustíme včas, ale já pak budu trávit (zbytečně) čas navíc tím, že budu muset předělat objednávání, zrefaktorovat počítání ceny, které je na několika místech přes copy&paste apod. a pak to samozřejmě budu muset znovu otestovat (proklikat) a opravovat všechno, co je rozbité. Spousta času v řiti úplně zbytečně, jen kvůli tomu, aby to bylo co nejdřív.

Stejný problém jsem řešil v pondělí. Měl ses zeptat bych tě nasměroval rovnou :).
btw: neřekl bych že jsou zabugované. Kdyby/Events se registrují jen na objektech v Containeru. A to componenty a Presentery běžně nejsou. Zvlášť když je tvoříš v továrně.

Zeptal bych se, ale řešil jsem to někdy ve tři v noci. Pak mi i došlo, že už jsem na to jednou narazil. Ale zase nejde o konkrétní případ, ale o pointu. Kdybych měl prostor si v klidu napsat testy, tak bych odhalil příčinu problému mnohem rychleji, nemusel bych po každé drobné úpravě v kódu procházet celým cyklem přidávání zboží do košíku a odesílání objednávky. Nemusel bych podezřívat zpožděné odesílání a čekat, jestli náhodou nedorazí, než se v tom začnu vrtat. Prostě bych jen v puttyně stisknul šipku nahoru, enter a měl během vteřiny jasno, jestli se mejl posílá nebo ne. A třeba bych se mezitím i dozvěděl o dalších možných problémech, které tam skrytě hnijí a nevím o nich.

Netvrdím, že musíme testovat vždy a vše. Ale na kritické části typu objednávání by testy byly dost vhodné. Ale bohužel se tlačí na to, aby člověk dělal na něčem, kde budou vidět výsledky, takže

Quinix
Člen | 108
+
+1
-

encero napsal(a):

Ad code review.

Code review je taky super věc a upřímně doufám, že se mi ji povede časem zavést. Na druhou stranu nedokážu říct zda jsem schopný dělat code review na projektu který neznám. Jen ve velmi málo případech se se @Zax potkáme na jednom projektu oba dva.

Za mě otázka do pléna, máte někdo zkušenost s děláním review na kódu o kterém nevíte vůbec nic?

Takovéhle rozdělování práce (na projektu dělá pořád jeden a ten samý člověk) jsem zažil v minulé práci a myslim si že je to špatně. Už jenom z důvodu nějakého zastoupení při dovolené/nemoci nebo když někdo firmu opustí. S projektem (i když je třeba malý) by dle mého mělo být seznámeno víc lidí i když se mu nevěnují všichni fulltime a k tomu pomůže i code review. I třeba kalkulace je lepší dělat ve víc lidech, protože pak bývají přesnější.

@encero Možnosti jsou spíš tři –

  1. nedělat nic, psát špagety, řešit technickej dluh po večerech a za pár let vyhořet
  2. snažit se to co mi vadí změnit
  3. „f**k this shit, I quit“

Za sebe považuju za nejlepší volbu 2, ale jen za předpokladu že to má podporu vedení nebo kolegů. Pokud ne, je lepší jít o dům dál.

Zax
Člen | 370
+
+1
-

encero napsal(a):

@Zax ještě k té sněhové kouli.

Za mě máš jako developer dvě možnosti. Dát od toho ruce pryč jak narhují @Quinix@TomášJablonický

Nebo se postavit osudu a odvést nejlepší možnou práci. Protože popravdě tu práci za tebe nikdo neudělá. Projekt je tvoje „dítě“ a pokud v kódu vytvoříš nějaký dluh tak je jen na tobě aby si ho splatit. A to že je nějaká featura zadrátovaná špagetama není rozhodnutí ani klienta ani projekťáka. Tím že na tebe někdo tlačí časem ti nepomáhá. Ale věřím tomu že speciálně v tomhle případě je časový tlak „odůvodněný“.

Ano, máš pravdu. Projekt je moje „dítě“, rád bych se mu věnoval dle svého nejlepšího vědomí a svědomí. Rozhodně nemám chuť řešit špagety a co všechno je kde zase rozbitý. Ale pod časovým tlakem, kdy je třeba během pěti dnů nasadit šablony, napsat objednávkový proces, dodělat synchronizaci z API, udělat administraci, celé to průběžně testovat a opravovat, co vše je blbě, a v neposlední řadě do toho ještě psát dvakrát denně reporty, se prostě nedělá nejlíp. To pak nejen že člověk nestíhá a bastlí, ale navíc nemá moc chuť do práce a akorát to víc svádí k prokrastinaci třeba psaním tady na fóru.

Když jsem pracoval na jednom webu pro jisté vysokoškolské učitelky, tak jsem měl deadline ve stylu „v říjnu bysme to chtěli spustit, ale když to nevyjde, tak se vůbec nic neděje“. V podstatě to bylo komplet v mé režii, nulový tlak. Práce mě velmi bavila (a to jsem to ani nedělal pro prachy!), že jsem se tomu věnoval skutečně naplno, klidně dvě noci po sobě jsem nespal a nadopovaný mixem kávy, big shocků a THC jsem makal jak o život. Jindy jsem si dal třeba týden oraz, abych si pořádně vyčistil hlavu a nechal pracovat jen své podvědomí (které věř tomu nebo ne, dokáže zázraky). A web jsme skutečně v říjnu stihli spustit a od té doby jsem tam až na pár bezvýznamných úprav nemusel dělat vůbec nic. Web běží, chybovost je až na občasné noticky prakticky nulová, prostě obě strany jsou maximálně spokojené. Za kód se navíc vůbec nestydím (byť jsem si už několikrát říkal, že bych to nejradši celé přepsal a udělal to ještě líp) a dokonce ho můžeš najít na Githubu – své zaxcms jsem psal právě pro tento web, který vznikl jen jako nová větev v gitu.

Přesně takhle si myslím, že vznikají nejlepší projekty – když to člověka baví, není pod tlakem, má dostatek času si třeba vyzkoušet nějaké nové technologie, u kterých zjistí, že mu najednou šetří spoustu času a práce, a když se člověk nemusí denně zpovídat, proč sakra ještě nemá hotovo.

Editoval Zax (12. 3. 2015 21:37)

encero
Člen | 6
+
0
-

@Quinix napsal(a):

Takovéhle rozdělování práce (na projektu dělá pořád jeden a ten samý člověk) jsem zažil v minulé práci a myslim si že je to špatně. Už jenom z důvodu nějakého zastoupení při dovolené/nemoci nebo když někdo firmu opustí. S projektem (i když je třeba malý) by dle mého mělo být seznámeno víc lidí i když se mu nevěnují všichni fulltime a k tomu pomůže i code review. I třeba kalkulace je lepší dělat ve víc lidech, protože pak bývají přesnější.

V principu s tebou souhlasím. U nás je to ale podle mě odůvodněné, samozřejmě do doby než budeme mít rozumný způsob code review (jestli někdy). Na projektu který se vyrábí dva až čtyři dny nemůžou pracovat dva programátoři. Aspoň si to neumím představit.

@Zax
Ok tohle přerůstá debatu kterou bych chtěl řešit veřejně.

Jan Endel
Člen | 1016
+
+6
-

@Zax @encero pánové, můžete už si to svoje špinavé prádlo proprat někde soukromě :-)?

Filip Procházka
Moderator | 4668
+
+16
-

Všechno je o penězích.

Představte si, že vedete ten projekt a máte určitou finanční sumu, se kterou můžete operovat. Čím rychleji projekt uděláte, tím víc peněz vám zbude, protože budete mít lepší výkon poměru cena/čas. Možná je vám to jako zaměstnancům úplně jedno, ale tomu kdo tu firmu vlastní to jedno není, protože v momentě kdy přepálíte rozpočet, tak firma přestane vydělávat a začne prodělávat. Tohle je strašně důležitý pochopit a tím nemyslím jenom přečíst si co jsem právě napsal, ale naplno pocítit tu ohromnou zodpovědnost.

Z toho taky plyne, že nemá absolutně žádný smysl psát testy a hrotit čistotu na webech typu prezentace franty kocourka zedníka. Tohle je ta „nejhorší práce“ (vyhraje se tam grafik s kodérem, ale né programátor) co můžete dělat. Ale je to jako když vás mistr nutí dělat otravné repetetivní úkoly, ale ve skutečnosti se tím připravujete na boj. Ve všech řemeslech to tak funguje. Je dobrý si tím projít.

Naopak má velkej smysl psát testy a psát čistě weby, o které se staráte dlouhodobě konstantě (startup, eshop, …), nebo se k nim budete vracet třeba za půl roku.

Další častej omyl je, že naprasit to je rychlejší než napsat to čistě. Naprasit to je rychlejší pouze pro člověka bez zkušeností, logicky. S praxí (tedy po dlouhé době a hromadě napsaného kódu a aplikací) se člověk časem naučí, že psát čistě umí i v časovém presu. Stačí se na začátku každého úkol na pár minut zamyslet a né rovnou začít hrnout kód. Stejně tak si zažijete nástroje a budete schopní velice rychle psát například testy. Na psaní testů je nejhorší napsat ten první test :) Pak už to jde samo.

Já teď dělám v rohlíku a za sebe můžu říct, že úplně všechny problémy se dají vyřešit dobrou komunikací. Prostě nesmíte zamlčovat žádné problémy a když po vás někdo chce něco v nereálném čase, tak říct že to nejde stihnout udělat.

Chce po vás někdo velkej úkol a chce ho brzo? Najděte kompromis. Třeba: „šéfe, bude to zítra odpoledne, ale bez administrace, můžeme to nasadit, otestovat a prozatím nastavovat přes adminer“. V momentě kdy po vás chce třeba čtvrtou, pátou změnu v nastavení je na čase říct „už to dělám moc často, napíšeme administraci ať to může dělat uživatelská podpora a já se můžu zabývat dalšíma features“. Prostě místo toho, abys to naprasil, tak problém rozsekat na menší části a splnit ho iterativně. Další možností kde jde udělat kompromis je, tak že v první verzi se nehledí na výkon a ten se řeší až se zvýšenou návštěvností.

Samozřejmě, občas něco ujede, protože se něco špatně vymyslí, nebo se nad tím přemýšlí málo, ale když se na to přijde, tak to prostě přepíšeme. Je to dlouhodobý projekt a je potřeba aby vydělával peníze. Není tedy možné aby kritické části byly naprasené, nebo neměly testy. Teďka poslední dva měsíce (do toho se dělala hromada dalších věcí, reálně to trvalo méně) se vyvíjelo api a máme na něj skoro tolik testů, jako na zbytek aplikace. Čím víc testů máte, tím je to snadnější napsat další :)

Stejně tak code reviews (děláme). To je to úplně nejlepší co můžete ve firmě zavést. Code review je velice efektivní způsob jak zaučit nového člověka, předat mu hromadu znalostí a zároveň zabránit většině bugů, nebo špatnému návrhu.


@encero https://github.com/…ts/issues/54 teoreticky se to „fixlo samo“ (=fixl to david v Nette/DI) s vydáním 2.3, ale nemám to ověřené :)

encero
Člen | 6
+
0
-

@JanEndel napsal(a):

@Zax @encero pánové, můžete už si to svoje špinavé prádlo proprat někde soukromě :-)?

Už mlčím :)


Bože @FilipProcházka mluvíš mi z duše. Alespoň ve většině případů.

Edit: věci které neděláme, určitě v budoucnu dělat budeme. (u projektů kde to dává smysl)


I když nejsme žádný rohlík nebo slevomat. Snažíme se odvádět co nejleší práci na všech frontách.
Máme svoje problémy, víme o nich a v rámci možností na nich pracujeme.

Osobně mi leží v žaludku lidi, kteří mají ručičky nahoře a křičí že svět je zlý a nedovolí jim dělat to či ono.

Editoval encero (13. 3. 2015 8:23)

akadlec
Člen | 1326
+
+1
-

prosím můžou ti co zde uvedli že najít práci programátora je otázkou několika minut uvést za jakého kraje/města jsou? Docela by mě to zajímalo. V Brně jsem v zimě prošel X firmama, v žádne to nevypadalo na super ukázkové kódy, všude se nějak prasilo, hackovalo, kašlalo na nějaké zásady atd. Nabídek bylo relativně hodně, ale velký problém aby mě firma zaplatila. V hodně případech sem se setkal s tím že firma prostě škudlí prachy a je pro ně lepší si vzít někoho čerstvého s minimem zkušenosti co to půjde odmakat za 15k i když na prase ale ušetří a finální výsledek je třeba ± na stejno. Ze svého okolí to vidím tak že buď má programátor kliku a dostane se tam kde je jako v ráji (jak pracovně tak platově) ale těchto míst je poskrovnu a nebo holt zbalí kufry a jde o stát dále, jako to udělalo z našeho ex týmu asi 5 lidí kteří skončili v delivery hero, goodgames, rocket internet apod…a teď si chrochtají.

Osobně sem zase zaparkoval v české firme, verzování svn, codereview sprosté slovo, testy to je něco co se dá na papír uchazeči a o tom jak vypadá 10 let starý špageti kod raději ani psát nebudu :(

Tharos
Člen | 1030
+
+2
-

Vimperk

arron
Člen | 464
+
+5
-

Zax napsal(a):

Vědět, že u toho strávím večer, tak jsem se na to vys*al a místo toho ty testy napsal. Ve finále bych u toho strávil stejný čas, ale měl bych už do budoucna klid, věděl bych, že když tam budu dělat nějaké změny, které to rozbijou, tak na mě vyskočí červené FAILED i s popisem, co je špatně. Měl bych větší klid.

Zax napsal(a):

Kdybych měl prostor si v klidu napsat testy, tak bych odhalil příčinu problému mnohem rychleji, nemusel bych po každé drobné úpravě v kódu procházet celým cyklem přidávání zboží do košíku a odesílání objednávky…

Hele všimnul sis u toho, že jsi ten čas na ty testy měl? A sám to vlastně píšeš. Ne vždycky je to uplně zjevný, ale ve skutečnosti ten čas, který bys věnoval psaní testů, tak vždycky věnuješ hlednání nějaké více čí méně banální chyby. Nebo mačkání F5 a procházení nějakého procesu. Nebo dumpování nějakých proměnných (btw. co třeba použít debugge, v tomhle případě by jsi ten proces prošel jednou a dost možná bys zjistil podstatně rychleji, kde ta chyba je).

Takhle jsi sice našel chybu, strávil jsi na tom večer, ale za měsíc, až se v tohlo části kódu zase nějaká chyba objeví, tak ten večer stráviš znovu…neudělal jsi vlastně žádnou přidanou hodnotu.

Jinak obecně k testům. Co takhle přirovnání ke stavařům. Dovedeš si představit, že Ti někdo řekne: „No víte, my jsme tam ten penetrační nátěr nedělali, protože by to trvalo dlouho a nebylo by to vidět.“?? Nebo: „No, my jsme tu podlanu nesrovnávali, ona je sice trochu křivá, ale trvalo by to moc dlouho a zase tak moc vidět to neni.“?? Takovýho stavaře bys okamžitě vyhodil!! Jasně, existují i takoví, kteří tu práci dělají blbě a stejně mají práci. Ale najímají si je „hloupí“ lidé, kteří pak pláčou.

A stejně tak programátoři. Takhle se to prostě dělá a hotovo, o tom prostě není diskuze, jestli se píšou testy nebo nepíšou!! Patří to k tomuhle řemeslu a každý kdo to nedělá, tak prostě není dost dobrý řemeslník. Tečka. A řeči o tom, že něco je tak jednoduchý, že na to nejsou potřeba testy taky neobstojí. Jestliže je to tak jednoduchý, tak napsat na to test je taky tak jednoduchý, že je mi v podstatě trapný ho nenapsat, protože to trvá třeba 5 minut (a někdy třeba jenom minutu :-)).

A každý pravidlo má svoje výjimky. Třeba když budu nově natírat biatlonový terč, tak ho nebudu natírat základovou barvou, protože za hodinu při závodě už to bude fakt uplně jedno :-)

Filip Procházka
Moderator | 4668
+
+1
-

@akadlec tak buď ten co to změní :) Jen málo firem zakládají zkušení programátoři, aby od úplného začátku se řešila udržovatelnost a testy.

Když jsem nastoupil do DJ, tak neměli ani jeden test, celý to bylo brutálně naprasený a code review neexistovaly. První prototyp se totiž udělal za nějaký 2–3 měsíce. Což je úplně šileně rychlé.

Robin Martinez
Člen | 89
+
+1
-

Huh, tak jsem rád, že to takhle v práci nemáme sami. Nic se nestíhá, ve 3 lidech děláme najednou 5 projektů. Špagety všude. OOP se moc nepoužívá – respektive v každým controlleru jsou ty samý funkce.

Filip má nicméně pravdu, hodně věcí je o komunikaci, která u nás taky nějak extra nefuguje. Navíc mi příjde, že některý firmy fungujou stylem, kdy na designu záleží naprosto brutálně, ale z hlediska PHP na to už nezbyde čas a stačí to splácat „aby to hlavně fungovalo“.

Čímdál víc pracuju jako programátor, tim víc si idealizuju svou budoucí práci:

  • Dobrý kolektiv lidí, kteří se vyznají v oboru
  • Dobrá komunikace
  • Perspektiva do budoucna – chci se učit něco novýho, ne plácat weby jak na běžícím pásu
  • Brát každou část projektu (design, frontend, backend) podobnou vahou
  • hodně dalších

Na závěr: všechno je o penězích.

arron
Člen | 464
+
+7
-

@RobinMartinez Není to jenom o penězích. Je to o mindsetu lidí, kteří pracují s klienty.

Znovu použiju přirovnání se stavebnictvím. Když dělám dům, tak všichni tak nějak tuší, že vykopat základy, vyrobit základovou destu, udělat hrubou stavbu a střechu prostě chvíli trvá. A nikdo si nedovolí říct v říjnu, že chce teď začít stavět a do zimy mít zastřešeno. Ne, že by to nešlo…když se tam nažene 200 lidí a použijí se speciální materiály, aby základní deska nemusela „zrát“, tak se to za ten cca měsíc fakt může stihnout, ale bude to o dost dražší, než když se začne správně stavět už třeba v dubnu, že jo. Stejně tak je to se stavbou a plány k ní. Taky nejdou udělat za dva dny, ale nějakou dobu to trvá, a všichni vědí, že se musí začít výrazně dřív před tím, než potřebuju začít stavět.

Pracoval jsem velmi dlouho v online reklamce. A byl neskutečný problém přesvědčit lidi z obchodu, že by měli s klienty ideálně už v září začít řešich vánoční akce. Takže klasický průběh byl ten, že po mikuláši si všichni najednou vzpomněli, že jsou vlastně Vánoce a že chtějí udělat nějakou akci. A nejvíc mě pak dorazilo vedení, které se k tomu stavělo tak, že „jste přece skvěle placení odborníci, tak tohle prostě musíte zvládnout, jinak si nezasloužíte plat“.

Zrovna tak platí, že když je hotová hrubá stavba, tak si nemůžu jenom tak vymyslet, že někdterý pokoj bude jina velký nebo tam nebude vůbec nebo tam bude nějaký navíc. A tady nastává při programování problém, protože ono přidávání a upravování „pokojů“ jde fyzicky udělat. A všichni na to hřeší a zpravidla dopředu nevědí, co chtějí. A já bych čekal od „obchodníků“ že toho klienta povedou k tomu, že takhle to nefunguje (stejně jako projektant na stavbě) a že by měli vstupovat do „stavby“ s jasným záměrem a představou. Jenže toho klienta v drtivé většině případů takhle nikdo nevede a ta odpovědnost padá na programátory, kteří jsou považování za neschopné, protože přece „nejsou schopní udělat jednu malou změnu, která jim nic nezabere“.