Mimowolnie zostanie programistą: jak zrobić to dobrze? [Zamknięte]


21

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ę?


Jeśli podałeś nam język, którego używasz, być może będziemy w stanie udzielić Ci bardziej szczegółowych odpowiedzi. Z drugiej strony byłoby to sprzeczne z ogólną odpowiedzią.
Sardathrion - Przywróć Monikę

2
Bez formalnego szkolenia lub bezpośredniego doświadczenia zawodowego z mentorem robienie rzeczy we właściwy sposób ™ nie będzie realistyczne. Uczysz się. Istnieje powód, dla którego informatyka i inżynieria odchodzą od elektrotechniki. Rozsądna firma zatrudni inżynierów oprogramowania do pisania interfejsów aplikacji, sterowników aplikacji, a nawet oprogramowania układowego, ponieważ chcą jakości i chcą, aby było to zrobione właściwie i aby było możliwe do utrzymania. Wyjaśniłbym twojemu szefowi, że to, co robisz, wykracza nieco poza twoje doświadczenie i że zadania te najlepiej pozostawić inżynierom oprogramowania.
wałek klonowy

4
... Chcę również dodać, że nie sądzę, aby twoja sytuacja była tak „mimowolna”, jak podajesz w tytule. Sam powiedziałeś, że twoi rówieśnicy nawet nie wiedzą, jak korzystać z komputera, a mimo to musisz być mimowolnie inżynierem oprogramowania? To nie wydaje się sprawiedliwe. Pochwalam twoją umiejętność pisania znośnego oprogramowania i chęć uczenia się i robienia rzeczy we właściwy sposób, jednak nie wstydzę się przyznać swojemu szefowi i sobie, że niektóre rzeczy nie są w twoich możliwościach. Jeśli poważnie podchodzą do powierzenia ci tej roli, poproś ich, aby wydali na szkolenie dla ciebie.
wałek klonowy

@maple_shaft Zgadzam się z większością rzeczy, które mówisz; nigdy jednak nie powiedziałem, że moi rówieśnicy nie umieją obsługiwać komputera. Żaden z nich nie jest inżynierem oprogramowania, który potrafiłby mnie usiąść, ale wszyscy są biegli w posługiwaniu się komputerem. Nie mam problemu z kodowaniem, lubię uczyć się nowych rzeczy i nie mam z tym problemu.
Phonon,

6
@Phonon Świetnie, to dobre podejście, ale upewnij się, że Twoja firma kupi Ci książki, szkolenia i da ci czas na naukę, jeśli chcesz, abyś grał tę rolę. To wszystko co mówię. Tak wiele firm będzie próbowało cię oszukać, przekonując cię, że Twoim obowiązkiem jest zakup tych rzeczy dla siebie.
wałek klonowy

Odpowiedzi:


11

Jest kilka książek, które bardzo ci pomogą. Sugeruję, aby zawsze mieć przy sobie Kod ukończony . Jest to nieocenione odniesienie. W poprzedniej firmie, w której pracowałem, była to również książka, którą rozdawaliśmy każdemu młodszemu programistowi po tym, jak zostałem zatrudniony.

Pragmatic Programmer jest również bardzo przydatnym zasobem i jest dość krótki, ale sugeruję przeczytać go po zakończeniu kodu.

Te książki pomogą Ci zacząć, potem kod, kod, kod i kod więcej ... ale wiedz, kiedy przestać, twoje oprogramowanie nigdy nie będzie idealne.


6

Moja firma robi to cały czas ... i doprowadza mnie to do szału.

„Jestem programistą, jak zostać EE?”

Myślę, że odpowiedź jest dość oczywista. To zajmuje dużo czasu i ciężkiej pracy. I oczywiście odpowiednie materiały do ​​nauki. Doświadczenie inżynieryjne pomaga, na mojej uczelni CS i szkoły inżynieryjne były w tym samym budynku z dużym nakładaniem się. Istnieją algorytmy i podstawy matematyczne.

Błąd, który widzę, że popełnia większość nowych graczy, polega na tym, że gryzą o wiele więcej, niż potrafią przeżuć. Materiały do ​​nauki w interfejsie użytkownika, architekturze, kodzie jakości ... to dużo podstaw . Coś, co naprawdę zajmuje lata i często jest wykonywane przez zespoły różnych ekspertów w firmach programistycznych.

Nie mówiąc już, że nie możesz być całkiem przyzwoity, jeśli poświęcisz czas. Po prostu rozpoznaj wielkość materiałów, abyś nie przytłoczył siebie i A. Wyjdź lub B. Zbuduj poważny dług techniczny w swoich aplikacjach, wprowadzając znaczne skróty w procesie uczenia się.

Z tego powodu nie ma „złapać wszystko”, aby stać się niesamowitym twórcą dzięki tej książce. Radzę zacząć od wybrania dobrze ocenianej książki w najczęściej używanym języku, a także uczestniczenia w społeczności Stack, szczególnie w celu recenzji kodu.

Spróbuj Amazon.com, mają dobre recenzje książek.


3

Książki : najważniejsze jest czytanie (dobrych) książek w wybranym języku. Po zapoznaniu się z wybranym językiem możesz uzyskać „ Skuteczniejsze X” lub „Najlepsze praktyki Y” i tak dalej. Uważam, że książki kucharskie są bardzo dobre w wypełnianiu luk, które możesz mieć. Sądzę więc, że musisz zdobyć co najmniej trzy książki. Jedno: rób ćwiczenia i kata kodu, aby poprawić zrozumienie języka. Oczywiście potrzebujesz dobrego wzorca xUnit .

Algorytmy są szczególnie ważne i powinieneś wybrać książkę, która je szczegółowo opisuje - ponownie w wybranym języku. Wzory projektowe i anty-wzory są warte poznania we wszystkich językach.

Podsumowując: zajmuje to trochę czasu. Nie spiesz się.


+1, ale zawsze pamiętaj, że istnieje tylko jedna reguła, nie ma wyjątków: wszystkie reguły mają wyjątki.
Jan Hudec

@JanHudec: Który z nich miałeś na myśli?
Sardathrion - Przywróć Monikę

3

Wciągasz kodowanie. Tak.

Ale - to nie znaczy, że nie możesz dostarczyć oprogramowania, co sprawia, że ​​ludzie są szczęśliwi;)

Być pokornym. Napisz logikę „biznesową” , której potrzebujesz. Użyj kodu biblioteki do wszystkiego innego. Nie próbuj pisać podstawowych algorytmów (takich jak sortowanie tablic ), nie używaj żadnych „fantazyjnych sztuczek”, trzymaj się drakońskiej konwencji kodu.

Użyj dobrego IDE. Jest to niezbędne, ponieważ pomoże ci sformatować kod i śledzić literówki / proste błędy.

Czytaj książki takie jak „ Code Complete ” i „ Pragmatic Programmer ”, spróbuj zmusić się i uczyć się OOP (jest to proste i pomoże ci utrzymać kod łatwiejszy w utrzymaniu).

Używaj SVN , często zatwierdzaj - abyś mógł cofnąć zmiany (kiedy coś zrujnujesz).

Znajdź kogoś, kto jest prawdziwym programistą , z wykształceniem akademickim, jeśli to możliwe. Będziesz mógł z nim rozmawiać, dzieląc się nowymi problemami i otrzymując pouczające odpowiedzi.

I oczywiście najważniejsze jest, aby nadal kodować, kodować, kodować .


ps: jeśli potrafisz napisać działający kod C ++ i piszesz sieci neuronowe (!) - wtedy twój mózg dobrze nadaje się do programowania;) Powodzenia!


2

Tutaj są dobre odpowiedzi.

Duży obrót na twoją korzyść to prosty fakt, który chcesz wiedzieć.

Wiele inżynierii oprogramowania (którą oczywiście powinieneś zachować ze zdrowym sceptycyzmem) polega na tym, jak to zrobić w sposób, którego później nie pożałujesz. Jednym z przykładów jest zastosowanie systemu kontroli wersji kodu źródłowego. Innym jest podział kodu na pliki, aby łatwiej było nad nim pracować fragmentarycznie. Kolejnym jest upieranie się w kwestii porządku - konwencji formatowania kodu i nazewnictwa. Dokładne konwencje nie mają tak wielkiego znaczenia, jak spójność.

W ten sposób, kiedy wrócisz do kodu za rok lub dłużej, nie pomyślisz: „Kto popełnił ten bałagan?” Będziesz mógł znaleźć rzeczy i zmienić je bez nadmiernego ryzyka uszkodzenia. **

Dobrym sposobem na rozpoczęcie jest znalezienie różnych przykładowych programów i ich przeglądanie. Następnie możesz dostosować je do swoich potrzeb.

** Jednym z moich największych problemów jest próba pracy z kodem napisanym przez osoby, które nie uważały, że formatowanie lub nazewnictwo mają znaczenie.


1

Podczas gdy istnieje wiele dobrych zasobów na temat tego, jak robić i nie robić rzeczy, w końcu najważniejsze jest zobaczenie dużego kodu i praca z nim oraz przekonanie się, jak łatwe lub skomplikowane jest utrzymanie go dla siebie.

Dobrym sposobem na nauczenie się jest zdobycie doświadczenia w przygotowaniu wstępnego projektu, a następnie przejrzenie kodu i pokazanie przydatnych technik, które są dla niego przydatne. Jeśli więc przypadkiem uda ci się przekonać swoich szefów do zatrudnienia przynajmniej jednego inżyniera oprogramowania z doświadczeniem w prowadzeniu (małych) projektów oprogramowania i projektowaniu oprogramowania do kierowania projektami, myślę, że byłaby to najlepsza opcja.

Jeśli nie możesz zmusić nikogo, by cię wypoczął, istnieje obecnie silny ruch open source. Być może korzystasz z niektórych narzędzi open source w swojej pracy, więc spróbuj je naprawić lub dodaj proste funkcje, których używasz, i przedyskutuj, jak to zrobić z odpowiednią społecznością. Jest to nieprzydatne ćwiczenie praktyczne, aby dowiedzieć się, jak stosować ogólne zasady, które znajdziesz w książkach na temat rzeczywistych problemów praktycznych.


0

Jedną rzeczą, którą naprawdę poleciłbym do nauki jakości kodowania i zagadnień związanych z architekturą, byłyby nauki „Wujka Boba” (Robert Martin). Ma kilka filmów o wartości 1 USD, które są ładnie małe, a nawet zbyt kapryśne, a także kilka dobrych książek.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.