{"id":326,"date":"2019-10-22T20:46:10","date_gmt":"2019-10-22T20:46:10","guid":{"rendered":"https:\/\/kalkus.dev\/?p=326"},"modified":"2019-10-31T12:18:00","modified_gmt":"2019-10-31T12:18:00","slug":"zdania-ktore-uslyszysz-od-zlego-programisty","status":"publish","type":"post","link":"https:\/\/kalkus.dev\/blog\/2019\/10\/22\/zdania-ktore-uslyszysz-od-zlego-programisty\/","title":{"rendered":"Zdania, kt\u00f3re us\u0142yszysz od z\u0142ego programisty"},"content":{"rendered":"\n<p><strong><em>1. Mo\u017cliwe, \u017ce przesadzi\u0142em z wycen\u0105<\/em><\/strong><\/p>\n\n\n\n<p>Wycofanie si\u0119 programisty z wyceny, kt\u00f3r\u0105 zrobi\u0142 mo\u017ce oznacza\u0107 kilka rzeczy, a ka\u017cda z nich jest z\u0142a&#8230; Po pierwsze mo\u017cliwe, \u017ce programista jest leniwy i j\u0105 zawy\u017cy\u0142. Druga opcja, to niestaranne jej przygotowanie. Trzecia wreszcie to, \u017ce programi\u015bcie takiemu brak odwagi cywilnej i woli sk\u0142ama\u0107, ni\u017c powiedzie\u0107 gorzk\u0105 prawd\u0119. <\/p>\n\n\n\n<p><strong><em>2. Lepiej tego nie ruszajmy <\/em><\/strong><\/p>\n\n\n\n<p>Powy\u017csze zdanie sygnalizuje przede wszystkim z\u0142y stan projektu. Jaka\u015b jego cz\u0119\u015b\u0107 jest tak krucha, \u017ce strach j\u0105 zmienia\u0107. Jednak jest to r\u00f3wnie\u017c symptom kiepskiej jako\u015bci programisty, bo osoba do\u015bwiadczona powiedzia\u0142aby raczej \u2013 <em>modyfikacja tego fragmentu projektu jest ryzykowna \u2013 <\/em>po czym spr\u00f3bowa\u0142a sytuacj\u0119 naprawi\u0107. <\/p>\n\n\n\n<p><em><strong>3. To <\/strong><\/em><strong><em>10 minut roboty<\/em><\/strong> <\/p>\n\n\n\n<p>Niewinne, ale jednak \u0142garstwo. Nawet niewielkie zmiany w kodzie, przy z\u0142o\u017cono\u015bci technologii i narz\u0119dzi, jakich u\u017cywamy w rozwoju oprogramowania nie zajmuj\u0105 10 minut. Je\u015bli programista obiecuje takie dziesi\u0119ciominutowe rozwi\u0105zania, to najpewniej sk\u0142ada r\u00f3wnie\u017c inne obiecanki-cacanki. <\/p>\n\n\n\n<p><strong><em>4. Czysty kod to kwestia gustu<\/em><\/strong> <\/p>\n\n\n\n<p>Znany z innych obszar\u00f3w \u017cycia relatywizm \u2013 nie ma brzydoty, bo komu\u015b co\u015b si\u0119 podoba. C\u00f3\u017c \u2013 czysty kod jest jak czyste miasto. Kiedy widzimy wybite szyby i opadaj\u0105ce tynki; kiedy widzimy be\u0142kotliwe nazwy zmiennych i rozwlek\u0142e metody \u2013 wiemy, \u017ce jeste\u015bmy w mie\u015bcie, wiemy, \u017ce jeste\u015bmy w kodzie brudnym, upad\u0142ym, gnij\u0105cym. Nie ma tu miejsca na relatywizm. I nie mo\u017cna broni\u0107 swojego niechlujstwa relatywizowaniem. <\/p>\n\n\n\n<p><strong><em>5. To tak by\u0142o od zawsze <\/em><\/strong><\/p>\n\n\n\n<p>Konserwatyzm jest mo\u017ce dobry w pewnych dziedzinach \u017cycia, ale na pewno nie w rozwoju oprogramowania. Nasza bran\u017ca premiuje dynamiczne zmiany i je\u015bli kto\u015b trzyma si\u0119 starych rozwi\u0105za\u0144 bez rzeczowego uzasadnienia, a tylko na podstawie tego, \u017ce s\u0105 stare \u2013 nie jest dobrym reprezentantem naszego zawodu.<\/p>\n\n\n\n<p><strong><em>6. Jest ba\u0142agan, ale nie mamy czasu na refaktor <\/em><\/strong><\/p>\n\n\n\n<p>O ile s\u0105 zawody i bran\u017ce wymagaj\u0105ce dzia\u0142ania tu i teraz, jak na przyk\u0142ad bycie stra\u017cakiem, o tyle \u2013 za wyj\u0105tkiem &#8220;gaszenia po\u017car\u00f3w&#8221; na produkcji \u2013 rozw\u00f3j oprogramowania nie jest t\u0105 bran\u017c\u0105, a programowanie tym zawodem. Je\u015bli jest ba\u0142agan, to znaczy, \u017ce struktura kodu, projektu przeszkadza nam w pracy. Je\u015bli programista doprowadza do takiego stanu, to ju\u017c jest sygna\u0142 alarmowy. Je\u015bli w dodatku tego stanu nie umie zako\u0144czy\u0107 \u2013 rozmawiaj\u0105c z biznesem, wygospodarowuj\u0105c czas, po\u015bwi\u0119caj\u0105c wysi\u0142ek na uporz\u0105dkowanie chaosu \u2013 to ju\u017c oznacza, \u017ce jest po prostu ba\u0142aganiarzem szukaj\u0105cym wym\u00f3wek, a nie efektywnym profesjonalist\u0105. <\/p>\n\n\n\n<p><strong><em>7. Nie by\u0142o czasu na testy<\/em><\/strong> <\/p>\n\n\n\n<p>Je\u015bli nie by\u0142o czasu na testy, to po co by\u0142 czas na pisanie kodu? Kod bez test\u00f3w jest gorszy ni\u017c brak kodu w og\u00f3le, bo dzia\u0142anie szkodliwe jest gorsze od zaniechania dzia\u0142ania. Co wi\u0119cej \u2013 je\u015bli nie by\u0142o czasu na testy, to najwidoczniej nie zosta\u0142 on przez programist\u0119 uwzgl\u0119dniony na etapie planowania albo te\u017c pojawi\u0142y si\u0119 problemy, kt\u00f3re podczas implementacji przemilcza\u0142, podejmuj\u0105c bez wiedzy biznesu decyzj\u0119 o obni\u017ceniu jako\u015bci. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>1. Mo\u017cliwe, \u017ce przesadzi\u0142em z wycen\u0105 Wycofanie si\u0119 programisty z wyceny, kt\u00f3r\u0105 zrobi\u0142 mo\u017ce oznacza\u0107 kilka rzeczy, a ka\u017cda z nich jest z\u0142a&#8230; Po pierwsze mo\u017cliwe, \u017ce programista jest leniwy i j\u0105 zawy\u017cy\u0142. Druga opcja, to niestaranne jej przygotowanie. Trzecia wreszcie to, \u017ce programi\u015bcie takiemu brak odwagi cywilnej i woli sk\u0142ama\u0107, ni\u017c powiedzie\u0107 gorzk\u0105 prawd\u0119. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[7],"tags":[],"_links":{"self":[{"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/posts\/326"}],"collection":[{"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/comments?post=326"}],"version-history":[{"count":4,"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/posts\/326\/revisions"}],"predecessor-version":[{"id":337,"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/posts\/326\/revisions\/337"}],"wp:attachment":[{"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/media?parent=326"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/categories?post=326"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/tags?post=326"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}