Ik begon met programmeren toen ik op de middelbare school zat. Ik heb onder andere Pascal en HTML geleerd. Maar ik volgde ook enkele zomerprogrammeerlessen in een IT-instituut. Daar leerde ik Visual Basic en het ontwerp van software en databases (in die tijd gebruikten we MERISE (Méthode d'Etude et de Réalisation Informatique pour les Systèmes d'Entreprise)). Uiteindelijk kreeg ik Visual Basic op mijn thuiscomputer geïnstalleerd en begon zelf te oefenen, met boeken.
Maar pas nadat ik afstudeerde aan de middelbare school, begon ik C# bijna fulltime te leren en te gebruiken tijdens hogere studies. Dat is wat ik beschouwde als mijn echte start in programmeren en software-engineering.
Ik heb het afgelopen decennium een paar lessen geleerd en ik dacht dat ik even de tijd zou nemen om mijn gedachten over deze dingen te verzamelen. Het kostte me ongeveer tien jaar en veel experimenteren om een deel hiervan te achterhalen.

 

1. Het leren van een programmeertaal is het makkelijke gedeelte: wees bewust en pas op voor de platforms
Neem bijvoorbeeld C#. Het leren van de C# taal is niet moeilijk. Als je de basisprincipes van computertaal al goed begrijpt en als je enige ervaring hebt met andere objectgeoriënteerde talen, kun je binnen een paar dagen een bekwame C#-programmeur worden, althans wat de taal zelf betreft. De echte prijs die je voor het leren moet betalen, is echter niet over de taal, maar over het platform. Om te ontwikkelen met C# op .NET, moet je weten:
- het .NET-framework
- een of meer .NET-technologieën zoals ASP.NET of WPF
- en de ontwikkelomgeving van Visual Studio.
De tijd die nodig is om bekwaam te worden in .NET-ontwikkeling wordt meestal gemeten in maanden, zelfs voor een ervaren ontwikkelaar. Een platform leren is altijd duurder dan het leren van een specifieke taal, daarom is het kiezen van het platform de meest cruciale beslissing.
Leren heeft altijd kosten en deze kosten zijn een van de belangrijkste factoren waarmee je rekening moet houden bij het kiezen van de technologie die je wilt leren. De echte kosten van leren zijn in de tijd, leren kost altijd tijd. Omdat je niet de tijd hebt om alles te leren, is het belangrijk om strategisch na te denken over wat je wilt leren. En aangezien de talen eenvoudig zijn, zijn het de platforms waar je voorzichtig mee moet zijn: de technologieën die verband houden met de taal, de ontwikkelings- en implementatietools, de besturingssystemen en andere infrastructuren.

 

2. Ik herhaal, het leren van een programmeertaal is het makkelijke gedeelte: de onderliggende concepten van software engineering begrijpen
De syntaxis zelf, de woorden die je gebruikt bij het toepassen van de taal zijn relatief eenvoudig en je kunt ze gemakkelijk onderweg oppikken. Dat is echter verre van voldoende voor het produceren van kwaliteitscode, die vaak betrekking heeft op OOP, TDD, BDD en SOLID principes, unit testing, ontwerppatronen en andere technische concepten die buiten het bestek van dit artikel vallen. Nou ja...

 

3. Eigenlijk is het schrijven van code slechts een (klein) onderdeel van het werk
Een software-ingenieur is vaak betrokken bij technologisch onderzoek, configuratie van tools en projecten, DevOps- en beheertaken, debug en test procedures, documentatie en technische schuld (codecorrectie en refactoring bestaand). Ook moet hij nadenken over oplossingen en systemen ontwerpen: soms wordt het belangrijkste werk gedaan terwijl we niet achter het toetsenbord zitten.

 

4. Bewezen en effectieve recepten: oude en saaie technieken zijn soms de beste
Het is niet echt "oud tegen nieuw", of zelfs "cool vs saai", maar eerder de techniek waarmee je de meeste ervaring hebt. zoals het gezegde gaat, vertrouw ik niet de ontwikkelaar die één keer 1000 technologieën heeft beoefend, maar ik vertrouw de ontwikkelaar die de relevante technologie 1000 keer heeft beoefend. Als het doel is om zo efficiënt en snel mogelijk iets te bouwen, zou het productiever zijn om de technologieën te gebruiken die je het beste beheerst.
Een van mijn contacten verdient bijvoorbeeld $ 25.000 per maand met een SaaS die hij bouwde met een saaie combinatie: ASP.NET + SQL Server + Angular 1 omdat dit de technologieën zijn die hij het beste kende. hij host het op Windows omdat hij weet hoe Windows snel en veilig moet worden gemaakt. Hij slaagde erin door zich al zijn tijd te concentreren op het bouwen van de functies waar klanten om vroegen, in plaats van de populairste technologieën te leren.
Het is belangrijk om te beseffen dat de technologische loopband nooit stopt. Er zijn altijd nieuwe dingen te leren. Er is mogelijk een ander JavaScript-framework vrijgegeven terwijl je dit leest. De geavanceerde technologie van vandaag bestond niet eens toen ik begon (EF Code First, Xamarin, ASP.NET Core, Razor), en dit brengt ons bij de 2 volgende punten.

 

5. Focus op duurzame technologieën
De enige constante ter wereld is verandering. Tijd en Actie Management is met name een belangrijke vaardigheid onder ontwikkelaars, vooral omdat we ons op een technologische loopband bevinden die blijft bewegen of zelfs versnellen.
Zo worden webtechnologieën die rond het jaar 2000 populair waren (Flash, ASP Classic en Java Applets) bijna verouderd en steeds minder verhandelbaar. Vandaag hebben we het over ASP.NET Core, SignalR, Angular2, React en VueJS. Geen van de technologieën bestond in 2000 en deze nieuwe technologieën zullen waarschijnlijk binnen 10 jaar verouderd zijn.
Wat is er niet echt veranderd? De grondbeginselen van talen zoals C++ / C#, hun implementaties van algoritmen en hun principes zijn na enkele decennia nog steeds relevant. Als je de basis van een stabiel systeem onder de knie hebt, kun je je beter aanpassen aan veranderingen, je zou het kunnen waarderen en het kunnen gebruiken om te evolueren.

 

6. Balans tussen exploratie en exploitatie
Verkenning gaat over het leren van nieuwe dingen, het bestuderen van nieuwe technieken, het lezen van boeken, het bekijken van video-tutorials, het oefenen en verbeteren van vaardigheden. Exploitatie is echter om te profiteren van wat we al weten om echte problemen op te lossen. Het gaat erom creatief na te denken over manieren om de kennis die we al hebben te gebruiken om waarde te creëren voor anderen.
Dus ja, beide taken zijn zowel noodzakelijk als belangrijk. Het risico is te veel op een van deze activiteiten te focussen.
Met te veel exploratie bereikt je nooit een nuttig niveau van expertise in de gekozen technologie. Er zijn enorme opportuniteitskosten voor dit soort licht leren, want hoewel het je geest verruimt, impliceert de tijd die het kost dat je de vaardigheden die je al hebt verworven niet echt verbetert.
Aan de andere kant kan te veel uitbuiting je ervan weerhouden om te evolueren in nieuwe technologieën en kan het je kansen op werk beperken.

 

7. Het is gemakkelijk om uitstekend te zijn... Het is moeilijk om consistent te zijn.
Het is gemakkelijk om 2 minuten geweldig te zijn. Het is moeilijk om constant geweldig te blijven, elke dag.
Als je een goed idee hebt voor een nieuw project, heb je een groot verlangen om te beginnen met onderzoeken, ontwerpen en programmeren. Je voelt je haast om je idee om te zetten in iets echts en je wordt superproductief. Maar het probleem is dat deze motivatie na verloop van tijd vervaagt.
Ja, het is leuk en het is gemakkelijk om nieuwe ideeën op te doen en ermee aan de slag te gaan. Maar dan zijn er nog de inspanningen, de aanpassingen, de lancering, het onderhoud, de correcties, de verbeteringen, enzovoort. Over meerdere maanden. Dit is waar het moeilijk wordt. Het is moeilijk om maanden en jaren op hetzelfde idee gefocust te blijven. Het vergt veel discipline.
Het is gemakkelijk om uitstekend te zijn. Het is moeilijk om consistent te zijn.

 

8. Diversifieer jouw vaardigheden
Wees niet zomaar een "programmeur", word een "expert die programmeert", een expert op een ander relevant gebied waar je een passie voor hebt. Je kunt een ondernemer, een projectmanager, een big data-wetenschapper, een onderzoeker, een beveiligingsspecialist, enz. zijn. Als je een expert bent die programmeert, heb je naast het kunnen programmeren (misschien fulltime), ook een extra geloofwaardigheid die gerelateerd is aan iets anders dan software-engineering.
Vandaar het belang van hoger onderwijs. Als je naar de universiteit gaat en je weet al hoe je moet programmeren, leer je waarschijnlijk niet veel over programmeren. Dat betekent niet dat je niet naar dit soort scholen moet gaan. Je hebt wat cultuur nodig en universiteiten zijn geweldige plekken om dat te krijgen. Je verwerft cultuur door de wereld die mensen hebben gemaakt te bestuderen en te begrijpen, vanuit verschillende invalshoeken. Dit soort kennis zou moeilijk te verwerven zijn als je niets anders studeert dan programmeren.

 

9. Kies je niches om op te vallen
Hoe kleiner de niche die je kiest, hoe groter de kans dat je wordt gezien als een opvallende verschijning in jouw vakgebied. Het is voor ontwikkelaars bijvoorbeeld erg moeilijk om op te vallen met een titel als "PHP Webontwikkelaar ". Ze zijn gemakkelijker te vervangen omdat er zoveel andere mensen zijn met vergelijkbare vaardigheden. Het veld is te breed om je gemakkelijk te onderscheiden van de massa. Als je daarentegen bekend wordt om een niche, zoals Xamarin.Forms of JavaScript-visualisaties, is de kans veel groter dat je waardevol bent voor mensen die specifiek op zoek zijn naar die vaardigheden.

 

10. Tijdperk van vaardigheden
Informatie is de specifieke kennis die je nodig hebt om problemen op te lossen. Vaardigheden vertegenwoordigen het vermogen om oplossingen te implementeren met jouw kennis.
Wat maakt het verschil in een wereld waar de meeste kennis en tools bijna gratis zijn? De vaardigheden natuurlijk. We zijn niet langer een kennis gebaseerde maatschappij, we zijn een vaardigheden gebaseerde maatschappij. Er was een tijd dat bijna alle universitaire opleidingen een goede baan garandeerden. Nu is dit niet langer het geval. Niemand geeft om wat je weet. Mensen geven om wat je kunt doen. Ze betalen je om dingen te doen, niet om dingen te weten.

 

Leer programmeren in 10 jaar
Onderzoekers hebben aangetoond dat het ongeveer tien jaar (of 10.000 uur) duurt om expertise op een gebied te ontwikkelen.
De oplossing is doordachte oefening: Het is niet genoeg om dezelfde dingen keer op keer te herhalen, maar je moet jezelf uitdagen met een taak die je huidige vaardigheid overtreft, om het te proberen, om je uitvoeringen te analyseren en om alle fouten te corrigeren. Herhaal dan. En herhaal opnieuw. Het lijkt erop dat er geen echte snelkoppelingen zijn. Leren door te lezen is goed. Maar in de praktijk je handen vuil maken is beter. Leren door te doen is het beste.
Persoonlijk hebben kleine projecten en prototypes me echt geholpen om te verbeteren. Maar er zijn nog veel interessante dingen die we onder de knie moeten krijgen, dus laten we blijven leren.