Gdy przychodzi odpowiedzieć na pytanie czym się zajmujemy, każdy z Nas dość automatycznie i dumnie odpowiada, że jest programistą. Co poniektórzy dodają jeszcze z coś z zakresu swoich umiejętności. Programuje w .NET-cie, Java-wie, Web-ach itd. Ale czy mówiąc, że jesteśmy programistami to czy naprawdę rozumiemy kim jesteśmy? Czy rozumiemy różnicę pomiędzy programistą a programistą .NET-owym? Co daje Nam zmiana sposobu myślenia? Zapraszam do lektury.
Teza
Moja teza jest prosta – każdy z Nas gdy mówi, że jest programistą używa skrótu myślowego, który oznacza tak naprawdę, osobę piszącą programy w technologi .NET lub innej w zależność od specjalizacji. Gdy mamy rozwiązać pewien problem, pierwsza myśl jaka się nasuwa, to że zrobię to w .NET-cie z tą i tamtą biblioteką. Nawet, gdy myślimy czy jest sens pisać to w .NET-cie a może w Java-ie to i tak staramy się najpierw gdzieś umiejscowić logikę. Gdy słyszę, że ktoś programuje w PHP to od razu mam o nim zdanie, że piszę w językach skryptowych i na pewno nie wie co to OOP czy wzorce projektowe.
Co rozumiem pod pojęciem programisty?
Bycie programistą to sposób myślenia, polegający na tym, że naturalnie dążysz do wykonywania czynności jak do procesu składającego się z pewnych czynności, stanów, które można replikować, optymalizować, używać ponownie i zarządzać. Nie ma tu miejsca na język programowania.
Oczywiście na Wikipedii definicja programisty jest dobitna i mówi, że to osoba pisząca program dla komputerów ale taka definicja to jak napisać, że malarz to osoba, która zamalowuje powierzchnie różnymi substancji. Bleee.
Jeśli więc uznamy, że programista to osoba, która zamienia problem na pewnego rodzaju generyczną implementację czynności do wykonania to okaże się, że takie zachowanie widać praktycznie u każdego, prawie codziennie. Wybierając drogę do pracy programujemy się na kilka instrukcji warunkowych, optymalizując czas używając kalendarza zmuszamy siebie do wykonywania pewnych zadań a ich powtarzalność ma zapewnić nam spokój i przewagę.
Teoria możne się nie dla wszystkich okazać od razu zrozumiała jednak najważniejszym punktem, który chciałem podnieść to to, że wyrażenia programista i język programowania można spokojnie i wyraźnie rozdzielić. Mówiąc, że jesteśmy programistami powinniśmy czuć, że nie znajomość składni robi z Nas programistów a sposób podejścia do rozwiązania problemu. Język pełni tu role drugorzędną.
Dlaczego to takie ważne?
Dlaczego warto zrozumieć, że programowanie to nie składnia języka? To proste. Jeśli zaczniesz myśleć bardziej abstrakcyjnie, nie o składni o bibliotekach to zaczniesz widzieć szerszą perspektywę tworzonych rozwiązań. Staniesz się trochę architektem swoich własnych pomysłów.
- Przestaniesz nienawidzieć Javy : ) Sporo osób ma z tym problem i to ze strony Javy jak i .NET-u jedni nie lubią drugich i uważają ich za gorszych. Podejście do siebie i do wykonywanej pracy jak do z góry ustalonej mantry .NET dobry Java zła przestanie mieć racje butu. A będąc wolnym będziesz mógł szukać lepszych rozwiązań do swoich pomysłów. Usłyszysz, ze ktoś coś zrobił w Javie, zapytasz jaki algorytm zastosował a nie powiesz Java, Java do gówno, wolno działa.
- Przestaniesz z nie wiadomych sobie powodów dążyć do przekonywania innych o słuszności używania .NET-a w miejscach gdzie może będzie to zbędne. Robiłem tak na okrągło z zespołem od baz danych, co projekt starałem się jak najwięcej logiki przenosić do .NET-a, uważając, że procedury bazodanowe są zbędne, że nie da się ich utrzymywać i testować i że, .NET jest lepszy i tam można wszystko zrobić, bo są wzorce projektowe (kupa stresu). Wolność od wąskiego myślenia mnie uspokoiła (choć nadal uważam, że procedury są generalnie złe to już nie chcesz zamieniać każdej na kod C#)
- Zmieniając sposób myślenia odkryłem inny ciekawy motyw – od dłuższego czasu chodzę i udzielam się na Poznańskiej Grupie .NET, spotykamy się regularnie i uczymy się od siebie nawzajem. Jednak, gdy zrozumiałem, ze jestem programistą okazało się, że mogę chodzić również na JUG czyli Java User Groups, które organizuje spotkania w Poznaniu. Tak z Java-y ale co z tego wiedza to wiedza, nauka programowania jest przecież uniwersalna zgodnie z tym co napisałem wyżej. I tak chodzę teraz na 2 spotkania w miesiącu. Tak na marginesie ostatnio na JUG-u była ciekawa prezentacja Sławka Sobótki https://www.youtube.com/watch?time_continue=2&v=eu0_P0EYWag
- LINQ – tak, myśląc jak programista, można zmienić sój sposób kodowania. Naprzykład do problemów związanych z kolekcjami danych najpierw należało by podejść używając czystego SQL-a. Po napisaniu zapytania, które Nas interesuje, możemy je zaimplementować w LINQ-u. Taka mechanika daje Nam większą jakość zapytań i o wiele mniej błędów (szczególnie przy szerokim zakresie manipulacją danych)
Jeśli każdy jest programistą to nikt nie jest
Bycie programistą to jedno. Myślenie o sobie jako o programiście to drugie. W tej chwili rynek pracy wygląda tak, ze albo szukają gościa od Javy albo od .NET-a i pewnie jeszcze jakiś czas tak będzie. Jednak zamiast blokować się na inne rozwiązania tylko dlatego, ze jesteśmy przywiązani do innego, uwolnimy się od takiego wąskiego myślenia będziemy bogatsi i szczęśliwsi : )
Cóż poradzić, kiedy przez swoją uniwersalność C# nadaje się niemal do wszystkiego. I moje piękne koncepcje widzę od razu zrealizowane w .Net’cie ;-)
Musiałbym być długo przekonywany (i to ze wsparciem wykresów i tabel), że warto poświęcić miesiące czasu na naukę nowego języka. Nie kupuję koncepcji otwierania się na nowe „bo tak” – jako ojciec trójki dzieci nie mogę sobie pozwolić na naukę i „mastering” rzeczy bezpośrednio mi nieprzydatnych… Trochę szkoda. Ale takie realia.
Ciekawe podejście. Dzięki za komentarz. Mocno realne. Powiem tak, może w poście zbyt mocno naciskałem na naukę czegoś nowego. Nie o to mi do końca chodziło.
Proponuje tylko właśnie takie otwarcie się o którym piszesz, które ma ulepszyć Nasze działania w wiodącym języku. Tak jak pisałem, zacząłem chodzić na spotkanie Java-owe, bo dawało to możliwość zobaczenia pewnych rozwiązań. Świeżego powiewu wiedzy na te same problemy. Większość z nich i tak jest w .NET-cie. Ale dzięki otwarciu się zyskuje się doświadczenie i pewną elastyczność.
Nie przekonuje uczyć się Javy ani innego języka. Przekonuje do tego aby nie odrzucać pewnych możliwości płynących z tego, że mamy do czynienia z czymś innym.
Brzmi jakby autor po prostu trochę dojrzał (i wyrósł z fanbojstawa technologicznego:). To dość standardowy objaw osiągania wieku „seniorskiego” gdzie zdrowy rozsądek jest przed fancy technologiami i wzorcami projetkowymi.
Aha. Dzięki, potraktuje to jako komplement. Jednak jest to prawda troszeczkę człowiek dojrzewa na starość i może dlatego.
gdy ktoś pyta czym się zajmuję to odpowiadam że pisaniem na klawiaturze, i problem rozwiązany (:
No… za nisko się cenisz : )
Jesteś zwykłym zdrajcą .NETa, wiem o co Ci chodzi. Nie zrobisz mi sieczki z mózgu, nie poddam się tej propagandzie, Java jest zła i nikt tego już nie zmieni! A ja dalej będę walczył o czystość .NETa nie wypuszczając tej imitacji programistów z Javy do tego pięknego świata porządnej technologii! Javie mówimy stanowcze NIE!
Spoko : ) Każdy na prawdę reaguje na to w swój sobie znany sposób. Jednak nie ma co wybierać skrajności : )
Matrix has You