Sprytna pracowitość, która prowadzi do rozwoju

Odpowiedz Nowy wątek
2017-05-18 09:50
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?

Pozostało 580 znaków

2017-05-18 10:44
0

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

Pozostało 580 znaków

2017-05-18 11:02
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.

Pozostało 580 znaków

2017-05-18 11:09
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.


Wiedza to potęga
@Haskell bo dobry programista to ten leniwy. “I choose a lazy person to do a hard job. Because a lazy person will find an easy way to do it.” Bill Gates - SwateQ 2017-05-18 13:52
@SwateQ: <Tu powinna być cięta riposta, ale podczas jej pisania poleciał BSOD (tak na prawdę, to nie)> :) - c7 2017-05-19 18:12

Pozostało 580 znaków

2017-05-18 11:13
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)

edytowany 1x, ostatnio: mpaw, 2017-05-18 11:14

Pozostało 580 znaków

2017-05-18 11:18
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 :)

Pozostało 580 znaków

2017-05-18 12:10
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ź

edytowany 1x, ostatnio: mpaw, 2017-05-18 12:10

Pozostało 580 znaków

2017-05-18 12:30
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ć.

Pozostało 580 znaków

2017-05-18 13:45
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.


Wiedza to potęga

Pozostało 580 znaków

2017-05-18 15:00
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


((0b10*0b11*(0b10**0b101-0b10)**0b10+0b110)**0b10+(100-1)**0b10+0x10-1).toString(0b10**0b101+0b100);
edytowany 2x, ostatnio: LukeJL, 2017-05-18 15:01

Pozostało 580 znaków

2017-05-18 15:19
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.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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