Ik weet niet of het onderdeel van een mindset is, maar ik weet wel dat je de achterliggende systemen ruwweg moet kunnen doorzien.
Het hangt er van af hoe je er nu naar kijkt; als je vooral nog in de fase zit waarbij je 'magische tekst' zoals je het uit je hoofd geleerd hebt in een IDE inklopt en dan op "starten" drukt en hoopt dat het goed komt mis je een stuk basiskennis en dan is het toch wel praktisch om daar te beginnen met zoeken waarom je er nu nog zo een moeite mee hebt.
Ik neem aan dat je Windows gebruikt en daarmee nooit echt in aanraking gekomen bent met het gevoel dat alles wat er is een 'achterkant' heeft die ook gewoon door mensen gemaakt is en gewoon uit commando's, bestandjes en code bestaat. Wat je zou kunnen doen is als je tijd over hebt wat andere systemen te leren kennen. Het gaat dan niet perse om het kijken naar niet-windows, maar om het kijken naar patronen en systemen om je analytisch vermogen, of het 'doorzien' van systemen te testen.
Ik ben zelf op een dag (nouja, iets van 18 jaar geleden ofzo) lukraak begonnen, eerst met Forth op een iMac die stuk was en alleen nog maar in de OpenFirmware interface wou opstarten met een CLI. Het ging er niet zozeer om dat het ding het weer zou gaan doen, maar dat het niks kostte, er niks stuk kon gaan en het gewoon een beetje onderzoek/uit elkaar halen/doorzien werd.
Nu zal dat dan misschien wel een mindset geweest zijn, maar ik probeer er vooral een punt mee te illustreren. Je kan namelijk zoals Rob3 zegt prima iets leren, zoals iedereen de toetsen op een piano wel kan indrukken kan iedereen die kan schrijven ook wel letters op papier toeveren. Maar dat maakt je nog geen schrijver of dichter. Dat is niet anders met programmeren. De 'juiste functies' weten te gebruiken maakt je niks anders dan iemand die geleerd heeft waar je de punten en komma's behoort te zetten in een tekst.
Programmeren, of eigenlijk, software ontwikkelen (want dat is meer wat het is) gaat meer in je hoofd en met diagrammen en tekeningen en beschrijvende teksten dan met code. Ja, zonder code geen software, maar die code is slechts een resultaat van een ontwerp. Ik weet niet hoe je opleiding in elkaar steekt, bij veel opleidingen met een cruciaal programmeer-component proberen ze aan het begin een beetje het koren van het kaf te scheiden door mensen maar gewoon wat te laten maken. De mensen die overblijven hebben dan meestal het opvolgende jaar pas zaken als Software Engineering en Software Architecture. Je leert dan pas software te maken, patronen, algoritmen enz.
Misschien dat het bij jou beter andersom werkt. Eerst kijken wat je wil maken, en dat dan in een simpel diagrammetje (en als je een of andere constructie hebt waarbij je meteen al iets met GUI's moet doen ook een tekeningetje van je GUI) opschrijven wat je programma moet doen, waar het op moet reageren, wat voor beslissingen er genomen worden enz.
Op het moment dat je dan een casus voorgeschoteld krijgt, dan ga je die analyseren, en kijken wat het vraagstuk nou precies is. Dan kom je tot een paar kerntaken die het stuk software moet gaan uitvoeren, en die noteer je om te beginnen eens los van het verhaaltje. Daarna ga je kijken of er invoer en uitvoer is, en of er op bepaalde dingen gereageerd moet worden.
Stel dat je bijvoorbeeld twee keer een nummer moet invoeren, en dan de som van die twee nummers moet weergeven als uitvoer. Bijvoorbeeld:
"Jan en Sjaak werken bij een achtbaan, er zijn twee treintjes, maar ze mogen pas vanaf 10 passagiers vertrekken, en er kunnen maximaal 20 in. De treintjes moeten altijd tegelijk vertrekken, en per keer moet er genoteerd worden hoeveel mensen er tegelijk op de achtbaan zijn". Je opdracht is dan om een simpel programmaatje te maken waarbij Jan de mensen van zijn treintje in kan voeren en Sjaak die van de zijne.
Het is een beetje een slap verhaal, maar dat heb je vaak bij simpele opdrachten.
Je maakt dus een programmaatje dat twee nummers accepteert en dan als de invoer goed is een som van de invoer weergeeft. Maar alleen als allebei de invoeren een nummer tussen de 10 en de 20 is, want dat is de eis. Dan moet je dus twee keer een stukje invoer krijgen, twee keer een beslissing maken of het nummer wel tussen de 10 en de 20 is, en daarna pas een berekening uitvoeren (een simpele optelsom), en daarna uitvoer genereren. Dat klinkt allemaal wat simpel als het zo van je scherm af te lezen is, maar dat is een stukje analyse dat je op dit punt al wel zou moeten kunnen uitvoeren.
Als je op dit moment niet weet hoe je om invoer vraagt, hoe je invoer vergelijkt, hoe je invoer optelt en hoe je een resultaat weergeeft moet je inderdaad nog maar eens kijken of je het juiste vak uitprobeert ;-) Of je moet flink google belasten met al je vragen voor je antwoorden.
Stel dat je niet zou weten hoe je dit in Python doet, dan google je eerst Python IDE of Python coding tools. En daarna misschien Python introduction of Python syntax. Daarna zou je in elk geval een "Hello World" moeten kunnen maken. (Maar dat kan je ongetwijfeld al) Daarna ga je dan misschien kijken naar hoe je om input vraagt en dat in een variable opslaat, en hoe je kijkt of het nummers zijn of niet, en als het nummers zijn, hoe je er achter komt of ze groter of kleiner zijn dan bepaalde andere nummers, enz.
Als je iets simpels als dit zou kunnen uitvoeren en analyseren zou je het beste gewoon casussen kunnen opzoeken of verzinnen, en kijken of je een juiste analyse kan maken en een diagrammetje kan tekenen voor jezelf om te zien wat er moet gebeuren en wanneer.
Het makkelijkste is om dat even met een ruw Action/Activity Diagrammetje te maken (UML, dit is een van de eenvoudigste diagrammen. Je hebt een grote zwarte punt, dat is je startpunt, je hebt rechthoeken, dat zijn acties, je hebt ruitjes, dat zijn beslismomenten, en je hebt zwarte punten met een witte cirkel en een zwarte cirkel er omheen als eindpunt – hier kan je ALLE software mee uitwerken als diagram vannuit een actie/activiteit perspectief; zie:
Wikipedia: Activity diagram voor resources, zie StarUML voor een gratis (maar lichtelijk crappy) programma, of Visio of gebruik gewoon een pen+papier ofzo))
Als je moeite hebt met dingen als syntax: dat is gewoon een kwestie van oefenen. Syntax is niet programmeren, maar eerder het grammatica van het code schrijven. Daar is niet echt een 'klik' voor, maar eerder gewoon leren en gebruiken. Syntax is over het algemeen beperkt, je hebt een stel regels over hoe je dingen moet doen, en als je die kent kan je foutloos code schrijven. Foutloze code staat niet garant voor een foutloze werking; als je een foutloos stukje code hebt dat niks anders doet dan zichzelf afsluiten als het uitgevoerd hebt is je code wel goed, maar je programma zal op dat moment waarschijnlijk niet doen wat je graag had gewild ;-)
Nog wat anders, als je begint met programmeren kan je er van uit gaan dat het minimaal 1.5 Jaar kost voor dat je iets kan maken dat een klein beetje zinvol of praktisch is. Veel programma's die er simpel uit zien en je soms dagelijks gebruikt hebben maanden gekost om te maken door ervaren software engineers. Sommige programma's kunnen heel snel gebouwd worden, maar dat is dan weer om dat de makers veel ervaring + kennis hadden. Op het moment heb je waarschijnlijk geen van beiden, en het kost gewoon tijd om dat te ontwikkelen. Ook als je een 'klik' hebt. (Ik heb genoeg beginnende programmeurs gezien die een 'klik' hadden met programmeren en wel even zelf een CMS of ORM gingen bouwen na een jaartje bezig te zijn geweest – het liep nooit goed af).
Het enige wat je kan doen is of nu direct stoppen als je niet tegen de onzekerheid of hard werken kan, of doorgaan als je denkt dat je gewoon iets meer tijd nodig hebt om er te komen. Ik denk dat het het laatste is, want sommige mensen hebben gewoon een stukje inzicht nog niet dat net wat later komt dan bij anderen. Maar ik ken je natuurlijk niet, dus dit is slechts op basis van het stukje tekst op dit forum hier
Good luck!