Moje wykształcenie to inżynieria elektryczna, a dokładniej DSP. Firma, w której obecnie pracuję, wykonuje wiele różnorodnych projektów, głównie budując sprzęt analogowy. Będąc nieco bliżej komputerów niż wszystkich innych tutaj, często piszę kod zarówno dla urządzeń wbudowanych (co jest w porządku), jak i systemu operacyjnego Windows lub Linux. To ten ostatni jest dla mnie terytorium obce.
Potrafię kodować i znam kilka języków (C / C ++, Java, niektóre VB.NET), ale używałem ich tylko do symulacji algorytmów w przetwarzaniu sygnałów i obrazów, sieciach neuronowych i innych podobnych aplikacjach. Dla mnie programowanie było przede wszystkim narzędziem obliczeniowym. Dostaję jednak coraz więcej projektów, w których muszę pisać właściwe, pełnowartościowe oprogramowanie, i tak naprawdę nie wiem, jak to zrobić, ponieważ nigdy nie musiałem tego robić i nigdy nie byłem wystarczająco zainteresowany. Widziałem wielu inżynierów, którzy do pewnego stopnia zmienili się na programistów z powodu wymagań pracy, a większość z nich nie była świetna w tym, co robili. Jestem pewien, że wiele osób spotkało to samo.
Jeśli miałbym nauczyć się pisać odpowiednie oprogramowanie z dobrym interfejsem użytkownika, dobrą architekturą wewnętrzną i tak dalej, jak to zrobić? Nie mamy w pracy nikogo, kto mógłby mi powiedzieć, co jest dobrą praktyką, a co nie. Biorąc pod uwagę, że potrafię pisać kod w najgłębszym tego słowa znaczeniu, co jeszcze można wiedzieć o pisaniu dobrego oprogramowania i jak się tam dostać na własną rękę?