Sprytna pracowitość, która prowadzi do rozwoju

0

Dzień dobry.

Na wstępie pragnę zaznaczyć, że nie chcę obrażać niczyich uczuć religijnych lub ateistycznych.

Chciałem się spytać o taką rzecz. Jezus Chrystus, w jednej z Ewangelii mówi takie słowa:

Kto w małej rzeczy będzie wierny, ten i w wielkiej będzie wierny.

Słowa tej, choć interpretowane przez duchownych w różnych płaszczyznach, można odnieść do rozwoju osobistego (moim zdaniem). Tak też w programowaniu. Jeżeli mam w sobie chęć myślenia od razu o najprostszych funkcjach i przewiduję od razu proste zależności, to jestem w stanie napisać najbardziej skomplikowany program. Problem polega na tym, że ja utraciłem tą umiejętność. Kiedy siadam do programowania, to myślę najpierw o "wielkich" rzeczach, chciałbym od razu napisać cały kod, zaczynając od najprzyjemniejszych fragmentów. Nie mam w sobie chęci do mierzenia się z "brudną robotą", z prozaicznymi, nudnymi funkcjami. Co niestety przekłada się na komplikacje, w dalszym procesie pisania programu. Zaczynam wtedy stosować dziwne triki, żeby tylko nie poprawiać kodu. W rezultacie program, który w końcu napiszę działa, jednak jego czytanie, to dopiero katorżnicza praca.

Dlatego mam pytanie:
Jak zmienić swoje myślenie?

0

A co jest dla Ciebie najfajniejsze? Przykład jakiś podaj.

0

Np. jak pisałem funkcję, w której miałem połączenie bazy danych i aplikacji okienkowej, to zamiast napisać dobrze przemyślaną, optymalną i prostą funkcję budowania zapytań, ja za każdym razem tworzyłem "ręcznie" zapytanie, sklejając je w sposób toporny. Dawało mi to radość, że "w ogóle" działa, jednak zaciemniało kod i łatwość jego czytania.

Przykład:

void uaktualnijAdresZamieszkania()
{
	string zapytanie = "SELECT * FROM adreszamieszkania WHERE id='";
	zapytanie += zamienLiczbeNaString(wybraneId);
	zapytanie += "'";
	
	if (baza.iloscRekordow(zapytanie) > 0)
	{
		zapytanie = "UPDATE adreszamieszkania SET (ulica, numerDomu, numerMieszkania, kodPocztowy, miasto, wojewodztwo, kraj) = ('";
		zapytanie += edycjaUlicaZami.value();
		zapytanie += "', '";
		zapytanie += edycjaNrDomuZami.value();
		zapytanie += "', '";
		zapytanie += edycjaNrMieszZami.value();
		zapytanie += "', '";
		zapytanie += edycjaKodPoczZami.value();
		zapytanie += "', '";
		zapytanie += edycjaMiastoZami.value();
		zapytanie += "', '";
		zapytanie += edycjaWojZami.value();
		zapytanie += "', '";
		zapytanie += edycjaKrajZami.value();
		zapytanie += "') WHERE id='";
		zapytanie += zamienLiczbeNaString(wybraneId);
		zapytanie += "'";
	}
	
	else
	{
		zapytanie = "INSERT INTO adreszamieszkania(id, ulica, numerDomu, numerMieszkania, kodPocztowy, miasto, wojewodztwo, kraj) VALUES('";
		zapytanie += zamienLiczbeNaString(wybraneId);
		zapytanie += "', '";
		zapytanie += edycjaUlicaZami.value();
		zapytanie += "', '";
		zapytanie += edycjaNrDomuZami.value();
		zapytanie += "', '";
		zapytanie += edycjaNrMieszZami.value();
		zapytanie += "', '";
		zapytanie += edycjaKodPoczZami.value();
		zapytanie += "', '";
		zapytanie += edycjaMiastoZami.value();
		zapytanie += "', '";
		zapytanie += edycjaWojZami.value();
		zapytanie += "', '";
		zapytanie += edycjaKrajZami.value();
		zapytanie += "')";
	}
	
	baza.wykonajZapytanie(zapytanie);
}

Nie wiem, jak mógłbym to napisać inaczej, ale wiem, że tak, jak jest teraz, to jak ciosanie kamienia, zamiast krojenia masła. Wolałbym mieć funkcję, która by utworzyła zapytanie w jednej instrukcji, ale nieprzyjemne uczucia, jakie wiążą się z stawianiem czoła temu zadaniu, skutecznie odwodzą mnie od jej napisania.

2
mpaw napisał(a):

Nie wiem, jak mógłbym to napisać inaczej, ale wiem, że tak, jak jest teraz, to jak ciosanie kamienia, zamiast krojenia masła. Wolałbym mieć funkcję, która by utworzyła zapytanie w jednej instrukcji, ale nieprzyjemne uczucia, jakie wiążą się z stawianiem czoła temu zadaniu, skutecznie odwodzą mnie od jej napisania.

IMHO programowanie to nie jest zawód stworzony dla Ciebie. Dobry programista jest leniwy, w związku z tym nie chciałoby mu się pisać po sto razy tego samego kodu, napisałby sobie funkcję lub użył istniejącej biblioteki. Dla prawdziwego pasjonata satysfakcjonujące jest to, że zrobisz coś sprytniej, krócej, wydajniej, a nie to że... działa. Programista zawsze mówi "u mnie działa", niejako z automatu, jego to nie podnieca.

0

Właśnie, ja kiedyś byłem inny, kiedyś umiałem dobrze programować. Chciałbym się zmienić, ale nie wiem jak.

PS.
W rezultacie takiej postawy, nie rozwijam się. Robię to co już umiem, zamiast próbować i stawiać czoła umiejętnościom, których nie posiadam. To ma swoje korzenie w mojej życiowej postawie. Ogólnie źle żyję. Może nie piję, nie palę, nie ćpam, nie morduję, nie gwałcę, ale moje życie jest jak dryfowanie po powierzchni głębokiego jeziora, bez zanurzania się i podziwiania i uczenia się o jego głębi. (Może zbyt górnolotnie to ująłem)

0

Piszesz aplikację okienkową, tak?
http://www.swtestacademy.com/database-operations-javafx/
Przerób ten tutorial, dodaj swoje funkcjonalności, czegoś nie wiesz - szukaj.
Nie odpowiada Ci taka forma? Wykup jakiś wideo kurs na Udemy i przerób go z autorem, kodując razem z nim. Musisz rzucić się trochę na głęboką wodę. Rozwój stymulowany niepewnością jest szybszy, ale trzeba wyjść z tej swojej strefy komfortu :)

0

Nie zrozumieliśmy się.

Piszę aplikację okienkową w FLTK. Opanowałem, w stopniu podstawowym logikę tej biblioteki. Mam już większość programu. Jednak jest on napisany "brzydko". Działa bardzo dobrze, ale użytkownik nieświadomy co się kryje "pod maską", żyje w błogim przeświadczeniu, że program napisał dobry programista.

Chciałbym umieć zauważać małe rzeczy. Chciałbym umieć dostrzegać proste zależności i umieć je wykorzystywać. Kiedyś tak było. Jednak teraz jest kupa z rodzynkami (przepraszam za określenie)

Chciałbym się zmienić, nie tylko w sferze programistycznej, ale także, a może przede wszystkim, w sferze osobistej.

Ale dziękuję za odpowiedź

1

Mi radość sprawia, jak stworzę jakiś mechanizm, który za mnie coś zrobi. Np. dam mu jakieś dane, a on mi zrobi z tego działające polecenie SQL. Ja to robię w taki sposób. Nikt nie lubi klepać smutnego kodu. Dlatego programiści zastanawiają się, jak sobie oszczędzić tej pracy i wymyślają różne mechanizmy. I mi radość daje właśnie wymyślanie i tworzenie tych mechanizmów. Może w ten sposób zacznij myśleć.

0
mpaw napisał(a):

Chciałbym się zmienić, nie tylko w sferze programistycznej, ale także, a może przede wszystkim, w sferze osobistej.

Ciężko coś stwierdzić przez Internet. Może jesteś wypalony, może masz jakieś zaburzenia afektywne, może powinieneś zobaczyć się z lekarzem.

1

Kiedy siadam do programowania, to myślę najpierw o "wielkich" rzeczach, chciałbym od razu napisać cały kod, zaczynając od najprzyjemniejszych fragmentów.
Nie mam w sobie chęci do mierzenia się z "brudną robotą", z prozaicznymi, nudnymi funkcjami. Co niestety przekłada się na komplikacje, w dalszym procesie
pisania programu. Zaczynam wtedy stosować dziwne triki, żeby tylko nie poprawiać kodu. W rezultacie program, który w końcu napiszę działa, jednak jego
czytanie, to dopiero katorżnicza praca.

Nie ma w tym nic złego. Wystarczy, że zamiast robić coś na czysto, będziesz robił prototypy. Czyli:

  • piszesz tak jak piszesz, byle szybko (to jest OK na fazie prototypu), próbujesz rozwiązać pewne problemy techniczne albo sprawdzić jak coś będzie działać, poeksperymentować itp.
  • a potem jak już się dowiesz, i zaspokoisz ciekawość, ambicję itp. to poddajesz to co zrobiłeś pewnej refleksji i próbujesz napisać od nowa program już ładniej, bardziej spokojniej, robisz to co trzeba zrobić, a niekoniecznie to co cię jara w danym momencie.

Żeby za każdym razem nie przepisywać wszystkiego od nowa, to możesz np. zrobić commita w Git przed eksperymentami - potem sobie robić dowoli eksperymenty na innym branchu, a potem powrócić do głównego brancha i napisać jakiś kawałek kodu na czysto.

Możesz też zamiast przepisywania wszystkiego na nowo zrobić zwykły refactoring (jednak polecam napisać testy przed refaktoringiem, żeby się nic nie rozpierzyło po drodze) i przerobić kod tak, żeby był ładniejszy.

http://wiki.c2.com/?MakeItWorkMakeItRightMakeItFast

0

Osiągnąłeś stan w którym musisz transcendować na poziom architekta aplikacji z poziomu zwykłego klepacza. Resztę zostaw studentom i innym pomywaczom. Efekt pewnie lepszy nie będzie ale więcej ludzi się na tym wzbogaci i PKB kraju urośnie. Na pewnym etapie nie ma już odwrotu.

1

Podpisuje sie pod tym co @LukeJL napisał.
Kod call czas zyje I sie rozwija. No może nie sam sie rozwija, tylko Ty go powinienes rozwijac, optymalizowac pod katem dzialania I czytelnosci.
Nie wiem czy cztales "Czysty kod" Roberta C. Martina, której traktuje właśnie o tym temacie, ktory Cie trapi.
Goraco polecam.

0
Haskell napisał(a):
mpaw napisał(a):

Chciałbym się zmienić, nie tylko w sferze programistycznej, ale także, a może przede wszystkim, w sferze osobistej.

Ciężko coś stwierdzić przez Internet. Może jesteś wypalony, może masz jakieś zaburzenia afektywne, może powinieneś zobaczyć się z lekarzem.

a może wystarczyłoby jakby od czasu do czasu pociupciał

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