Bezsens pisania kodu dla korporacji

Bezsens pisania kodu dla korporacji
MO
  • Rejestracja:ponad 18 lat
  • Ostatnio:dzień
6

najzabawniejsze w takich tematach jest to że jakość, czysty kod - pojawia się wujek Bob i nikt więcej.

Kiedyś (tak 1-2 lata wstecz) na rozmowie specjalnie nie mówiłem o praktykach Boba udając że nie znam, ale wiele razy powoływałem się na Kenta Becka, Martina Fowlera, Goetza.
W efekcie zostałem sklasyfikowany jako coś pomiędzy juniorem a midem, podczas gdy goście sprawiali czasem wrażenie że mówię w innym języku.

LukeJL
Goetza nie znam. Dobrze gada? O Javie chyba głównie?
MO
tak, to architect a oraclu, ja go znam przede wszystkim ze wielowątkowości.
SN
dlatego powinno się nie mamić młodych devów ideałami i nie tracić czasu na naukę jakiegoś czystego kodu, lepiej pisać quick and dirty i tak zostawiać.
Uśpiony wiosenny but
Dirty coding - wirujący seks w kodzie
elwis
  • Rejestracja:ponad 18 lat
  • Ostatnio:2 dni
4

Zwykle jest taki sens, że za to płacą. Ktoś chce za to płacić, więc pewnie mu potrzebne? Właściwie to nie zawsze, bo kapitalizm żywi się tworzeniem sztucznych potrzeb byle tylko sprzedać. Tylko kim ja jestem, żeby to oceniać? Tak więc staram się tego nie robić tylko pracować możliwie dobrze i możliwie szybko bez wypruwania sobie flaków. Żeby było zabawniej, dzięki temu idzie szybciej, bo nie pracuję w strachu, że nie ogarniam tego co robię (a może to lata praktyki w pracy i poza nią). Jest w tym jakiś sens, że jak sam nie umiesz założyć przedsiębiorstwa i stworzyć produkt/usługę to idziesz do pracy i oni ci mówią co masz robić, bo to oni wiedzą jak to sprzedać i chcą ponosić koszty mentalne prowadzenia biznesu, których mi może się nie chce na tą chwilę ponosić, a może jeszcze nie umiem.

Co się tyczy story pointów, to to już jest zwykła niekompetencja, że ludzie robią agile nie rozumiejąc o co w nim chodzi. Tak się ludzie na ogół uczą, że małpują póki nie załapią co jak i po co. Nie zawrócisz kijem Wisły.


edytowany 2x, ostatnio: elwis
CZ
Kapitalizm nie tworzy sztucznych potrzeb, no chyba, że tylko i wyłącznie z twojego punktu widzenia
elwis
To raczej kwestia nazewnictwa jeśli już. Kapitalizm skłania biznes, żeby przekonywał ludzi, że potrzebują nowe X (komputer, samochód, telefon, cokolwiek), choć stary był zupelnie w porządku. Nazywaj to jak chcesz, ale wiadomo, że tak jest.
W0
  • Rejestracja:ponad 12 lat
  • Ostatnio:około 3 godziny
  • Postów:3521
4
snakeomeister napisał(a):

Programiści w szczególności nie powinni pracować w zespołach, gdzie biznes czymkolwiek zarządza jak np. wybór kolejnej funkcji która ma zostać zaimplementowana.

Biznes powinien móc co najwyżej napisać sobie listę funkcji, które chce mieć w systemie a od IT dostać odpowiedź, że dostanie kiedy dostanie.

Z cyklu "cytaty wielkich ludzi" :D
Kto płaci ten wymaga. Wyobraź sobie, że wsiadasz do taksówki w Warszawie i mówisz "pod Sejm", a kierowca zaczyna jechać do Łodzi i mówi ci, że na miejscu docelowym będziesz, kiedy będziesz.

Twoje narzekanie to narzekanie takiego taksówkarza, który chciałby jeździć po mieście i pokazywać fajne miejsca, a ci niewdzięczni klienci patrzą tylko na kasę, czas i czy w taksówce nie śmierdzi.

Zobacz pozostałe 3 komentarze
W0
No akurat jazda na przełaj to jest łamanie przepisów, oczywiście od tej reguły są wyjątki. Natomiast kwestia jest taka, że programista jest tutaj jedynie kierowcą, ale nie właścicielem pojazdu - jeśli właściciel zostanie poinformowany, że samochód mu się rozpadnie po takiej jeździe to już nie jest kierowcy wina - jeśli tylko poinformował o tym wcześniej.
Miang
pojazdem jest zespół, zespół może się rozpaść
W0
Dla mnie pojazdem jest tutaj produkt, nie zespół. To, że denerwujący klienci mogą sprawić, że ludzie będą odchodzić to jedna sprawa, ale to, że klient powinien mówić czego chce to jest dla mnie oczywista oczywistość. Jasne, można doradzać i ostrzegać, ale finalna decyzja należy do klienta.
SN
Dzięki, że uznałeś mnie za wielkiego człowieka :D :D :D
SN
Chodzi mi o podejście, że klient nie wie czego chce dopóki tego nie dostanie, tak więc biznes powinien siedzieć cicho i czekać aż jaśnie programiści stworzą program, który rozwiąże ich problem :D
HM
  • Rejestracja:ponad 3 lata
  • Ostatnio:około godziny
  • Postów:28
2

Wiecie co jest zabawne? Kolega w zasadzie opisał srum. PO ustawia priorytety w backlogu, zespół deweloperski sugerując się nimi dobiera rzeczy do sprintu. Robią to sami. Właśnie idea scruma to przerzysztoś pracy developerów oraz danie im bardzo dużej swobody w organizacji pracy w myśl tego, że oni wiedzą lepiej kiedy coś zrobią i jak.

MI
pracy developerów oraz danie im bardzo dużej swobody w organizacji pracy w myśl tego, że oni wiedzą lepiej kiedy coś zrobią i jak. - zwykle to wygląda tak, że sprint ustawia jakiś teamlead pod dyktando tych priorytetów. W scrumie mnie się jedynie pytali o estymaty i czy sprint jest realny do zrobienia
SN
Chciałem uniknąć tutaj nawiązania do SCRUMA Agile itp. Pięknie to napisałeś, ale tak to wygląda tylko teoria. Jeżeli dla Ciebie bardzo duża swoboda to dobranie rzeczy do 2-3 tygodniowego sprintu, na podstawie priorytetów w backlogu ustanowionych przez PO to stanowi to ciekawe rozumienie swobody. Ok, daję ci bardzo dużą swobodę w organizacji pracy, możesz robić zadanie 1,2,3,4 albo 5, ale ma być gotowe za 2 tygodnie.
Miang
i jak to dopiero jest groźne jak junior decyduje jak coś zrobi, za to zamiast technicznej osoby ustalającej co trzeba zrobić najpierw z technicznego punktu widzenia decyduje jakiś przydupas szefa czyli PO
HM
Zdaję sobie sprawę, że to jest piękne, modelowe działanie. Po prostu ubawiło mnie, że mało kto zwrócił na to uwagę... To właśnie ta piękna teoria była siłą którą scrum sprzedawano kiedyś nawet programistą :) "Patrzcie jaka super metodologia, będziecie sami podejmować decyzje techniczne, tu jest kupka rzeczy do zrobienia, a tu jeden gość kontaktowy dla was, PO, aby nikt inny z biznesu wam nie przeszkadzał."
marian pazdzioch
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 21 godzin
  • Postów:708
7
Riddle napisał(a):

większość "dobrej nauki" płynie z eksperymentów, i próbowania nowych rzeczy - coś, na co nie można sobie pozwolić w pracy. Z tym myślę nikt nie będzie polemizował.

Ja będę. Można i trzeba eksperymentować w czasie pracy i za pieniądze płatnika. Tylko trzeba to umieć przemycić.

Miang
  • Rejestracja:prawie 7 lat
  • Ostatnio:2 minuty
  • Postów:1659
2

Fajnie a jeśli kiepski kod to wcale nie wynik pisania na szybko przez niedoświadczonych programistów, ale właśnie wrzucania durnych pomysłów przez kierownictwo średniego szczebla (czyli takie które co prawda dostaje premie ale ma tak naprawdę wywalone na długoterminowe powodzenie całej firmy programistycznej).
Manago se wpisze do cv że projekt w jakimś nowym frameworku nadzorował, a to że trzeba było po roku go przepisać w czymś bardziej stabilnym to go nie obchodzi. Firma wydała mnóstwo kasy na poprawę nie tyle długu technicznego co błędów samego projektu i założeń, tez go nie obchodzi, swoją premię dostał. Programiści sfrustrowani kłótniami z idiotą odeszli, zostali sami juniorzy - no i spoko, będą bardziej się słuchać pana kierownika ;)


dzisiaj programiści uwielbiają przepisywać kod z jednego języka do drugiego, tylko po to by z projektem nadal stać w miejscu ale na nowej technologii
MI
No i tak się zmienia te firmy
tefu
  • Rejestracja:prawie 2 lata
  • Ostatnio:2 dni
  • Postów:463
17
snakeomeister napisał(a):

Programiści, ale pewnie nie 1-2 tylko kilkudziesięciu średnio słabych.

Zadziwiające jest to, że prawie każdy tu piszący uważa się za tego dobrego programistę xD

Ja tam wiem, że jestem c****, może nie najtaniej, ale za to jako tako :-D

Zobacz pozostały 1 komentarz
tefu
No ale jęczysz jaki to biznes zły i że zatrudnia się chuowych programistów. Wszyscy jesteśmy chuowi. Tylko niektórzy jeszcze sobie tego nie uświadomili. Zadaniem programisty jest ukręcić bat z gówna i za to Ci płacą więcej niż w innych branżach. Jak będzie dług technologiczny to będzie. Ty masz płacone i masz robić tak by to jako tako działało.
SN
Tak, rozumiem te realia, wiem że tak jest jak piszesz, ale chciałbym żeby tak nie było. Jak np. budujesz sobie dom to chcesz żeby był zbudowany dobrze, wybierasz sobie materiały do wykończenia itp. To trochę tak jakbyś powiedział chcę mieć dom byle by stał, a może być nawet ulepiony z guana nietoperza. Co z tego, że będzie w nim brzydko pachnieć, jak stoi i mogę się w nim schronić przed deszczem.
tefu
Idealista ;-)
JA
tak samo z kierowcami
tefu
@Jaime: dokładnie tak.
marian pazdzioch
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 21 godzin
  • Postów:708
12
Miang napisał(a):

Fajnie a jeśli kiepski kod to wcale nie wynik pisania na szybko przez niedoświadczonych programistów

Jest dokładnie tak, każdy mówi że szybko szybko pisał, ale jak mu dać więcej czasu to się okaże że jednak lepiej nie umie.

SN
  • Rejestracja:ponad 18 lat
  • Ostatnio:2 miesiące
0
marian pazdzioch napisał(a):
Miang napisał(a):

Fajnie a jeśli kiepski kod to wcale nie wynik pisania na szybko przez niedoświadczonych programistów

Jest dokładnie tak, każdy mówi że szybko szybko pisał, ale jak mu dać więcej czasu to się okaże że jednak lepiej nie umie.

W sumie to racja, ale niekiedy też zależy od tego jakiego typu to jest zmiana.

  1. Mała zmiana np. dołożenie czegoś w ramach istniejącego kodu np. jakiś nieskomplikowany warunek do if
  2. Jakaś trochę większa zmiana, którą można zaprogramować w ramach nowej metody/klasy lub kilku klas, coś trochę większego

W pierwszej sytuacji może być tak, że lepiej tego nie ruszać po prostu dołożyć i zagmatwać jeszcze bardziej kod, ale oczywiście można napisać testy i zrobić refaktor.
Jeżeli na projekcie jest ciśnienie to wygra opcja 1, jeżeli nie to opcja 2. Ktoś może też stwierdzić, że pomimo ciśnienia wygra opcja 1, ale imho tutaj jeszcze nie można stwierdzić czy ktoś potrafi lepiej czy nie.

W drugiej sytuacji definitywnie już można stwierdzić czy ktoś potrafi lepiej czy nie.

Miang
tak, i ten co powie że to pierwsze jest po prostu najlepszym rozwiązaniem , zmierzy się z hejtem fanów refaktUringu
Riddle
Administrator
  • Rejestracja:ponad 14 lat
  • Ostatnio:około 3 godziny
  • Lokalizacja:Laska, z Polski
  • Postów:10037
6
bagietMajster napisał(a):

Bo IT jest dla biznesu a nie na odwrót, mamy dostarczyć wartośc która można sprzedać a nie przeprowadzać heksagonalną trzepaninę nad wzorcami i jakością kodu.

To jest oczywiście prawda. Wartość, którą można sprzedać jest bezpośrednim priorytetem. Należy do niej dążyć, za wszelką cenę. Szkoda, że większość programistów o tym zapomina.

Tylko niestety, programy ciągle wymagają zmian - wprowadzanie tych zmian kosztuje. Im gorsza jakość kodu, tym te zmiany są droższe. W pewnym momencie mogą się zbliżać do wartości produktu. Więc łatwość i niski koszt zmian są pośrednim priorytetem. Szkoda, że większość biznesów z kolei o tym zapomina.

edytowany 2x, ostatnio: Riddle
bagietMajster
  • Rejestracja:ponad rok
  • Ostatnio:około 8 godzin
  • Postów:434
2

@Riddle: Moim zdaniem główny problem tworzenia oprogramowania jest taki że kodu nie widać a jedynie jego efekty. Gdybyśmy produkowali jakieś lodówki i biznes mógł zobaczyć że "dobra zrobili to szybciej i mamy to co chcieliśmy ale tutaj odstaje rurka a z tyłu cieknie woda" to myślę że w dużej części (bo nie wszędzie) zrodziłby się wnioski że aspekt techniczny jest równie ważny. Tymczasem większość biznesów nie obchodzi jak tylko kiedy coś dodacie. Dodatkowym czynnikiem wpływającym na koszt zmian jest długość życia oprogramowania, jeśli oprogramowanie żyje np. 5 lat to przez to 5 lat z początkowych założeń projektu mało co zostaje i często program tworzony do mieszania herbaty zmienił swoje początkowe zastosowanie i teraz miesza pomidorową z ryżem.


Praktyczna implementacja TDD zaczyna się od ciebie.
Mjuzik
Zły przykład, bo na pierwszy rzut oka nie widzisz w lodówce jakości użytych materiałów, która może się popsuć zaraz po okresie gwarancji. Przecież na pierwszy rzut oka strona PKP też wygląda ładnie, a pod spodem słynny już kod "isPies"
Riddle
Administrator
  • Rejestracja:ponad 14 lat
  • Ostatnio:około 3 godziny
  • Lokalizacja:Laska, z Polski
  • Postów:10037
6

Masz program, z którego korzysta 1000 osób dziennie, i który zarabia 200tys. złotych miesięcznie.

Chcesz dodać w nim funkcjonalność linków polecających. Przychodzisz do programistów, i oni estymują wprowadzenie tego feature'a na miesiąc, ale ostatecznie zajmuje im 3 miesiące żeby go wprowadzić. Feature którego wprowadzenie powinno zając dzień, zajął 3 miesiące. Programiści pracujący nad tym muszą dostać wypłaty za te 3 miesiące wprowadzania tego. Jak myślisz, z czego wynika taka powolność we wprowadzeniu tej zmiany? No właśnie z niskiej jakości kodu. Dobry programista zaprojektuje odpowiednią architekturę i czysty kod, i przez to że zrobi taką "trzepaninę" jak to ująłeś, wytworzy system w którym dodanie systemu referali zajmie jeden dzień zamiast 3 miesiące.

Dbanie o jakość kodu i architekturę, bezpośrednio przekłada się na koszt zmian.

bagietMajster napisał(a):

@Riddle: Moim zdaniem główny problem tworzenia oprogramowania jest taki że kodu nie widać a jedynie jego efekty. Gdybyśmy produkowali jakieś lodówki i biznes mógł zobaczyć że "dobra zrobili to szybciej i mamy to co chcieliśmy ale tutaj odstaje rurka a z tyłu cieknie woda" to myślę że w dużej części (bo nie wszędzie) zrodziłby się wnioski że aspekt techniczny jest równie ważny. Tymczasem większość biznesów nie obchodzi jak tylko kiedy coś dodacie.

Programowanie nie jest tutaj odosobnione. Wiele branż ma podobne cechy - że klienta nie obchodzi jak, tylko kiedy. Designerzy, prawnicy, budowlańcy. Jak zamawiam firmę budowlaną, to nie obchodzi mnie jakich narzędzi użyją, tylko kiedy coś dostarczą - interesuje mnie efekt końcowy. Jak zamawiam taksówkę, to nie obchodzi mnie czy kierowca ma manuala czy automat, ważne czy się spóźnię na umówione miejsce. Jak idę do dentysty, to nie obchodzi mnie technika leczenia, tylko koszt i to czy będę zdrowy.

Różnica pomiędzy budowlańcami a programistami jest taka, że przy programowaniu bardzo łatwo jest zaciągnąć dług techniczny. Tzn. teraz dostarczyć coś w jeden dzień zamiast dwa, ale za to za jakiś czas feature który powinien zając 1 dzień zajmie 3 miesiące.

bagietMajster napisał(a):

Dodatkowym czynnikiem wpływającym na koszt zmian jest długość życia oprogramowania, jeśli oprogramowanie żyje np. 5 lat to przez to 5 lat z początkowych założeń projektu mało co zostaje i często program tworzony do mieszania herbaty zmienił swoje początkowe zastosowanie i teraz miesza pomidorową z ryżem.

To nie jest do końca prawda. Widziałem projekty które trwały po 10 lat i dłużej, i ich jakość była bardzo dobra. Wprowadzanie zmian było szybkie.

bagietMajster napisał(a):

Bo IT jest dla biznesu a nie na odwrót, mamy dostarczyć wartośc która można sprzedać a nie przeprowadzać heksagonalną trzepaninę nad wzorcami i jakością kodu.

Poza tym, gdyby tak było, i dało się rozwijać projekt przez kilka lat bez wzorców, z niską jakością, to wszystkie firmy by tak robiły - największe shitcode'y by przegoniły wszystkich ludzi, i pisanie bez architektury stałoby się normą; bo miałoby przewagę ekonomiczną we wprowadzaniu zmian do software'u.

Można ostrożnie stwierdzić, że jedynym sposobem na zapewnienie ciągłego niskiego kosztu zmian jest poprawna architektura i czysty kod.

edytowany 6x, ostatnio: Riddle
YA
"Jak zamawiam firmę budowlaną, to nie obchodzi mnie jakich narzędzi użyją, tylko kiedy coś dostarczą - interesuje mnie efekt końcowy." - po roku widać, że dom podchodzi wodą, jest zimnica, a ocieplić go nie można. Po 20 latach zaczyna być jasne, że dom długo już nie postoi. Po 40 latach domu już nie ma, bo się zawalił.
Riddle
@YetAnohterone: masz problem z wyłapywaniem sensu wypowiedzi? W moim poście chodzi o to że interesuje mnie efekt końcowy czyli dobrze wykonana robota, a nie użyte narzędzia.
YA
@Riddle sam pisałeś, "klienta nie obchodzi jak, tylko kiedy". Ale naprawdę nie musisz przyjmować postawy obronnej, w tym wypadku się z tobą zgadzam. Nie każdy komentarz pod postem to od razu polemika
loza_prowizoryczna
  • Rejestracja:ponad 2 lata
  • Ostatnio:2 dni
  • Postów:1583
0

Bezsens pisania kodu dla korporacji

Źle do tego pochodzisz. Tak samo jak ikona jest obrazem a mimo to nikt ikon nie maluje tylko je piszą.

Przestać pisać kod a zacznij go rysować. Wtedy nabierze to więcej sensu a i prawdopodobnie tobie zwiększą się zarobki. Sens to semantyka.


Przetrzyma wszystko
marian pazdzioch
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 21 godzin
  • Postów:708
0
bagietMajster napisał(a):

dobra zrobili to szybciej i mamy to co chcieliśmy ale tutaj odstaje rurka a z tyłu cieknie woda

No ale właśnie to jest ta zasadnicza różnica, że w software tych rurek nie widać. Oglądasz te rurki tylko ty (tani) programista, a Pan (drogi) ma od tego sługusów (tanich programistów).

SN
Dokładnie, niby tyle o tym się mówi jaka to jest płaska struktura w IT, tak samo płaska jak Ziemia.
YA
Pan nie widzi rurek. Pan widzi czerwony napis: "Unhandled exception blablabla...."
SN
Pan może też powiedzieć, że to nieważny błąd bo jest na to obejście biznesowe, albo pomimo tego proces biznesowy może być zakończony poprawnie, więc nie ma co naprawiać, priorytet low, do naprawy na nigdy :)
YA
Nah. Błąd może i zostanie naprawiony. Co z tego, skoro za chwilę pojawi się nowy gdzie indziej. Też chyba raczej nie jest tak, że Pan nie uważa, że błąd należy naprawić - problem z błędami "na nigdy" jest raczej taki, że jest wciąż za dużo rzeczy o wyższym priorytecie i naprawdę mają one wyższy priorytet. Szczególnie jeśli co chwila pojawiają się kolejne błędy krytyczne
SN
@YetAnohterone: i to jest właśnie jeden z tych bezsensów, który mam na myśli.j
Mjuzik
  • Rejestracja:ponad 8 lat
  • Ostatnio:25 minut
  • Postów:706
1

@Riddle:

Dobry programista zaprojektuje odpowiednią architekturę i czysty kod, i przez to że zrobi taką "trzepaninę" jak to ująłeś, wytworzy system w którym dodanie systemu referali zajmie jeden dzień zamiast 3 miesiące.

Pominąłeś tutaj kluczową estymację, czyli ile zajęła ta "trzepanina". Jakie były perspektywy na rozwój tego projektu etc.
Wywalanie budżetu na coś co może nam się przydać, ale nie musi to przepalanie budżetu. Odsyłam zasada YAGNI.

Zupełnie inny temat to gdy nie zadbamy o odpowiednią architekturę wiedząc, że na pewno przyniesie nam to znaczne benefity w przyszłości.

Inna sprawa, to w którym momencie najczęściej pojawia się bałagan (i bugi) w kodzie? Gdy często są zmieniane założenia i wymagania biznesowe...

Już też o tym pisałem wcześniej, że pisanie czystego kodu zajmuje tyle samo czasu co pisanie g*wno kodu, kwestia umiejętności.
Inna sprawa to czy do kodu dorzucamy testy, dokumentacje etc.

SN
Inna sprawa, to w którym momencie najczęściej pojawia się bałagan (i bugi) w kodzie? Gdy często są zmieniane założenia i wymagania biznesowe... lub jest duża rotacja na projekcie.
Riddle
Administrator
  • Rejestracja:ponad 14 lat
  • Ostatnio:około 3 godziny
  • Lokalizacja:Laska, z Polski
  • Postów:10037
1
Mjuzik napisał(a):

@Riddle:

Dobry programista zaprojektuje odpowiednią architekturę i czysty kod, i przez to że zrobi taką "trzepaninę" jak to ująłeś, wytworzy system w którym dodanie systemu referali zajmie jeden dzień zamiast 3 miesiące.

Pominąłeś tutaj kluczową estymację, czyli ile zajęła ta "trzepanina". Jakie były perspektywy na rozwój tego projektu etc.
Wywalanie budżetu na coś co może nam się przydać, ale nie musi to przepalanie budżetu. Odsyłam zasada YAGNI.

To prawda. Moja zasada kciuka jest taka że jeśli projekt trwa 2-3 tygodnie to zrobię "na szybko" (nie robiłbym onion, ale nadal wybrałbym tdd). Jeśli będzie trwał dłużej, to już go zrobię jak należy.

Pracuje tak w firmie od długiego czasu, i nie słyszałem żeby ktoś narzekał na performance.

Wiadomo też nie każdy umie zrobić dobry design. To nke jest tak że byle jaki junior stwierdzi "a to sobie walne dobrą architekturę", to że mu to wyjdzie.

Zupełnie inny temat to gdy nie zadbamy o odpowiednią architekturę wiedząc, że na pewno przyniesie nam to znaczne benefity w przyszłości.

Inna sprawa, to w którym momencie najczęściej pojawia się bałagan (i bugi) w kodzie? Gdy często są zmieniane założenia i wymagania biznesowe...

No tutaj się nie zgadzam. Bugi i bałagan pojawiają się stale - kwestiach jak bardzo to sprzątamy w miarę czasu. To że wymagania biznesowe się zmieniają to jest standard.

Już też o tym pisałem wcześniej, że pisanie czystego kodu zajmuje tyle samo czasu co pisanie g*wno kodu, kwestia umiejętności.
Inna sprawa to czy do kodu dorzucamy testy, dokumentacje etc.

True.

marian pazdzioch
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 21 godzin
  • Postów:708
1
Rexioo napisał(a):

Brakuje bardzo takich ludzi.

To się nazywa "senior" taki ludź (mówię o prawdziwym seniorze, a nie takim z nazwy). Tylko on jest drogi i trudno go znaleźć.

SO
  • Rejestracja:ponad 4 lata
  • Ostatnio:11 dni
  • Postów:52
0
snakeomeister napisał(a):

Cześć,

Czy nie macie czasami wrażenia, że całe pisanie kodu biznesowego dla korporacji to bezsens i programiści nie powinni się podejmować takiej pracy?
Dostajecie jakieś małe albo większe zadanie, które musicie wkomponować w jakiś legacy kod, który przeważnie jest napisany beznadziejnie.
Programiści w szczególności nie powinni pracować w zespołach, gdzie biznes czymkolwiek zarządza jak np. wybór kolejnej funkcji która ma zostać zaimplementowana.

Biznes powinien móc co najwyżej napisać sobie listę funkcji, które chce mieć w systemie a od IT dostać odpowiedź, że dostanie kiedy dostanie.

Czy nie jest bezsensem całe estymowanie w story pointach i ile czasu coś zajmie, jeżeli i tak nie jesteśmy opłacani od ilości wykonywanych zadań?
Czy jest sens tracić 2 dni z 10 na różne planowania itp.

Opisałeś jak działa świat w każdej dziedzinie
nie żebyś był pionierem, bo np. Ronald Regan tez o tym mówił
tylko w odniesieniu do rządu
że są ludzie znający się na robocie - oni nigdy nie awansują
i są ludzie dobrzy w różnych takich gierkach, ale na robocie się się buca znają, ale to właśnie oni zazwyczaj są przełożonymi tych pierwszych

programowanie to mały pikuś
lepsze jaja są w tzw gałęziach strategicznych, gdzie sa ludzie z nadania którzy nic o branży nie wiedzą (np eneretyka) ale zarządzają

nie chcesz nie pracuj
ale świata raczej nie zmienisz

marian pazdzioch
Dobre, tak właśnie działa "zostałem managerem".. a gdzie Reagan to opisuje?
SO
@marian pazdzioch: przeczytałem to w książce o II wojnie światowej, gdzie gościa (dyplomatę z USA), który upominał się o Polskę (Jałta, Poczdam) "zesłano" na placówkę na Samoa (o ile dobrze pamiętam, żeby nie przeszkadzał), a potem był wtręt o tym, jak takie coś widział i co o tym mówił RR, już za swoich czasów
phantom_wizard
@sobbek mógłbyś podać jaka to była książka?
YA
  • Rejestracja:prawie 4 lata
  • Ostatnio:około 22 godziny
  • Postów:252
1
Mjuzik napisał(a):

Nie. Coś czego programiści często nie rozumieją:

business value > code quality

Kiedyś też nie rozumiałem np. dlaczego firmy biorą projekty, chociaż nie mają pokrycia zespołu. Skutkowało to opóźnieniami w dostarczaniu funkcjonalności. Gdy przyszedł kryzys zrozumiałem po co.

no dobrze, ale to podejście skutkuje później tym, że (a) bez przerwy pojawiają się kolejne bugi (b) zaimplementowanie nowej funkcjonalności zajmuje 10x tyle czasu, ile powinno.

jak się ugrzęźnie w beznajdziejnym kodzie, to potem ciężko z nim dalej pracować.

zaczynam być na tym etapie, że zdaje mi się, że gdyby jednak zadbać o jakość kodu, to nawet dla biznesu się to zwróci mniejszą awaryjnością produktu i większą możliwością poszerzania go o nowe funkcje, a tego przecież biznes chce?

snakeomeister napisał(a):

Programiści w szczególności nie powinni pracować w zespołach, gdzie biznes czymkolwiek zarządza jak np. wybór kolejnej funkcji która ma zostać zaimplementowana.

z tym się głęboko nie zgadzam, o funkcjonalności decyduje zawsze biznes i tylko biznes, z przyczyn dość oczywistych.

YA
  • Rejestracja:prawie 4 lata
  • Ostatnio:około 22 godziny
  • Postów:252
1
marian pazdzioch napisał(a):
Rexioo napisał(a):

Brakuje bardzo takich ludzi.

To się nazywa "senior" taki ludź (mówię o prawdziwym seniorze, a nie takim z nazwy). Tylko on jest drogi i trudno go znaleźć.

I dlatego są firmy, które stoją juniorami. I nawet dowożą produkty, które mają dużą wartość biznesową. Tylko potem skutek jest taki, że kod jest beznadziejny, wszystko muli, wywala ciągle komunikaty błędów, praca z kodem jest upierdliwa i nieznośna.

Jest to zrozumiałe. W juniorach można przebierać i mało im płacić - nawet, jeśli wskutek tego do rozwoju produktu trzeba 10x więcej ludzi, niż gdyby siedzieli nad nim sami specjaliści, a tym juniorom wszystko i tak zajmuje 10x więcej czasu, niż powinno - i tak się opłaca.

Produkt muli i wali błędami? Co z tego, skoro kluczowe funkcjonalności są dowiezione. Klient może i jest zirytowany, ale produkt kupuje, bo czego potrzebował, ma. (Tak działa np. Visual Studio; wszyscy się wściekają, ale i tak korzystają).

Ale... Może jednak można inaczej? Połączyć jedno z drugim?

Zatrudnić jednego seniora, ale takiego prawdziwego, nie tylko z nazwy. Zapłacić mu ciężkie pieniądze. Pozwolić mu decydować o wszystkim, co jest związane bezpośrednio z kodem. Reszta programistów to niech będą juniorzy albo podszkoleni juniorzy (w sensie tacy, co zostali zatrudnieni w tym korpo dawno temu jako juniorzy i dalej tu pracują, wskutek czego doskonale znają produkt, ale z kolei nie mają obycia z obecnie stosowanymi najlepszymi praktykami i nie mają porównania, bo nigdy nie widzieli kodu innego, niż ten pisany w tym właśnie korpo).

Niech ten senior zarządza resztą zespołu, decyduje o architekturze, uczy ludzi dobrych praktyk, wymaga, by pisany kod był przynajmniej znośnej jakości. Kod niech pisze reszta zespołu. Może to przynajmniej pozwoli uniknąć najgorszych tragedii i piekiełek, jakich w innym wypadku jest pełno.

Nie wiem, to jest czyste zgadywanie z mojej strony. Czy taki układ miałby jakikolwiek sens? Jest gdzieś stosowany z sukcesem?

Miang
taaa i potem jeden z juniorów idzie do szefa i mówi że już wszystko mu senior przekazał i można go zwolnić bo ten junior się zadowoli o wiele mniejszą stawka po awansie. W rzeczywistości nie wiele wie, ale szef jest skąpy i się zgadza ;)
YA
@Miang: I tak powstają seniorzy tylko z nazwy?
Miang
tak powstają projekty z pieniędzy budżetowych
phantom_wizard
  • Rejestracja:około 3 lata
  • Ostatnio:5 minut
  • Postów:124
2

Zatrudnić jednego seniora, ale takiego prawdziwego, nie tylko z nazwy. Zapłacić mu ciężkie pieniądze. Pozwolić mu decydować o wszystkim, co jest związane bezpośrednio z kodem. Reszta programistów to niech będą juniorzy albo podszkoleni juniorzy (w sensie tacy, co zostali zatrudnieni w tym korpo dawno temu jako juniorzy i dalej tu pracują, wskutek czego doskonale znają produkt, ale z kolei nie mają obycia z obecnie stosowanymi najlepszymi praktykami i nie mają porównania, bo nigdy nie widzieli kodu innego, niż ten pisany w tym właśnie korpo).

Tutaj gość opowiada o tym podejściu i w skrócie ma to sens dopóki juniorzy zostają na dłużej niż rok i cały ten czasokoszt poświęcony im przez seniora aby przekazać wiedzę techniczno-biznesową ma szansę się zwrócić.

TA
  • Rejestracja:około 7 lat
  • Ostatnio:około godziny
  • Postów:266
3
YetAnohterone napisał(a):

zaczynam być na tym etapie, że zdaje mi się, że gdyby jednak zadbać o jakość kodu, to nawet dla biznesu się to zwróci mniejszą awaryjnością produktu i większą możliwością poszerzania go o nowe funkcje, a tego przecież biznes chce?

Problem w tym, że ten tzw. biznes nie jest w stanie rozróżnić dbania o jakość kodu od niedbania połączonego z gadaniem, że się dba. Taki skutek zarządzania ludźmi mającymi pojęcie o rzeczywistym wytwarzaniu produktów, przez ludzi którzy tego pojęcia nie mają.

Zatrudnić jednego seniora, ale takiego prawdziwego, nie tylko z nazwy. Zapłacić mu ciężkie pieniądze. Pozwolić mu decydować o wszystkim, co jest związane bezpośrednio z kodem.

Obawiam się, że w obecnym systemie (rządy menadżerów), częściej będzie się to kończyło zatrudnieniem ściemniacza, który będzie opowiadał jak to niby perfekcyjnie pracę wykonuje, a rzadziej kogoś kto w rzeczywistości to robi. Zapłacenie ciężkich pieniędzy gwarantuje przyciągnięcie zachłannych na pieniądze, natomiast nie gwarantuje, że z grupy zachłannych na pieniądze oraz bardzo dobrych specjalistów, zostanie wybrany specjalista a nie ściemniacz.

Zobacz pozostałe 40 komentarzy
SN
@Schadoow: jeżeli inżynier nie potrafi wysłowić się co robił to nie chciałbym go mieć w swoim zespole. ale jeżeli potrafi się wysłowić, ale nie potrafi porgramować wtedy już tak? Dlaczego wszyscy zakładają, że jak ktoś jest dobry w algorytmy to automatycznie nie potrafi się wysłowić? Wydaje mi się, że żeby zrozumieć algorytmy wymagana jest inteligencja na pewnym poziomie, która raczej nie wiąże się z problemami z wysławianiem się.
SN
@Schadoow: Ale nie udowodni czy umie rozmawiać wysokopoziomowo o problemach bez schodzenia w szczegóły implementacyjne ok a prowadząc rozmowę w ten sposób nie odkryjemy czy umiejętność wysokopoziomowej rozmowy o problemach nie jest jedyną rzeczą, którą potrafi.
SN
@Schadoow: zdaje się, że nie rozumiesz o czym ja mówię, nie chodzi o zamawianie algorytmów specjalistycznych na zewnątrz, chodzi o pewien poziom wiedzy, który ktoś posiada, aby być programistą i nie wynajdować koła na nowo. Nie znając podstaw DSA można nawet nie wiedzieć o tym, że jakiś problem można rozwiązać lepiej.
Schadoow
@snakeomeister: ale tak samo jest z każdym aspektem technicznym algorytmy są jednym z setek takich aspektów i to najmniej istotnym w większości produktów. Zreszta to jest to o czym pisałem podejście od d**y strony jeszcze nie wiesz co s juz mówisz jakich inżynierów potrzebujesz xD.
SN
@Schadoow: tak, ale jak proponujesz sprawdzic czy ktos potrafi rozwiazywac problemy czy nie?
PA
  • Rejestracja:ponad rok
  • Ostatnio:około 21 godzin
  • Postów:31
3
miiiilosz napisał(a):

Po pierwsze musiałbyś biznesowi pokazać czarno na białym ile będzie ich kosztował dług techniczny.

Wiem, że zwykle nie działa to w ten sposób, ale to raczej biznes musi pokazać wyliczenia oszczędności wynikających z niespłacania długu. Dług techniczny jest zjawiskiem opisanym i zbadanym, nie trzeba udowadniać, że istnieje. Różne raporty wskazują na koszty rzędu 20% - 40%, np.:
Technical Debt tracking: Current state of practice: A survey and multiple case study in 15 large organizations
The Developer Coefficient
Tech debt: Reclaiming tech equity

Poza tym, komu konkretnie trzeba to pokazać? Kto to jest ten "biznes"? W korporacjach osoby decyzyjne, z którymi programiści mają kontakt na codzień, nie reprezentują "biznesu". Reprezentują przede wszystkim swój portfel i swoje ego. W innych rodzajach firm może być lepiej albo i nie. Generalnie na całej ścieżce, od prezesa do juniora, powinna być jakaś świadomość kosztów olewania jakości. Wystarczy przerwa w jednym miejscu i już jest problem, dlatego mamy więcej badziewia niż ładnych rzeczy.

Mjuzik napisał(a):

Pominąłeś tutaj kluczową estymację, czyli ile zajęła ta "trzepanina". Jakie były perspektywy na rozwój tego projektu etc.

Rzetelna ocena perspektyw jest bardzo trudna, powiedziałbym nawet, że niemożliwa z wyjątkiem szczególnych przypadków.
Z jednej strony, z powodu zmian na rynku program może zmienić zastosowanie, odkryć niszę itp. Wówczas perspektywa zmienia się w sposób niemożliwy do przewidzenia. Np. programik, który miał być jednorazową pomocą dla jednego klienta, zmienia się w podstawę nowego obszaru działalności.
Z drugiej strony, manager może łatwo podważyć każdą perspektywę, jeśli nie będzie pasowała do jego prywatnych celów, czytaj "mam wywalone, jak ten projekt będzie wyglądał za 3 lata, bo wtedy będę na innym szczeblu albo w innej firmie".

Odsyłam zasada YAGNI.

Tylko kto jest tą literką Y? Manager 10 lat temu? Czy programista utrzymujący 10-letnie legacy?

Zupełnie inny temat to gdy nie zadbamy o odpowiednią architekturę wiedząc, że na pewno przyniesie nam to znaczne benefity w przyszłości.

Ten warunek jest nie do spełnienia. Pewności nigdy nie ma. Poza tym (przy złej woli) można dowolnie redefiniować pojęcie "znaczne benefity": zysk zwiększył się o 7%? a to pech, bo w tym kwartale ustaliliśmy, że "znaczne" zaczynają się od 8.

Jak dla mnie kwestia konieczności spłacania długu technicznego jest oczywista i nikomu nie będę udowadniał, że nie jestem wielbłądem.
Dlatego, opierając się na danych z powyższych raportów, staram się zawsze przepchać jawną i stałą regułę "+20% czasu na małe refaktoringi". Z mojego doświadczenia wynika, że wystarcza to na tyle, żeby przynajmniej nie robić gorszego bajzlu, niż już jest.
Jeśli nie ma zgody managementu na taką regułę, ale jest wsparcie zespołu, to przepychamy refaktoringi po cichu. Dajemy większe wyceny nie chwaląc się tym, że nadwyżka idzie na walkę z szambem.
Jak się komuś się nie podoba, to niech mie zwolnią :P

SN
Wszystko ok, tyle że jeden zespół tego nie zrobi, warto aby tak postępowały wszystkie zespoły.
IT
  • Rejestracja:około 7 lat
  • Ostatnio:około rok
  • Postów:261
2

Pracowałem w kilku firmach i potwierdzam, jeśli sami programiści nie wezmą spraw w swoje ręce i nie zaczną refaktorowac rzeczy jako codzienna rutyna to nie ma opcji by jakość się polepszyła. Biznes nie zapłaci za coś dwa razy a z ich perspektywy tak to wygląda bo przecież ta funkcjonalność już jest. Szkoda, że taki sobie los zgotowaliśmy, ale to już temat na inny wątek.

edytowany 1x, ostatnio: itsme
Miang
może pisać dobrze od początku ?
TA
@Miang: to nie takie proste, by na samym początku - bez przeprowadzenia doświadczeń, jakimi są wcześniejsze wersje - wiedzieć jak powinno być dobrze. Chyba jednak lepiej jest zrobić jakiś prototyp, mający wady ale działający, niż zablokować się na etapie zastanawiania się, jak zrobić dobrze.
Miang
chodzi mi o to że ktoś doświadczony powinien podejmowac decyzje
IT
Nie da się przewidzieć wszystkiego zwłaszcza jak pracujesz z hardware i różnymi protokolami, na które nie masz wpływu i dokumentacji.
Miang
@itsme: da się przewidzieć bardzo dużo , na przykład podzielić na moduły do obsługi tego harware
Riddle
Administrator
  • Rejestracja:ponad 14 lat
  • Ostatnio:około 3 godziny
  • Lokalizacja:Laska, z Polski
  • Postów:10037
1
itsme napisał(a):

Pracowałem w kilku firmach i potwierdzam, jeśli sami programiści nie wezmą spraw w swoje ręce i nie zaczną refaktorowac rzeczy jako codzienna rutyna to nie ma opcji by jakość się polepszyła. Biznes nie zapłaci za coś dwa razy a z ich perspektywy tak to wygląda bo przecież ta funkcjonalność już jest. Szkoda, że taki sobie los zgotowaliśmy, ale to już temat na inny wątek.

:|

No ameryki nie odkryłeś. To jest standard przecież. Jasne, że to programiści i tylko programiści powinni dbać o jakość.

YA
  • Rejestracja:prawie 4 lata
  • Ostatnio:około 22 godziny
  • Postów:252
0

Tak dla ludzi twierdzących, że jakość kodu nie ma żadnego znaczenia.

Pamiętam taką sytuację, że dla software house'u bardzo ważny kontrakt wisiał na włosku, bo klient był zniesmaczony niestabilnością i awaryjnością produktu. Teoretycznie najważniejsza funkcjonalność biznesowa została zaimplementowana, ale co z tego, skoro aplikacja nagminnie waliła błędami, wieszała się, a nawet, jeśli błąd rzeczywiście wynikał z winy użytkownika, to komunikat o błędzie nie tłumaczył dobrze, co się stało, dlatego użytkownika szlag trafiał, bo z jego perspektywy "aplikacja nie działa" nawet, jeśli to on coś źle robi.

Jak to się skończyło, czy w końcu dostali kontrakt, czy nie, tego nie wiem. Ale sam fakt, że b. ważny kontrakt naprawdę wisiał na włosku z powodu problemów, których źródło ewidentnie leżało w niskiej jakości kodu, powinno dawać do myślenia.

ZI
Jak dla mnie to, że enduser miał problem z obsługą, to nie jakość kodu, tylko podstawowy brak spełnienia wymogów biznesowych.
YA
@Zig piszę przecież, że problemem był tam zły komunikat błędu. to się chyba nazywa mądrze leaky abstraction: komunikat błędu wypisywał nie pierwotną przyczynę problemu zrozumiałą dla endusera, tylko bezpośrednią przyczynę błędu zrozumiałą tylko przy b. dobrym poznaniu budowy całego systemu. A działo się tak z powodu spaghetti code.
Miang
niskiej jakości projektu raczej
CZ
  • Rejestracja:ponad 8 lat
  • Ostatnio:około miesiąc
  • Postów:2284
1
YetAnohterone napisał(a):

Tak dla ludzi twierdzących, że jakość kodu nie ma żadnego znaczenia.

Pamiętam taką sytuację, że dla software house'u bardzo ważny kontrakt wisiał na włosku, bo klient był zniesmaczony niestabilnością i awaryjnością produktu. Teoretycznie najważniejsza funkcjonalność biznesowa została zaimplementowana, ale co z tego, skoro aplikacja nagminnie waliła błędami, wieszała się, a nawet, jeśli błąd rzeczywiście wynikał z winy użytkownika, to komunikat o błędzie nie tłumaczył dobrze, co się stało, dlatego użytkownika szlag trafiał, bo z jego perspektywy "aplikacja nie działa" nawet, jeśli to on coś źle robi.

Jak to się skończyło, czy w końcu dostali kontrakt, czy nie, tego nie wiem. Ale sam fakt, że b. ważny kontrakt naprawdę wisiał na włosku z powodu problemów, których źródło ewidentnie leżało w niskiej jakości kodu, powinno dawać do myślenia.

No to produkt nie działa, proste. Tu jest mowa o sytuacji kiedy produkt spełnia swoje wymagania bezawaryjnie, ale kod to dziadostwo.

ledi12
  • Rejestracja:ponad 5 lat
  • Ostatnio:11 dni
  • Lokalizacja:Wrocław
2

Ale nikt nie twierdzi, że jakość jest bez znaczenia. Owszem, ma ogromne znaczenie, jednak w wielu sytuacjach biznes zwyczajnie to ignoruję. Jeśli coś może zająć 1 dzień i być rozwiązaniem brzydkim, mało optymalnym itp itd vs coś co zajmie 5 dni a będzie optymalne i łatwo rozszerzalne to w wielu przypadkach biznes wybierze to pierwsze. Często jest to uargumentowane faktem, że potrzebujemy coś na teraz i z czasem to przebudujemy. Oczywiście na 90% nikt tego później nie przebuduje i worek z długiem technicznym się powiększa.

Z tego co zauważyłem, podejście drugie, czyli jakość > prędkość, jest często praktykowane w firmach produktowych. Natomiast pierwsze w typowych korpo-kontraktorniach.


Robię http response status cody w martwych ciągach
YA
  • Rejestracja:prawie 4 lata
  • Ostatnio:około 22 godziny
  • Postów:252
0
Czitels napisał(a):

No to produkt nie działa, proste. Tu jest mowa o sytuacji kiedy produkt spełnia swoje wymagania bezawaryjnie, ale kod to dziadostwo.

Czy dawne Windowsy działały? I tak, i nie. Z jednej strony funkcjonalność biznesowa była dowieziona, ludzie masowo z nich korzystali. Z drugiej strony komputer co chwila walił błędami, zawieszał się, restartował się, ciągle znajdowano nowe dziury bezpieczeństwa.

Czy Visual Studio działa? Znowu, i tak, i nie. Z jednej strony funkcjonalność biznesowa jest dowieziona: deweloperzy masowo korzystają z Visual Studio. Z drugiej strony Visual Studio co chwila wali błędami, miewa problemy z podstawową funkcjonalnością, zdarza mu się zawieszać, itp. Patrz np. https://4programmers.net/Mikroblogi/visualstudiohate

Czy działa, to nie jest zerojedynkowe. Pomiędzy "działa" a "nie działa" jest właśnie to: niby działa, ale niestabilnie i awaryjnie.
Do takiej sytuacji, w mojej opinni, prowadzi właśnie niedbanie o jakość kodu i nacisk tylko na funkcjonalność biznesową. Niby działa! Niby funkcjonalność biznesowa jest dowieziona! Przy odrobinie samozaparcia można nawet korzystać! Tyle, że użytkownik co jakiś czas rzuca nieprzyzwoitymi wiązankami, kiedy pojawia mu się kolejny błąd, a obchodzenie niektórych problemów z funkcjonalnością zaczyna być sztuką samą w sobie.

Riddle
Administrator
  • Rejestracja:ponad 14 lat
  • Ostatnio:około 3 godziny
  • Lokalizacja:Laska, z Polski
  • Postów:10037
0

Nie za bardzo można mieć szybkość bez jakości (bo ciężko dodać coś do śmietnika), ale równie ciężko jest mieć jakość bez szykość - nie jesteś w stanie dodać poprawek do kodu, jeśli jesteś wolny (bo musisz robić feature'y i nie ma czasu na poprawki).

Więc to nie jest trade-off quality vs. speed.

Przykład:

  1. Dostajesz 5 zadań na sprint, powiedzmy.
    • Jeśli masz wysoką jakość kodu:
      1. to zrobisz te 5 zadań
      2. zostanie Ci dzień na poprawki quality
      3. więc jakość i szykość rośnie
    • Jeśli masz niską jakość kodu:
      1. to zrobisz te 5 zadań na styk albo się spoźnisz
      2. nie masz czasu na poprawki i refaktor, bo kolejny sprint czeka.
      3. Błędne koło.

Albo masz zarówno prędkość+jakość, albo nie masz nic.

edytowany 11x, ostatnio: Riddle
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)