Leren programmeren

Het ontwikkelen van technische dingen gaat nooit lineair. Daarmee bedoel ik dat je van tevoren nog zo goed je best kunt doen om precies op te schrijven hoe het eindproduct eruit moet gaan zien, en een hele gedetailleerde planning kunt maken, maar dat je onderweg altijd dingen tegenkomt die je niet had verwacht. Je komt altijd hobbels tegen waardoor je soms weken niet vooruit lijkt te komen, maar in andere lijkt te vliegen.

Bijvoorbeeld: wij zijn de jodiBooks Beauty app aan het maken. We hebben van tevoren precies opgeschreven wat de app moet kunnen en wat de gebruiker in ieder scherm van de app kan doen. Diana schat vervolgens in hoeveel werk het is. De basis van de app: 2 maanden, een inlogscherm: 1 week.

Doordat Diana een veel gebruikt framework (later meer) had gekozen, stond de basis er al na een maand. Ze leek wel te vliegen. Maar het inlogscherm viel dan weer enorm tegen. Daar is ze al weken mee aan het stoeien. We willen wel dat iedereen veilig kan inloggen.

React-Native code met terminal en Android simulator
De app lijkt al bijna af, maar onderhuids zit er nog een hoop niet goed.

Frustratie

In het kader van ons “radical-transparency policy” moet ik toegeven dat ik hier soms enorm gefrustreerd van raak. Omdat we allebei andere dingen doen binnen jodiBooks, moeten we er wel voor blijven zorgen dat we op dezelfde lijn zitten. Daar maken we een planning voor, die we iedere week bespreken. Ik gebruikt die planning om in zijn marketing aan te geven wanneer mensen iets nieuws van ons kunnen verwachten (“in september hebben we een app“). Als dit dan uiteindelijk niet klopt, voelt dat alsof je mensen aan het lijntje houdt.

Mijn eerste reactie is dan boos worden op Diana dat ze iets niet volgens afspraak af heeft. “Waarom hebben we dan een planning?”. Dat is natuurlijk helemaal niet eerlijk, want Diana werkt ook keihard. En ik weet zelf hoe het is, ik ben namelijk ook jarenlang engineer geweest. Je kunt niet perfect plannen. Er komen altijd onverwachte dingen voorbij.

Wij proberen hier altijd met elkaar eerlijk en transparant over te praten. Dat is zeker niet makkelijk, maar het is veel beter dan met je frustraties te blijven lopen. Ik kan het iedereen aanbevelen, want je leert een hoop over jezelf. In dit geval:

De frustratie die ik voel, komt vanuit een gevoel van machteloosheid. Ik kan niet programmeren, dus ik kan niet helpen. jodiBooks is wat dat betreft volledig afhankelijk van Diana. Het probleem zit dus bij mij: ik wil meer dan Diana kan.

Ik vertel er uitgebreider over op mijn eigen blog: joeplaa.com.

Oplossing

Nu we dus het echte probleem hebben gevonden en benoemd, kunnen we naar oplossingen gaan zoeken. In onze ogen waren dat er 3:

  1. Joeps verwachtingen temperen.
  2. Iemand inhuren om de app te maken.
  3. Joep gaat leren programmeren.

Heel eerlijk, maar oplossing 1 is geen optie. Ik heb zoveel ideeën en ben zo enthousiast, daar ga ik ongelukkig van worden. Optie 2 zou een reële optie zijn. Diana had daar ook een hoop van kunnen leren, maar hebben we het geld ervoor over? Eigenlijk niet.

Dan blijft optie 3 over. Ik moet zelf leren programmeren, zodat ik kan helpen met het maken van de app. Een ander voordeel ten opzichte van optie 2 is dat ik daarmee ook beter leer begrijpen hoeveel werk “het” is. En dus leer begrijpen waarom de planning van Diana soms niet klopt.

Cursus programmeren

Ok, dus ik ga leren hoe je een app moet maken. Dan is het wel handig om te weten naar wat voor cursus ik op zoek moet. Laat ik daarom even kort uitleggen hoe jodiBooks Beauty is opgebouwd.

Je kunt jodiBooks grofweg opsplitsen in een back end en meerdere front ends. De back end is de database met software eromheen die bepaalt wie er bij de data mogen en welke data dan: “Een gebruiker die betaald heeft? Ja, die mag erin en dit is haar data.” Deze backend heeft Diana, met behulp van verschillende frameworks, gebouwd in de programmeertaal C#. Ze vertelt meer over die frameworks op haar eigen blog: dianakoenraadt.nl.

De front end, het stuk wat je als gebruiker ziet, bestaat uit 2 delen: de website en de app. Voor de website gebruiken we de frameworks Bootstrap en jQuery. De app wordt gebouwd met React Native en Redux. Al deze frameworks maken gebruik van de programmeertaal JavaScript.

Voorbeeld van een JavaScript oefening op freecodecamp
Joep leert JavaScript op freecodecamp.org

Aangezien Diana mij al had geleerd om met Bootstrap te werken en om schermen te maken in React Native, leek het ons het efficiëntst om een cursus JavaScript te zoeken. Na een zoektocht langs allerlei betaalde cursussen, kwam ik uit bij freeCodeCamp.org. Dit is een non-profit waar je gratis online kunt leren hoe je een website en app maakt.

Wat heb ik geleerd

Ik kan deze website aan iedereen aanbevelen. En dan bedoel ik ook echt iedereen. Nouja, vooruit, iedereen die zelf een app of website wilt gaan maken. Schrik niet van de tijd die voor ieder deel staat. Voor ieder deel staat 300 uur. Ik ben 24 augustus begonnen en heb in 9 dagen deel 1-3 gedaan.

Dat betekent niet dat ik zo slim of snel ben. Ik heb gewoon de eindopdrachten overgeslagen. In die “grote” opdrachten ga je je eigen website en app maken. Voor mij is dat jodiBooks. Dus die grofweg 800 uur die ik nu geskipt heb, haal ik wel weer in 🙂

In deel 1 leer je hoe je een website maakt in HTML en CSS. Deel 2 leert je hoe je moet programmeren in JavaScript. En in deel 3 leer je hoe je HTML, CSS en JavaScript toepast in de frameworks Bootstrap, jQuery, Sass, React en Redux. Als dat niet perfect past… De training gaat nog verder, maar dan duik je al gauw in back end werk, zoals API’s en Microservices.

Diana en ik hebben, nu ik heb leren programmeren, afgesproken dat Diana zich gaat focussen op de back end en ik de front end ga bouwen. Diana zorgt er dus voor dat de app data krijgt, ik zorg ervoor dat die data op een mooie manier wordt weergegeven. We moeten nog zien of dat gaat werken, maar ik heb er zin in!

react-native code van het homescreen in Microsoft Visual code
React-native code van het homescreen in Microsoft Visual code

Leave a Reply