Do wspomnianych trendów dodam jeszcze jeden, który IMHO je wyjaśnia:
Potrzebnych jest znacznie więcej programistów niż kiedykolwiek.
Ilość zadań wymagających lub obejmujących programowanie stale rośnie i jest jeszcze szybsza niż liczba programistów. Obecnie w przeciętnym samochodzie jest kilka mikroczipów. Za 5 lat może być chip w lodówce i tosterze. Za 10 lat twoja bielizna? ... I ktoś musi wyprodukować całe to oprogramowanie, żeby te działały. Dlatego dokładamy wszelkich starań, aby zautomatyzować wszystko, co jest zautomatyzowane, i poprawić „produktywność” (jakkolwiek jest to zdefiniowane). I rekrutuje się coraz więcej świeżych mózgów.
Oznacza to, że większość dzisiejszych aktywnych programistów jest niedoświadczona i / lub źle przygotowana do pracy. Osiągnięcie odpowiedniego poziomu doświadczenia zajmuje kilka lat i ciągłe uczenie się, aby się tam utrzymać. Najważniejsze jest to, że coraz więcej zadań związanych z programowaniem staje się coraz trudniejszych. Ale wciąż jest wystarczająco dużo wyzwań dla każdego, kto ich szuka .
Pozwól, że zagram adwokata diabła przeciwko twoim punktom powyżej:
Nie poświęcanie czasu na wdrażanie najlepszych praktyk
Wiele osób tego nie robi, wiele osób tak robi. Dziesięć lat temu, kiedy po raz pierwszy odkryłem testy jednostkowe i zwinne podejście, żaden z moich kolegów nie miał najmniejszego pojęcia, co to jest. Obecnie jest to prawie standardowy materiał na uniwersytetach, więc wielu świeżo upieczonych absolwentów już to rozumie.
Maksymalne wykorzystanie kodu osób innych osób (kod niestandardowy jako zobowiązanie)
W przeciwieństwie do czego? Nowe podejście do koła? A może używasz kodu innej osoby, aby tego uniknąć?
Myślę, że ważne jest, aby pamiętać, że zarabia się (głównie) na rozwiązywaniu problemów, a pisanie kodu to nie koniec, tylko środki na to . Jeśli problem można rozwiązać bez napisania jednego wiersza kodu, nadal cieszy klienta. Zwłaszcza jeśli w ten sposób uda nam się stworzyć bardziej niezawodne rozwiązanie szybciej i taniej. Nie widzę z tym żadnego problemu.
Używanie coraz wyższych języków w celu poprawy wydajności
W przeciwieństwie do kodowania wszystkiego w asemblerze? ;-)
„Narzędzia” programistyczne oparte na GUI, które znacznie upraszczają „programowanie” i nie wymagają od ludzi rozumienia hydrauliki stojącej za kodem
IMHO dowolne narzędzie może być niewłaściwie użyte. Co nie znaczy, że konstruktory GUI były z konieczności doskonałe, a nawet dobre - większość (lub przynajmniej niektóre) z nich można wykorzystać w granicach swoich możliwości. Ale jeśli ktoś nie zna tych ograniczeń, czy jest to problem narzędzia lub jego użytkownika?
Ogólnie rzecz biorąc, uważam (choć nie ma na to dowodów), że w czasach kart dziurkowanych i kodów maszynowych, mniej więcej tyle samo części istniejącego kodu było okropne jak teraz, tylko oba
- ogólna ilość kodu, oraz
- szanse osób postronnych na zobaczenie takiego kodu
było znacznie mniej.
Teraz dzięki Internetowi i Daily WTF z dnia na dzień jesteśmy narażeni na najgorsze przykłady. To trochę tak, jak oglądanie wszystkich wiadomości o terroryzmie i trzęsieniach ziemi i rozwodach celebrytów oraz płacz, jak niebezpieczny i niemoralny stał się ten świat.