Sztuka programowania to też umiejętność podejmowania decyzji kiedy można sobie pozwolić na:
- pisanie kodu byle jakiego, bo kod tworzony jest na chwilę;
- pisanie kodu byle jakiego, bo kod tworzony jest na lata ale na 100% nie będzie rozwijany ani modyfikowany;
- pisanie kodu "wypieszczonego" bo ten ma służyć przez lata i może być podstawą do dalszego rozwoju.
Jasne, że najlepiej by było gdyby każdy kod można było pisać jako ten "wypieszczony" tylko problem polega na tym, że koszt i czas napisania dobrego kodu jest zwykle wyższy niż koszt napisania kodu byle jakiego, który z punku widzenia klienta robi dokładnie to samo. Na ten dodatkowy czas składa się głównie proces analityczno-projektowy a na koszt zwykle konieczność wykorzystania lepszego programisty. Nie ma co ukrywać, że nie każdy programista nadaje się do pisania kodu na wysokim poziomie abstrakcji.
Jak widać prosta ekonomia i zdrowy rozsądek podpowiadają, że pisanie dobrego kodu nie zawsze ma sens.
Naprawdę do zaimportowania danych z jakiegoś starego systemu do nowego nie trzeba budować pięknych klas ani tworzyć cudownych struktur. Tu trzeba "przewalić" dane z lewa w prawo i można zapomnieć bo ten program ani nawet podobny już nigdy nie zostanie użyty. Dodam, że takie importy danych czasem osiągają rozmiary sporych aplikacji nawet z okienkami.
Podpisałbym się pod tym co napisał @katakrowa
Ale dodałbym tez jeszcze punkt:
- różni programiści mają rozwinięte różne umiejętności, i różne czynności wykonują w różnych długościach czasu. Dany spaghetti kod jeden programista zrefaktoruje w 10 minut, inny będzie refaktorował 3h i narzekał że "nie ma czasu na pisanie dobrego kodu", bo jeszcze nie rozwinął umiejętnego refaktorowania.
Z tego wynika też dużo niedomówień - taka osoba która nie włożyła żadnych punków umiejętności (RPG wink ;) ) w ulepszanie kodu, zobaczy potem PR'a gracza który włożył expił swój level w Refactor: 100, TDD: 95 i będzie narzekał że "ten to nic nie robi tylko refaktoruje" (bo jemu samemu zajęło by to bardzo długo), podczas gdy autor PR'a pewnie wyczyścił kod w pare minut.
Można by się pokusić o stworzenie takiego drzewa umiejętności programistów (w który mogłoby być POC, initial dev, delivery, estimate, tdd, refactor, naming, performance, threads, libraries, docs, vcs, maintanence etc.) i jakoś obiektywnie punktować konkretną ścieżkę umiejętności jak w prawdziwm RPG. Pomysł szalony, ale gdyby coś takiego istniało, wiele konfliktów możnaby uniknąć. + Pewnie każdy by sobie wpisał że ma 100 wszędzie :D