Programowanie jest jak medycyna

2

Hej.

Dziś ten topic będzie nieco jak wpis na blogu. Piszę go jednak tylko dlatego, że chciałbym poznać Wasze zdanie na temat moich przemyśleń dotyczących dziedziny jaką jest programowanie.
Zacznijmy od początku

Od jakiegoś czasu pracuję nad małym programem / grą, ale to nie istotne, najważniejsze, że piszę jakiś program tak jak w naturze mają to programiści. Nadszedł jednak czas, iż mój kod popełniał minimalny błąd, a ja nie za bardzo wiedziałem gdzie leży problem. W tym miejscu każdy normalny programista sięga po debuggera i pracuje, tak więc i ja zrobiłem i moja praca po kilku godzinach przyniosła zadowalający skutek wyeliminowania błędu.
Po kilku minutach naszła mnie refleksja: "Programowanie jest jak medycyna, a program jest jak pacjent w szpitalu".

Proces debuggingu jest według mnie podobnym procesem jak wyszukiwanie diagnozy choroby. Lekarz mając pacjenta najpierw szuka przyczyny, przez którą pacjent choruje. W odniesieniu do programu komputerowego jest to wyszukiwanie błędu po widocznych skutkach. Program może nie działać w ogóle, może działać, ale się wysypywać albo w końcu może podawać jedynie błędne dane użytkownikowi. Pacjent również ma różne objawy choroby, a każda ma inną przyczynę.
Idąc tym tropem dalej dochodzimy do wniosku, że przyczynę choroby należy wyeliminować, toteż wyszukujemy błędu w programie. Robimy to na wiele sposobów podobnie jak lekarze szukający choroby u pacjenta. Metod jest mnóstwo od sprawdzania choroby (debugging / testy) po podawanie stopniowe leków i czekania na wyniki (poprawienie kodu na ślepo).
Lekarz czeka na wyniki i jeśli będą negatywne to szuka przyczyny gdzieś indziej podobnie jak programista, który wyszukuje błędu w programie, a jeśli miejsce podejrzane o błąd jest nieprawidłowe, poszukiwania trwają dalej.
Po odkryciu przyczyny zarówno przez lekarza jak i programisty, podejmuje się leczenie pacjenta (poprawienie kodu).
Lekarz podaje pacjentowi pigułki, co jest według mnie odpowiednikiem poprawienia pojedynczej funkcji, ewentualnie dwóch (dwie pigułki). Zdarza się jednak, że pacjent w szpitalu musi mieć podjętą operację. Po przełożeniu na programistyczny fach sądzę, że można to przyrównać do dogłębnej refaktoryzacji kodu. Cały program jest poprawiany, czasami lekko modyfikowany pod względem funkcjonalności, tak jak pacjent podczas operacji jest pod lupą dość intensywnych prac.

Lekarze dzielą się na różne specjalizacje. Przykładowo są chirurdzy, jednak to nie wszystko. Chirurg również posiada swoją dziedzinę specjalną jak np:

  • Chirurgia dziecięca
  • Chirurgia klatki piersiowej
  • Chirurgia ogólna
  • Chirurgia plastyczna
  • Chirurgia szczękowo-twarzowa
    Podobnie jest w zawodzie programisty. Są programiści c++, c#, delphi, pascal, assembler, java, php, javascript i tak można wymieniać w nieskończoność. Każdy taki programista ma jednak swoją technologię, którą lubi najbardziej i zna się na niej najlepiej.
  • Budowa aplikacji kompatybilnych z systemem Mac OS
  • Spring Framework
  • Tworzenie aplikacji mobilnych
  • Produkcja aplikacji desktopowych
  • Net
  • Struts
    itd...

Nad dużym projektem siedzi cały sztab programistów. Podobnie jak podczas operacji, albo podczas konsultacji lekarskich jest cały sztab lekarzy.
Z kolei proste przypadki nie wymagają takich nakładów pracy i wystarczy jeden lekarz od przeziębienia, grypy itp, tak jak w programistycznych fachu gdzie przy małym projekcie jedna osoba wystarczy, jednak przy dużym potrzebny jest zespół.

i na koniec nieco humorystycznie: kod programu jest dla przeciętnego człowieka tak samo nieczytelny jak pismo doktora :)

Co sądzicie o porównaniu programowania do medycyny? Widzicie jakieś jeszcze podobieństwa?
Wiem też, że programowanie można przyrównać do innych fachów jednak nie znalazłem żadnego innego, który by miał aż tyle "wspólnych" punktów z programowaniem jak medycyna.
Są też oczywiście pewne różnice jak choćby odpowiedzialność, wszak lekarz pracuje z żywym człowiekiem, a programista z "nieżywą" maszyną, której zgon może mieć konsekwencje najczęściej tylko na papierze, ewentualnie w wynagrodzeniu., niemniej jednak sądzę, że programowanie ma bardzo dużo wspólnych szczegółów z medycyną. Co Wy na ten temat sądzicie?

0

Jak programista źle zaprogramuje windę, to też może komuś rękę zmiażdżyć :D

1

W taki sposób można w zasadzie, że każda praca jest trochę podobna do programowania...
W końcu mechanik debuguje samochody, korektor tekstu debuguje tekst...
Weź się zajmij czymś porządnym polaczek :P

0

Programiście chyba łatwiej jednak przejść z C++ na C# (przykładowo) niż lekarzowi z dentysty na okulistę.

2

do Flame z tym

Programowanie nie jest jak medycyna.
Równie dobrze możesz powiedzieć, że malarz jest jak programista, bo siedzi przed prostokątem, coś tam robi rękami, że się pojawia, a jak się nie podoba to poprawia, a jak się podoba to ok.

Powyższe zdanie celowo ma taką postać.

0

Zupełnie mnie to nie przekonało, tę analogię można przypisać setkom innych zawodów.

0

lekarze dużo się uczą by potem stosować schemat. Mało jest w ich pracy inwencji twórczej (chyba, że ma się dziennie takie przypadki jak słynny dr House ;p). Przyrównać można ich raczej do klepaczy.

0

Programiście chyba łatwiej jednak przejść z C++ na C# (przykładowo) niż lekarzowi z dentysty na okulistę.

To jest argument jak strzał kulą w płot bo równie dobrze mogę powiedzieć, że programiście C# ciężko przeskoczyć na assemblera.

W taki sposób można w zasadzie, że każda praca jest trochę podobna do programowania...

oraz

Równie dobrze możesz powiedzieć, że malarz jest jak programista, bo siedzi przed prostokątem, coś tam robi rękami, że się pojawia, a jak się nie podoba to poprawia, a jak się podoba to ok.

i

Zupełnie mnie to nie przekonało, tę analogię można przypisać setkom innych zawodów.

No przecież ludzie... napisałem wyraźnie:
**Wiem też, że programowanie można przyrównać do innych fachów jednak nie znalazłem żadnego innego, który by miał aż tyle "wspólnych" punktów z programowaniem jak medycyna. **
Może nie dotrwaliście do tego fragmentu.
Przykład z malarzem jest ok, ale punktów wspólnych jest bardzo mało.
To samo z mechanikiem.
Po prostu wydaje mi się, iż z medycyną ma najwięcej wspólnego jeśli brać pod uwagę "podobieństwo do innych zawodów".

Jedynie argument up jest fajny, że lekarz uczy się raczej schematów, a nie inwencji twórczej. Tutaj faktycznie jest spora różnica. Różnic jednak jest sporo i temu nie przeczę, jednak taka naszła mnie myśl, iż jest sporo punktów wspólnych z tymi zawodami i w pewnych okolicznościach mogą być odniesienia.

3

Przede wszystkim programista, nie tylko "leczy" programy, ale przede wszystkim je tworzy. A lekarz nie tworzy pacjentów, których leczy.
Moim zdaniem, więcej analogii jest między programowaniem a budownictwem: począwszy od analizy potrzeb użytkowników (czy to budowli czy programu), poprzez wykonanie projektu, aż po budowę/implementację z wykorzystaniem znanych technik i mechanizmów.

0

zdaje mnie mi się, że jednak jedna i druga dziedzina są po części sztuką
czyli nie do końca inżynierską działalnością

0

kurcze trochę ciężko się zgodzić - programiści to głównie faceci, a medycyna to głównie kobiety. Wystarczy popatrzeć na uczelnie.
Co by nie mówić, programowanie pozwala mieć pełną kontrolę nad tym co się robi (przynajmniej teoretycznie) - co leży w naturze każdego samca.
Medycyna = pomaganie/opiekowanie się etc co nie jest naturą większości samców :D

0
Moskitek napisał(a)

kurcze trochę ciężko się zgodzić - programiści to głównie faceci, a medycyna to głównie kobiety.

Np. wśród polskich chirurgów aż 5% to kobiety. ;]
Teraz coraz więcej kobiet idzie na medycynę, na niektórych wydziałach jest ich ponoć 75%, ale zanim się cała branża sfeminizuje dużo jeszcze czasu upłynie. Na razie trudno chyba mówić, że medycyna to głównie kobiety.

1
Moskitek napisał(a)

kurcze trochę ciężko się zgodzić - programiści to głównie faceci
jednak przyjmuje się, że pierwszym programistą w historii był ... a raczej była kobieta :) Co do specjalizacji medycznych niestety nie wszystkie są odpowiednie dla kobiet. Chirurgia czy ortopedia wymaga nieraz użycia sporej siły. Kobiety dobrze sprawdzają się w roli dermatologów czy radiologów, psychiatra i inne niezabiegowe specjalizacje. Nawet do ginekologii większość nich się nie nadaje ;)

1

P.S. Były wielkie zapowiedzi odejścia. Zatem kiedy znikniesz?

Po sesji bo teraz mam wolne i w domu albo kodzę, albo idę gdzieś z dziewczyną, albo nachodzą mnie refleksje i o nich piszę :P
Po sesji więcej czasu na pracę będę miał, a nie na pierdoły toteż mnie raczej tu nie będzie.
Poza tym ja tu goszczę raz na 2-3 tygodnie około ostatnio.

3
polaczek17v2 napisał(a)

albo idę gdzieś z dziewczyną

Ehe.

1 użytkowników online, w tym zalogowanych: 0, gości: 1