Śmierć inżynierii oprogramowania
Śmierć inżynierii niekoniecznie jest czymś złym…
Podczas całej mojej kariery programistycznej, do diabła, mojego życia programistycznego, miałem do czynienia z językami programowania i maszynami, które pozwoliły mi napisać mniej niż idealny kod i uciec z nim. Gdy przeniosłem się do korporacyjnego świata programistów, spotkałem twoich programistów ze starej szkoły. Kiedy mówię oldschool, mam na myśli programistów COBOL.
Wiesz, co mówią o programistach COBOL-a: albo są na emeryturze, albo nie żyją (programiści COBOL-a zaczynają pisać twoje paskudne komentarze… teraz!). Ale poważnie, ci programiści zwiastowali początek rozwoju przedsiębiorstw i naprawdę pomogli zbudować IT jako branżę. Rozmawiałem więc z programistą COBOL-a i powiedział, że kiedy tworzy, musi martwić się o każdy fragment pamięci, który jest używany. Powiedział, że jest skrupulatny i może opowiedzieć ci o każdym aspekcie interakcji jego aplikacji z maszyną.
Teraz zastanówmy się przez chwilę, że mówił całą prawdę, ignorując zwykłe przechwałki programistów, a potem jest to dość niesamowite, biorąc pod uwagę, co programiści mogą zrobić z dzisiejszą technologią. Stworzyłem więc listę rzeczy, które moim zdaniem programiści uważają za oczywiste i odjęli inżynierskie aspekty tworzenia oprogramowania.
Zbieranie śmieci
Kiedy ostatnio martwiłeś się o przydzielanie i zwalnianie adresów pamięci? Wyrzucanie elementów bezużytecznych (GC) to jedna z tych rzeczy, o których jako programiści korzystający z nowszych technologii nie myślimy. Tworzymy obiekty, jakby wychodziły z mody, ponieważ jako programiści mówimy: „pamięć jest tania” lub „dżin GC sobie z tym poradzi”. W większości przypadków standardowy GC działa świetnie i możesz kontynuować tworzenie większej liczby obiektów.
Kod wielokrotnego użytku i OOP
Wiem, że bierzemy to za pewnik i próbowałem uczyć programistów COBOL OOP; to było bolesne. Fakt, że mogę stworzyć klasę, której można używać wielokrotnie w różnych aplikacjach i zespołach, jest świetny. Ile razy mam zamiar pisać klasę Adres? Problem polega na tym, że OOP może być nadużywany. Dziedziczenie to trudna sprawa i możesz ulec pokusie, aby dziedziczyć po klasie, która niekoniecznie pasuje do twojego drzewa dziedziczenia. Widziałem stare aplikacje, które nie mają koncepcji OOP, będąc całkowicie liniowymi; zazwyczaj istnieje jedna duża metoda Main z wywołaniami innych funkcji.
Świetny sprzęt
Deweloperzy zawsze chcą mieć maszynę, która za nimi nadąży, a dzięki dzisiejszej technologii masz właśnie to. Nie musisz martwić się o zasoby dla swojego programu. Bez pisania nieskończonych pętli lub zakleszczeń większość aplikacji będzie działać (nie świetnie, ale nadal działa).
Zintegrowane środowiska programistyczne i narzędzia produktywności
Visual Studio, Eclipse i inne IDE sprawiają, że tworzenie aplikacji jest dziecinnie proste. Narzędzia do generowania kodu i zwiększania produktywności jeszcze bardziej ułatwiają programistom pracę. Lubię IDE. Teraz spróbuj zakodować aplikację .NET w notatniku. Prawdopodobnie mógłbyś to zrobić, ale prawdopodobnie też byś się zastrzelił. Nie mogę też powiedzieć, jak bardzo kocham ReSharper; bez niego zawsze jest dziwnie.
Ramy
Większość języków jest dostarczana z jakimś frameworkiem, który pomaga szybciej pisać aplikacje. Wiem, jak działają stosy, kolejki i listy połączone, ale nie chcę ich pisać za każdym razem, gdy zaczynam nowy projekt.
Internet
Czy kiedykolwiek zacząłeś i zakończyłeś projekt bez wchodzenia do Internetu w celu znalezienia rozwiązania swojego problemu? Oczywiście nie! (Jeśli powiesz tak, dzwonię do BS). Wyobraź sobie dni rozwoju bez internetu; prawdopodobnie miałeś dużą, nieporęczną książkę wielkości półki na książki. Nie, dziękuję, lubię indeksowane i możliwe do przeszukiwania elektroniczne referencje.
Wniosek
Dlaczego więc mówię, że inżynieria oprogramowania jest martwa? Nie chodzi mi o to, że jest całkowicie martwy. Zawsze znajdą się tacy, którzy mają ducha inżynierii, ale jako branża przeszliśmy bardziej na mentalność linii montażowej. Dostajemy zadanie i oczekujemy, że je wykonamy, a najważniejszy jest termin.
Rzeczy, o których wspomniałem powyżej, pozwalają branży IT tak funkcjonować. Jako branża możemy produkować aplikacje, które nie są idealne, ale działają wystarczająco, aby zadowolić klientów. Aspekty takie jak wydajność i szybkość są niemal dyskusyjne przy dzisiejszej technologii.
Oczywiście, jeśli napiszesz kiepską aplikację, będzie to kiepska aplikacja. Inżynieria obejmuje metryki, a kiedy ostatnio słyszałeś o kimś, kto używa metryk w procesie tworzenia aplikacji? Śmierć inżynierii niekoniecznie jest złą rzeczą, ale jest sygnałem, że będzie więcej programistów, a mniej inżynierów oprogramowania.

![Czym w ogóle jest lista połączona? [Część 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































