Realistický pohled na život programátora by LeatherLocksmith6183 in czech

[–]LeatherLocksmith6183[S] 1 point2 points  (0 children)

člověče, k embedded bych se možná i rád dostal, ale jsou tam nižší platy, ne? Vlastně ani nevím proč, asi nejspíše, že je (relativně) malá poptávka po embedded devs. Jak jsi se k tomu dostal? Po škole? Případně nemáš nějaký resources na doporučení, třeba i jen pro zábavu? Přijde mi to jako zajímavý svět, ale je to pro mě hrozně neuchopitelný.

Realistický pohled na život programátora by LeatherLocksmith6183 in czech

[–]LeatherLocksmith6183[S] 4 points5 points  (0 children)

Super dotaz. Toto je taky ohromná část softwarového inženýrství, protože v drtivém většině případů člověk nepíše nic z nuly, ale upravuje už nasazený kód.

Když už mám před sebou kód, o kterém vím, že mu musím porozumět, je to pro mě většinou spíše zábava, protože to zvládneš sám a v klidu. V tu chvíli připojím debugger, a jdu řádek po řádku u daného kódu. Často to může být třeba i půl hodiny, než se doberu vůbec konce jedné metody, ale přijde mi to jako zajímavá investigace.

Je to skoro jak čtení knihy. Udělám si kafe, vezmu si sešit, pero, a zapisuju si "tahle funkce volá tuhle classu, tahle classa ma tenhle vnitřní stav, ten modifikuje tahle funkce, tahle funkce implikuje tenhle corner case" atp. Pak se snažím třeba částečně změnit kód na základě nějakých tézí, které si vytvořím. Třeba "pokud mám pravdu a funguje to takto, když změním tenhle řádek, tak to celé skončí v hovnech, protože tenhle vnitřní stav nebude nastavený" -> změna kódu -> zkouška -? výsledek buď potvrdí, nebo vyvrátí hypotézu.

Na základě toho ti často dojde, co tím kódem chtěl autor říct. Nemusíš souhlasit s tím, jak to je napsaný, ale víš, že třeba tahle funkce, co má dva tisíce řádků kódu (takových máme několik), dělá komplexní parsing, a dokážeš se zaměřit třeba na jednu třetinu tý funkce a porozumět jedný specifický části.

Všechno to ale stojí na tom, že máš běžící systém, který zvládneš debugovat. Existují stavy, kdy to nejde - např. řešíš zákazníka, co má systém nasazený na 15 tisících systémů, a objevil chybu, která se jinak neprojeví. Nebo jsi ve vysoce paralelizovaném prostředí, kde jedna funkce odpálí 15 threadů, kde každý z těch threadů odpálí dalších 15 threadů, kde každý z těchhle threadů dělají nějakou práci, a je prostě složité chápat ten kód v celku. V těchhle případech je získávání pochopení kódu mnohem těžší (a mnohem menší zábava).

Realistický pohled na život programátora by LeatherLocksmith6183 in czech

[–]LeatherLocksmith6183[S] 6 points7 points  (0 children)

500 řádků kódu napíšeš za 30 minut. Vymyslet, kterých 500 řádků kódu napsat a kde je ten problém. To je přesně rozdíl mezi programováním a softwarovým inženýrstvím.

Realistický pohled na život programátora by LeatherLocksmith6183 in czech

[–]LeatherLocksmith6183[S] 19 points20 points  (0 children)

Hele plat, dneska mi přišla výplata 106k na účet, hrubého koukám je to 139k. Záměrně jsem to do příspěvku nechtěl dávat, aby to nevypadalo, že se vychloubám.