Podstawa to trzymanie się konwencji. W ciągu lat wypracowałem styl pisania obejmujący zarówno wizualne, jak i funkcjonalne zasady mówiące, jak realizować konkretne zadania. Jako przykład mogę podać konsekwentne stosowanie
null do oznaczania, że metoda, która powinna mi zwrócić określoną wartość, nie posiadała jej. Jeśli założenie było takie, że nie można nic nie zwrócić, wtedy zamiast null idzie wyjątek. Moim zdaniem jest to punkt wyjścia do dalszych rozważań - jeśli dwa skrypty napisane są według kłócących się ze sobą konwencji, ciężko mówić o ich elastycznym połączeniu.
Druga rzecz to projekt i wiedza o tym, co chcę osiągnąć. Analizuję, w których miejscach daną funkcjonalność będzie można rozszerzać i czy powinno to być rozszerzanie statyczne, dynamiczne czy jakieś inne. Kluczowe jest zrobienie odpowiedniego modelu interakcji między elementami oraz wyobrażenie sobie, jak całość powinna działać. Oczywiście po drodze także odpowiadam na pytanie, czy przy okazji nie zarżnę też wydajnościowo kodu, bo akurat jestem jednym z tych programistów, którzy nie olewają optymalizacji, zwalając wszystko na szybsze komputery, co nie do końca jest prawdą, jak się okazuje z teorii złożoności obliczeniowej i paru prostych przekształceń matematycznych

.
Dopiero na końcu dobieram narzędzia: obiektówka, klasy, interfejsy, dobór wzorców projektowych, projektowanie odpowiedniego API.
To są narzędzia, a narzędzi można poprawnie użyć tylko wtedy, gdy wiemy, do czego dążymy. I jeśli wszystko zostało zrobione, jak należy, to dodanie nowych pól do tabelki ogranicza się do edycji jednego pliku

.