De kneepjes van het vak leren Werk krijgen Een programma ontwikkelen
Er bestaan twee kampen in dit vakgebied: Applicatieontwikkeling en Systeemontwikkeling. Applicatieontwikkeling richt zich op het maken van programma's die een bepaalde behoefte van klanten vervullen. Dit varieert van apps voor mobiele telefoons en videospellen tot boekhoudsoftware voor grote bedrijven. Systeemontwikkeling richt zich op het maken en onderhouden van besturingssystemen met behulp van levenscyclus-ontwikkeling. Systeemontwikkeling heeft ook vaak te maken met netwerkprocessen en gegevensbeveiliging. Iedereen kan wel met een idee aankomen, maar een ontwikkelaar is in staat om deze ideeën om te zetten in iets concreets. Ook al wil je alleen maar werken aan de ontwerpaspecten van software, je zou toch enigszins bekend moeten zijn met coderen en in staat zijn om eenvoudige prototypes te maken. Er is een enorme hoeveelheid aan programmeertalen die je jezelf kunt leren. Een aantal van de meer bruikbare en belangrijke talen zijn de volgende:  C - C is een van de oudere talen die nog steeds worden gebruikt en staat aan de basis van de meeste andere talen in deze lijst. C wordt gebruikt voor het maken van low-level programma's, en staat dichtbij de hardware van de computer. C++ - Dit is de objectgeoriënteerde versie van C en de meest populaire programmeertaal ter wereld. Programma's zoals Chrome, Firefox, Photoshop en vele andere zijn allemaal geprogrammeerd in C++. Het is ook een erg populaire taal voor het maken van videospellen. Er is altijd veel vraag naar C++ ontwikkelaars. Java – Dit is een evolutie van C++ en wordt veel gebruikt vanwege de hoge mate van portabiliteit. Bijna elk systeem kan wel een Java Virtual Machine en daarmee ook Java software draaien. Het wordt veel gebruikt voor videospellen en zakelijke software, en wordt door velen gezien als een essentiële taal. C# - C# is een programmeertaal voor de Windows-omgeving en onderdeel van het .NET framework van Microsoft. Het lijkt erg op Java en C++, en als je Java kent dan kun je gemakkelijk overstappen naar C#. Deze taal is speciaal bedoeld voor ontwikkelaars van Windows software of Windows Phone software. Objective-C – Dit is weer een ander neefje van C en speciaal ontworpen voor Apple systemen. Het is immens populair voor het maken van iPhone en iPad apps. Het is een geweldige taal om als freelancer te leren. Python – Dit is een zeer gemakkelijke taal om te leren, een van de gemakkelijkste. Python is ook te gebruiken voor web-ontwikkeling. PHP – Dit is in de kern geen softwareontwikkeling, maar PHP is essentieel als je meer wilt doen met web-ontwikkeling. Er is altijd veel werkt voor PHP-programmeurs, maar dit is niet zo lucratief als softwareontwikkeling. De meeste boekhandels en bibliotheken hebben hele afdelingen die zijn gewijd aan programmeertalen, en daarnaast kun je natuurlijk ook via Amazon en andere e-tailers materiaal vinden. Een goed geschreven boek over programmeren zal waarschijnlijk de beste bron zijn die je kunt hebben, en kun je als snelle referentie gebruiken tijdens het werken aan projecten. Behalve boeken heb je ook nog het internet, een eindeloze schatkamer van handleidingen en gidsen. Zoek naar materiaal over de taal van je keuze op sites zoals CodeAcademy, Code.org, Bento, Udacity, Udemy, Khan Academy, W3Schools. Je hebt op zich geen afgeronde, hogere opleiding nodig om iets te kunnen bereiken in de softwareontwikkeling, maar het kan geen kwaad om een paar cursussen te volgen via een volksuniversiteit of opleidingscentrum. Dit biedt het voordeel van persoonlijke begeleiding, en je wordt uitgedaagd om problemen op te lossen waar je in je eentje misschien niet snel aan zou beginnen.  Lessen kosten geld, dus zorg ervoor dat je kiest voor kwaliteit, zodat je leert wat je wil weten. Hoewel veel ontwikkelaars in staat zijn geweest om de industrie binnen te komen alleen op basis van hun vaardigheden, kan je jezelf onderscheiden van de rest door een bachelor in computerwetenschappen te kunnen laten zien. Een dergelijke graad zal je een bredere kennisbasis bieden en de toegang tot aanvullende vakken zoals wiskunde en logica. Voor je probeert om werk te krijgen als programmeur is het verstandig om een paar eigen projecten te starten. Daag jezelf uit om problemen op te lossen met behulp van een programmeertaal van je keuze. Niet alleen zal dit helpen bij het ontwikkelen van je programmeervaardigheden, het staat ook goed op je CV.  Voorbeeld: In plaats van het kalenderprogramma van je besturingssysteem te gebruiken om je werk te organiseren, probeer je deze zelf te maken! Als je geïnteresseerd bent in het ontwikkelen van videospellen, werk dan aan eenvoudige games die niet teveel leunen op graphics of complexe bewegingen. Richt je in plaats daarvan op het maken van een leuk en uniek spel. Een collectie kleine spellen die je zelf hebt gemaakt staat geweldig in je portfolio. Het internet is een fantastische manier om met andere ontwikkelaars in contact te komen. Als je vastloopt in een project, vraag dan om hulp op sites als StackOverflow. Zorg dat je vraag intelligent is gesteld en dat je kunt aangeven al meerdere oplossingen te hebben geprobeerd. Werk elke dag aan je hobbyprojecten, ook al is het maar een uur. Dit helpt om fris te blijven en constant nieuwe technieken te leren. Veel ontwikkelaars hebben met succes een taal geleerd door ervoor te zorgen dat ze er elke dag mee bezig waren. Reserveer elke dag een bepaalde tijd om met coderen bezig te zijn, of maak voor jezelf een deadline dat je er mee klaar wilt zijn. Probeer elke werkdag met je projecten bezig te zijn, zodat je in het weekend kunt ontspannen. Hoewel deze niet zo goed betalen als een vaste baan, kun je zeker werken aan het volproppen van je portfolio door als freelancer opdrachten te doen. Kijk op sites als Elance en ODesk om werk te vinden. Hoewel het lastig kan zijn om een eerste opdracht te krijgen, wordt het een stuk gemakkelijker als dat eenmaal gelukt is.  Hacker News is een geweldige bron voor het vinden van freelance opdrachten. Kijk bij de "Ask"-afdeling. Hoewel het verleidelijk kan zijn om laag in te zetten zodat je een opdracht krijgt, is het onverstandig om je vaardigheden te goedkoop aan te bieden. Niet alleen ga je dan werken voor minder dan je waard bent, ook zal je er anderen in je vakgebied mee ergeren, wat niet goed is voor je netwerk. Soms kan goed werk in opdracht leiden tot een vast aanstelling. Zet altijd je beste beentje voor! Ga naar zoveel conventies en hack-a-thons als maar enigszins mogelijk is. Niet alleen krijg je zo meer code te zien en problemen die je op kunt lossen, ook zal je er andere mensen die werkzaam zijn in deze industrie tegenkomen. Ondanks wat je zou kunnen over programmeurs (alleen aan het werk in een duistere kelder), maakt de meerderheid van de fulltime ontwikkelaars deel uit van een team en netwerken is voor hen net zo belangrijk als in elk ander veld. Heb je een aantal freelance opdrachten achter de rug, dan kun je beginnen met het versturen van je CV en portfolio naar grotere organisaties, op zoek naar een vast baan. Behalve Monster en Indeed zijn er meerdere banensites speciaal gericht op ontwikkelaars waaronder GitHub Jobs, StackOverflow Job Board, AngelList, CrunchBoard, Hirelite en Hacker News. Een goede softwareontwikkelaar is meestal bedreven in meerdere programmeertalen. Hoewel je veel zult leren door aan het werk te gaan is het goed om een deel van je tijd te gebruiken voor studie en de basis eigen te maken van nog 1 of 2 programmeertalen. Dit maakt de overstap naar nieuwe projecten veel gemakkelijker en zal ervoor zorgen dat je een betere kandidaat bent voor bepaalde functies. Niet elke beginnende functie als softwareontwikkelaar zal je in bedragen van 6 cijfers betalen. In feite zal geen van deze banen je dat opleveren. Het goede nieuws over softwareontwikkeling is echter dat je ermee zeer sterk staat in de arbeidsmarkt. Als je het gevoel hebt dat je waar je nu bent niet genoeg verdient, dan is het gemakkelijk om over te stappen naar een andere baan, mits je over de juiste vaardigheden beschikt. Behandel je eerste paar baantjes/opdrachten als noodzakelijke ervaring in plaats van je te richten op je pensioenplan. Een goed programma zal taken uitvoeren die het leven van de gebruiker wat makkelijker maken. Neem de software die op dit moment beschikbaar is voor die taak als voorbeeld en kijk of je dat kunt verbeteren. Een  succesvol programma is iets waar mensen veel profijt van hebben.  Bekijk welke dagelijkse taken je uitvoert met je computer. Is er een manier waarop je een deel van die taken kunt automatiseren middels een programma? Schrijf elk idee op. Ook al klinkt het wat onnozel of vreemd op het moment zelf, het kan wel eens de aanzet geven tot iets handigs of zelfs briljants. Bestudeer andere programma's. Wat voor functie hebben ze? Hoe kun je ze beter maken? Wat ontbreekt aan de software? Door deze vragen te beantwoorden kun je op ideeën komen om zelf verder uit te werken. Dit document biedt een kort overzicht van alle functies en wat je wilt bereiken met het project. Door tijdens het ontwikkeltraject te verwijzen naar dit document kun je in de gaten houden of je op schema ligt en blijf je gerichter bezig. Dit is een eenvoudig programma waarin je alle functionaliteit inbouwt die je wilt bereiken. Een prototype is een snel programma en iets waarop je verder kunt bouwen tot je een ontwerp vindt dat werkt. Bijvoorbeeld, als je een kalender wilt maken, dan bestaat je prototype uit een eenvoudige kalender (met de juiste datums!) en een manier om er afspraken in te plaatsen.  Dit prototype zal meerdere malen veranderen tijdens de ontwikkelingscyclus terwijl je nieuwe manieren bedenkt om problemen op te lossen of nieuwe ideeën krijgt die je mee wilt nemen. Het prototype hoeft er niet mooi uit te zien. In feite zou het grafisch ontwerp het laatste moeten zijn waar je mee bezig gaat. Om weer het kalendervoorbeeld aan te halen, zal je prototype voornamelijk uit tekst bestaan. Bugs zijn de vloek van elke ontwikkelaar. Fouten in de code en onvoorzien gebruik kan zorgen voor allerhande problemen in het uiteindelijke product. Terwijl je verder gaat met je werk aan het project zal je moeten blijven testen. Doe alles wat je kunt om je programma vast te laten lopen en fouten te veroorzaken, en zorg er vervolgens voor dat die fouten worden opgelost. Laat vrienden en familie je programma testen en aangeven waar het mis gaat. Alle feedback waarmee je het ontwikkelproces kunt verbeteren is welkom.  Probeer vreemde datums in te voren als je programma datums als invoer nodig heeft. Echt oude datums of datums ver in de toekomst kunnen het programma vreemde resultaten laten produceren. Voer verkeerde variabelen in. Bijvoorbeeld, als je een formulier hebt gemaakt waarbij er gevraagd wordt om de leeftijd van de gebruiker, voer er dan een woord in en kijk wat er gebeurt. Als je programma een grafische interface heeft, klik dan op alles wat maar los en vast zit. Wat gebeurt er als je naar het vorige scherm gaat of op de knoppen klikt in de verkeerde volgorde? Hoewel het prima is om een ruwe versie van een project te maken voor prototyping en in de ontwikkelingsfase, als je wilt dat anderen het gaan gebruiken dan zal je wat tijd moeten gaan besteden aan de afwerking. Dit houdt in dat je ervoor zorgt dat de menu's logisch in elkaar zitten, dat de gebruikersinterface (UI) helder is en gemakkelijk om te gebruiken, dat er geen opvallende of hinderlijke bugs meer in zitten, en dat het er gelikt uitziet.  UI ontwerp en functionaliteit kan bijzonder moeilijk en complex zijn. Het is een compleet afzonderlijk vakgebied. Zorg er in ieder geval voor dat je persoonlijke projecten gemakkelijk zijn om te gebruiken en er goed uitzien. Een professionele UI is misschien onmogelijk zonder een redelijk budget en een team. Heb je er geld voor dat zijn er genoeg freelance grafisch ontwerpers die een UI voor je zouden kunnen ontwerpen. Als je een solide project hebt waarvan je hoopt dat het een hit gaat worden, zoek dan een goede UI-ontwerper en maak hem/haar onderdeel van je team. GitHub is een open-source community waar je code kunt delen met anderen. Hiermee kun je meer inzicht krijgen in je eigen code en anderen laten mee profiteren van de oplossingen waar jij mee bent gekomen. GitHub is een geweldige bron om van te leren en een goed idee om er je portfolio mee te vullen. Is je product klaar, dan kun je ervoor kiezen om deze te verspreiden of niet. Er zijn meerdere manieren om dit te doen, afhankelijk van het type software dat je hebt gemaakt.  Een van de meest gebruikte manieren voor kleine teams of onafhankelijke ontwikkelaars om hun software te ontwikkelen is via een persoonlijke website. Zorg ervoor dat alle mogelijkheden goed  zijn gedocumenteerd en voeg er screenshots en tutorials aan toe. Als je de software verkoopt, zorg dan dat je een goed digitaal betalingssysteem hebt opgezet en een server waar de software van kan worden gedownload. Als je software ontwikkeld voor een specifiek apparaat of besturingssysteem, dan zijn er meerdere digitale winkels die je kunt gebruiken. Bijvoorbeeld als je software maakt voor Android-toestellen, dan kun je apps verkopen via de Google Play Store, de Amazon App Store of je eigen website.
Bepaald wat voor soort softwareontwikkeling jouw interesseert. Leer jezelf een programmeertaal. Bronnen die je kunnen helpen een taal te leren. Kijk of je ergens les kunt krijgen. Werk aan hobbyprojecten. Stel vragen. Oefen elke dag. Zoek opdrachten als freelancer. Netwerk zoveel als mogelijk. Solliciteer op vaste aanstellingen. Leer meerdere vaardigheden. Maak je eerst niet te druk over de beloning. Brainstorm. Maak een ontwerpdocument. Maak een prototype. Blijf constant testen. Polijst je projecten. Plaats je projecten op GitHub. De distributie van je software.
https://www.wikihow.com/Develop-Software https://www.wikihow.com/Develop-Software https://www.wikihow.com/Develop-Software
Learning the Ropes Getting Work Developing a Program