Kiedyś prowadzący ćwiczenia zaproponował napisanie czegoś jak NK. NK już istnieje, więc nie da się osiągnąć lepszego efektu, chyba że by nie była rozwijana. Jednak takie zadanie ułatwia określenie co jest przedmiotem projektu. Nie chodzi oczywiście o napisanie słowo w słowo NK ale serwisu społecznościowego, a konkretny przykład pozwala uniknąć uogólnień i godzin konsultacji co tak na prawdę jest do zrealizowania, kiedy można od razu zacząć ćwiczenia wiedząc do czego się zmierza i jaki mniej więcej efekt końcowy osiągnąć.
Programista to fach, w którym chętniej bierze się kilof do ręki i kuje tą skałę, zamiast zobaczyć czy ktoś już nie wykuł. Jednak ponieważ kucie w skale jest interesujące czasem tak robimy. Ponadto może się wydawać, że jakiejś biblioteki, modułu albo aplikacji nie ma. No cóź... zazwyczaj jednak jest i to zależy od naszych umiejętności szukania i researchu czy ją znajdziemy.
Kiedyś znajomy powiedział mi, w odpowiedzi na pytanie czemu w Linuxie jest tyle programów gdzie każdy realizuje tylko jedną rzecz, odparł , że taka jest filozofia tego systemu, żeby napisać pojedyncze aplikacje, które realizują idealnie jedną konkretną funkcję. Od tamtej pory uważam, że tak właśnie powinno być nawet na większą skalę i w dowolnym projekcie: rozwijasz jeden produkt i starasz się go udoskonalić. A jeżeli potrzebujesz jakiegoś pomocnego narzędzia: korzystasz z softu od firmy, która takie narzędzie dostarcza.
Czemu więc polegać na oprogramowaniu od innych dostawców? Jeżeli firma zajmuje się też jednym produktem od lat to jej oprogramowanie jest dopracowane, nie ma zazwyczaj błędów a jeżeli takie się pojawią będziesz miał pewność, że zostaną naprawione. A samemu pisząc coś co jest gotowe można się przeliczyć, bo:
- nie będzie tak dobre jak gotowe rozwiązanie
- koszty mogą przewyższyć koszt zakupu
Pamiętajmy przecież, że pisząc coś co jest już gotowe, marnujemy czas który byśmy mogli poświęcić na napisanie programu, którym moglibyśmy rozwiązać czyjś rzeczywisty problem!
Także pisanie czegoś co zostało już napisane to marnowanie czasu. Jeżeli popatrzyć na eksperyment Stanfordzki czy to, że innowacyjne produkty powstały na studiach, postulat o tym, że na uczelniach powinno się pisać coś co zostało już napisane, też jest mylny. Facebook, DOS i inne ważne rozwiązania miały swój początek na studiach. Gdyby Mark albo Bill w czasie studiów musieli pisać kolejną wersję assemblera to nie mielibyśmy takiego rozwoju IT dzisiaj.
Oczywiście nie każdy jest Markiem czy Billem, ale jednak każdy ma potencjał, umiejętności i wiedzę i powinien starać się z niej korzystać, aby pomagać innym. Pisanie klonów nie pomaga nikomu.