Bedste svar
Det virkelige svar er “Det afhænger!”. Det afhænger af, hvilken skive der interesserer dig mere – Front-end, Full-stack, Backend, Data-science osv. Grundlaget for alle disse kan uddrages som nedenfor:
- Vælg din favorit programmeringssprog. Og lær hvert koncept for dette sprog ved at øve dig i at bruge det i et eller andet kodeproblem. Dette vil lægge et godt fundament i at lære et andet programmeringssprog, selvom det er et helt andet paradigme. For at sætte pris på A skal du have en smag for B, for på en eller anden måde er alt relativt. Du vil begynde at sammenligne sprog baseret på, hvordan det løser nogle problemer.
- Lav kode Katas. Prøv at løse det samme problem på forskellige måder. Tænk gennem de forskellige tilgange, du har prøvet. Gør dette for hver anden kodekata, du laver. Det hjælper!
- Lav et mini-projekt, der løser nogle problemer. Besøg det igen efter et stykke tid, og se om du kan tilføje funktioner. Du burde sandsynligvis misbruge dig selv for det dårlige job, du gjorde. Dette er en god erkendelse. Tænk igennem dine fejl, tænk over, hvad der er den bedre måde, du tog. Lær af dine fejl. Dette er, hvad der er reel oplevelse. Erfaringen er ikke i antal, men hvad du lærer, når du arbejder igennem tingene.
- Vælg noget miniprojekt eller bibliotekskode fra Github, og læs koden for at se, hvordan et problem løses. At læse og tænke igennem andres kode hjælper en.
- Læs bøger, blogs osv.
- Start med at pennen dine tanker via blogs. Det hjælper din læring helt sikkert.
- Deltag i møder og konferencer for at få en viden om, hvad der sker omkring. Det kan fremkalde din læring. Når alt kommer til alt har vi alle brug for en dosis motivation og en følelse af formål fremkaldt fra tid til anden.
- Prøv at dele dine erfaringer i møder og konferencer. Det virker magisk på dig – seriøst.
Specielt tip: Sagde jeg, undervejs, at du sandsynligvis vil støde på mange jokere, der ville sap din energi og tid og afskrækker dig fra hvad du gør. At lære at skelne kritikere fra jokere er en enorm livredder.
Dette er hvad jeg gjorde siden starten af min karriere og fortsætter med at gøre det hele selv i dag.
Svar
Det afhænger af, hvad du mener med softwareingeniør. Den bedste ressource til softwareteknik, jeg har fundet, er erfaring. Hold med mig et øjeblik. De fleste svar her synes at være om programmering, og der er faktisk masser af fremragende ressourcer til programmering (med mange gode eksempler i svarene her). Jeg har altid følt, at problemet går i tre kategorier:
- Programmering. Vælg et rimeligt sprog til de slags problemer, du kan lide at tackle i dag. Lær det godt. Masser af øvelse. Masser af læsning af andre respekterede ekspertkoder. Skriv mere. Tilføj et sprog efter behov eller efter interesse.
- Algoritmer, datastrukturer, sammenlignende sprog og den videnkrop, der almindeligvis kaldes datalogi. Dette er hvad der løfter spillet fra at løse problemer i det lille til at løse store problemer, løse dem effektivt (ikke kun effektivt) og forstå grænserne for løsningerne, så du kan forklare dem.
- “Software engineering ”Er en anden ting for mig end de to ovennævnte ideer. Det er den proces, hvor software leveres til “kunder”. Det er konsekvent gentagelig pålidelig levering af løsningen. Det er forståelse for, at en GUI er god til at opbygge indledende proof-of-concept / prototype-løsninger på dit skrivebord, men utilstrækkelig til at levere til “produktion”. Det er forståelsen af leveringsrørledningen ved hvert trin, og hvorfor hvert trin udføres. Det er al automatisering og disciplin. Uden disciplin skaleres software ikke. Jeg har endnu ikke set et kursus om dette, for det meste er det uddannelse på arbejdspladsen. Og mange steder får dette forkert. Fejl er dyre.
Måske er den bedste metafor, jeg kan give dig, madlavning. Du kan lære at lave mad til dig selv ret hurtigt. Du kan blive god til en håndfuld opskrifter, og øvelse gør dig hurtig. Træd det op for at tilberede et smukt måltid til venner og familie, og du træder lidt ud af din komfortzone, måske har du brug for nye færdigheder, nye værktøjer, nye opskrifter. Tag en klasse eller to, så kan du dramatisk forbedre dit spil, og klasser spænder over alt fra natklasser på det lokale college til Le Cordon Bleu. Så er der trin til “restaurant”, der ændrer alt. Det handler nu om den pålideligt gentagelige levering af mad til folk med forventninger. Du kilde, batch, pre-stage, forberede og værktøj forskelligt. Processens “industrialisering” er “engineering”. Og du er nu en del af et team. Og der er en kunde. Ligegyldigt om du er en taco-stand eller en Michelin-stjerne restaurant, det er anderledes. Intet arbejde i klasseværelset forbereder dig fuldt ud til al læring på arbejdspladsen.
Og du kan begynde at lære alle tre på én gang. Forstå bare, hvilke af de tre færdigheder du arbejder på, og glem ikke de to andre færdigheds sæt. De to første har tendens til at komme med praksis, men den sidstnævnte kommer med erfaring.