Cel mai bun răspuns
Răspunsul real este „Depinde!”. Depinde ce felie vă interesează mai mult – Front-end, Full-stack, Backend, Data-science, etc. Bazele tuturor acestor elemente pot fi extrase ca mai jos:
- Alegeți-vă preferatul limbaj de programare. Și învață fiecare concept al acelei limbi practicând să o folosești într-o problemă de cod sau alta. Acest lucru va pune o bază bună în învățarea unui alt limbaj de programare, chiar dacă paradigma este complet diferită. Pentru a aprecia A ar trebui să aveți gust pentru B, deoarece într-un anumit sens totul este relativ. Ați începe să comparați limbile pe baza modului în care rezolvă unele probleme.
- Efectuați Code Katas. Încercați să rezolvați aceeași problemă în moduri diferite. Gândiți-vă la diferitele abordări pe care le-ați încercat. Faceți acest lucru pentru orice alt cod kata pe care îl faceți. Vă ajută!
- Faceți un mini-proiect rezolvând o problemă. Revizitați-l după ceva timp și vedeți dacă puteți adăuga funcții. Cel mai probabil ar fi să te abuzezi de tine pentru slaba treabă pe care ai făcut-o. Aceasta este o bună realizare. Gândește-te la greșelile tale, gândește-te care este cel mai bun mod pe care l-ai luat. Aflați din greșelile dvs. Aceasta este experiența reală. Experiența nu este în număr, ci ceea ce înveți pe măsură ce lucrezi prin lucruri.
- Alegeți un miniproiect sau cod de bibliotecă de la Github și citiți codul pentru a vedea cum se rezolvă o problemă. Citirea și gândirea prin intermediul altor coduri ne ajută.
- Citiți cărți, bloguri etc.
- Începeți să vă gândiți prin bloguri. Vă ajută învățarea cu siguranță.
- Participați la întâlniri și conferințe, pentru a obține un know-how despre ceea ce se întâmplă în jur. S-ar putea să vă inducă învățarea. La urma urmei, cu toții avem nevoie de o doză de motivație și un sentiment de scop indus din când în când.
- Încercați să împărtășiți învățăturile dvs. în cadrul întâlnirilor și conferințelor. Funcționează magic pe tine – serios.
Sfat special: Am menționat, pe parcurs, probabil că vei întâlni o mulțime de jokeri care ți-ar pierde energia și timpul, descurajându-te de la ce faci. Învățarea de a diferenția criticii de jokeri este un mare salvator de viață.
Asta am făcut de la începutul carierei mele și continuu să fac totul chiar și astăzi.
Răspuns
Depinde ce vrei să spui prin inginer software. Cea mai bună resursă pentru ingineria software pe care am găsit-o este experiența. Poartă cu mine o clipă. Majoritatea răspunsurilor de aici par a fi despre programare și există într-adevăr o mulțime de resurse excelente în programare (cu o mulțime de exemple bune în răspunsurile de aici). Am simțit întotdeauna că problema se împarte în trei categorii:
- Programare. Alegeți un limbaj rezonabil pentru tipurile de probleme pe care doriți să le abordați astăzi. Aflați-l bine. Multă practică. Multă lectură a codului altor experți respectați. Mai scrie ceva. Adăugați un limbaj după cum este necesar sau după cum doriți.
- Algoritmi, structuri de date, limbaje comparative și corpul de cunoștințe denumit în general informatică. Aceasta este ceea ce ridică jocul de la rezolvarea problemelor mici, la rezolvarea problemelor mari, rezolvarea lor eficientă (nu doar eficientă) și înțelegerea limitelor soluțiilor, astfel încât să le puteți explica.
- „Ingineria software-ului ”Este un lucru diferit pentru mine decât cele două idei de mai sus. Este procesul prin care software-ul este livrat „clienților”. Este livrarea consecventă și fiabilă a soluției. Înțelegem că o interfață grafică este bună pentru a construi soluții de probă-concepte / prototipuri inițiale pe desktop, dar insuficientă pentru livrarea în „producție”. Este înțelegerea conductei de livrare la fiecare pas și de ce se face fiecare pas. Este toată automatizarea și disciplina. Fără disciplină, software-ul nu se extinde. Încă nu am văzut un curs în acest sens, pentru că în cea mai mare parte este vorba de formare la locul de muncă. Și o mulțime de locuri greșesc acest lucru. Greșelile sunt costisitoare.
Poate că cea mai bună metaforă pe care ți-o pot oferi este să gătești. Puteți învăța să gătiți pentru dvs. destul de repede. Puteți să vă faceți bine la o mână de rețete și practica vă face să repezi. Încearcă să gătești o masă elegantă pentru prieteni și familie și ieși puțin din zona ta de confort, poate că ai nevoie de noi abilități, instrumente noi, rețete noi. Luați o clasă sau două și vă puteți îmbunătăți jocul, iar clasele se întind de la ore de noapte la colegiul local până la Le Cordon Bleu. Apoi, este pasul către „restaurant” care schimbă totul. Acum este vorba despre livrarea repetabilă în mod fiabil a alimentelor către persoanele cu așteptări. Sursa, lotul, pre-etapizarea, pregătirea și instrumentarea diferit. „Industrializarea” procesului este „inginerie”. Și acum faceți parte dintr-o echipă. Și există un client. Nu contează dacă sunteți sau nu un taco sau un restaurant cu stele Michelin, este diferit. Nicio cantitate de muncă în clasă nu vă pregătește pe deplin pentru toate învățările la locul de muncă.
Și puteți începe să învățați toate cele trei simultan. Înțelegeți pe care dintre cele trei seturi de abilități lucrați și nu uitați de celelalte două seturi de abilități. Primele două tind să vină cu practica, dar cea din urmă vine cu experiență.