Hur man blir programmerare:

Intro

”Vad är det bästa sättet att lära sig koda?”

”Hur man blir programmerare”

”Hur man bygger en app”

”Det här är vanliga frågor som ställs varje dag av nybörjare som vill lära sig att koda. Du har säkert redan googlat något i den stilen och läst tillräckligt många artiklar/svar till den grad att du är trött på de ”vanliga” råden.

Om du inte har gjort det, eller om du på något sätt tror att jag har något nytt att säga och vill höra det ändå (det gör jag inte), så kommer här ett kort och ganska meningslöst svar (jag ska ge det ett SEO-vänligt click-bait-namn: ”3 steg för att bli programmerare”):

Steg 1: Välj ett språk

Steg 2: Lär dig språket

Steg 3: Bygg saker och fortsätt att lära dig

Hej, släng inga skor på mig. Hur mycket jag än skulle vilja säga att det finns en metod för att lära sig koda som passar alla, så finns det verkligen inte. (Låt mig lägga till ett steg 0: acceptera att alla lär sig olika).

Otaliga mer detaljerade svar som utvecklar steg 1 & 2 finns redan på webben, men det vanliga svaret på steg 1 är att lära sig Python eller Ruby som första språk (häng inte upp dig för mycket på språket, då kommer du aldrig igång). Om du behöver resurser för inlärning har vi sammanställt flera guider som du kan kolla in:

  • Lär dig Python
  • Lär dig Ruby on Rails
  • Lär dig JavaScript (Lär dig alltid JavaScript innan du lär dig ramverk som AngularJS eller React ).
  • Lär dig iOS-utveckling
  • Lär dig Android-utveckling

Flera av er kommer till den här punkten:

Om du har det där ögonblicket då du har blivit ett vilset får, ska du inte flippa ut, för du är inte ensam.

Varje gång du frågar ”hur blir jag programmerare” kommer utvecklare att säga att du ska bygga saker, eftersom det är genom att bygga saker som du kan förbättra dig som programmerare och det är det bästa sättet att lära sig, etcetera etcetera.

Men hur bygger du din egen app?

Du kan alltid följa befintliga handledningar om hur man bygger en Twitter/Pinterest/Instagram/etc-klon med vilket språk & teknik du än använder, men tänk på att författarna till dessa handledningar faktiskt har gjort det mesta av arbetet åt dig, och allt du gör är att förstå koden och deras logik.

Denna artikel kommer att försöka ge dig en översikt som du kan följa när du bygger din egen app från grunden.

Förutsättningar

De flesta appar skulle behöva en databas, så om du ska bygga din egen app på egen hand (ergo front- och backend), måste du troligen kunna ett språk för databassökning (vanligtvis SQL). Om du inte bygger något som inte behöver interagera med en databas, som till exempel Flappy Bird.

Och om du vill bygga en webbapp måste du dessutom ha grundläggande kunskaper i DevOps för att kunna sätta upp din utvecklingsmiljö/server och för att faktiskt kunna lansera appen.

Om du bara siktar på att bli webbutvecklare i front-end kan du finslipa dina kunskaper i HTML, CSS och JavaScript på Codepen eller JSfiddle. Om du bara kan JavaScript och inte vill lära dig ett annat språk kan du prova Node.js, eftersom det är en JavaScript-plattform för backend-utveckling. (Du kan också använda MongoDB som din databas eftersom den också är baserad på JavaScript.)

I övrigt bör du också kunna något av följande språk (och vanligtvis ett webramverk) om du tänker bygga en komplett webbapplikation:

  • Ruby
  • Python
  • PHP
  • Java
  • Go
  • C#

Om du vill bygga spel kan du överväga att lära dig Lua, även om C# också är ett mycket bra val tack vare Unity 3D-spelsmotorn och dess massiva community. När det gäller native mobilapputveckling behöver du kunna Swift/Objective-C för iOS-utveckling och Java för Android-utveckling.

Och låt oss nu gå in på hur man bygger en app från grunden.

Steg 0: Förstå dig själv

Först och främst ska du bygga något som du brinner för. Intresse är det bästa sättet att hålla dig motiverad, så fråga dig själv vad du bryr dig om eller vad du gillar att göra.

Till exempel:

  • Vilka appar tycker du om att använda mest?
  • Vilka appar kan du inte leva utan?
  • Gillar du att spela spel?
  • Gillar du att designa saker?
  • Etc.

Identifiera dina intressen så att du jobbar med något som du har roligt med. På så sätt är det mindre troligt att du kommer att spåra ur och ge upp efter halva vägen.

Steg 1: Välj en idé

Nu när du förhoppningsvis har listat ut dig själv är det dags att välja en idé att bygga. Börja enkelt.

Ja… även om du funderar på att bygga ett spel bör du just nu inte tänka på att bygga nästa CounterStrike utan istället fundera på hur man kan bygga så enkla spel som det ökända Flappy Bird. Hej, se inte ner på Flappy Bird – det var en sensation som fick människor över hela världen att upptäcka sin inre masochist. Men jag avviker.

Så, baserat på dina intressen, kom med en idé till en enkel app som gör något snyggt. Det spelar ingen roll om appen redan finns (det kan faktiskt hjälpa dig om liknande projekt redan finns).

Här är några tips som kan hjälpa dig att få lite inspiration:

  • Om du gillar att laga mat kan du kanske tänka dig att bygga en app där folk kan visa upp sina hemlagade recept.
  • Om du alltid har velat veta hur Twitter fungerar kan du försöka bygga en superenkel Twitter-klon.
  • Om du är en glömsk person som förlitar sig på uppgiftshanterare, försök att bygga en själv.
  • Om du är beroende av League of Legends kan du försöka titta igenom Riots API och bygga en webbplats som kan få & visa spelinformation.
  • Om du gillar att spela kortspel kan du försöka bygga ett enkelt spel (t.ex. Black Jack)
  • Om du går på diet kan du försöka bygga en app som loggar ditt kaloriintag.

Och så vidare och så vidare. Här finns en lista med projektidéer om du behöver mer inspiration.

När du väl har en riktning, skriv ner syftet och, i förekommande fall, de viktigaste målgrupperna för appen i en mening.

Till exempel: Steg 2: Definiera de viktigaste funktionerna

Tänk på vad din app ska kunna göra och lista dem. Om det slutar med att du listar en massa saker, ta en bättre titt och fråga dig själv om den här appen VERKLIGEN behöver till exempel Facebook-inloggning för att fungera? Behöver den VERKLIGEN ladda upp data till något moln för att fungera?

Det är bra att ha ett drömprojekt med fantastiska specifikationer, men just nu handlar det inte om att bygga något som är komplett med en massa coola funktioner. Tänk på att ingen app någonsin är komplett och att allting börjar enkelt.

Försök aldrig att bygga en allt-i-ett-app. Gör inte det. Jag har sett det hända även i en professionell miljö, och resultatet är mycket smärta och få framsteg.

Om du inte har en järnvilja eller verkligen älskar utmaningar kommer du bara att bli frustrerad och avskräckt om ditt första projekt är för svårt att bygga. Du är nybörjare … poängen just nu är att ha roligt. Att ha roligt är det mest effektiva sättet att lära sig.

Så, ta en titt på listan med funktioner som du har gjort, och om den är för lång, börja stryka över funktioner som din app kan fungera utan.

Håll dig i minnet att det här är din version 1 och att du bara ska hålla saker och ting enkla. Fokusera på saker som gör att appen kan utföra det den ska göra – allt annat kan du lämna till ett annat projekt.

För ett exempel på en lista över centrala funktioner för en Reddit-klon:

  • Användare kan skapa ett konto
  • Användare kan hämta förlorade lösenord
  • Användare kan ändra sina lösenord
  • Användare kan lägga upp nya länkar
  • Användare kan kommentera länkar
  • användare kan rösta uppåt/nedåt på länkar
  • användare har en profil som visar deras historik/aktivitet

De funktioner som listas ovan är de viktigaste funktionerna som du bör fokusera på först. Andra funktioner som:

  • användare kan dela till sociala medier
  • användare kan radera kommentarer
  • användare kan redigera kommentarer
  • användare kan radera sitt eget konto

är sekundära och kan sparas till version 1.x-arbeta endast med dessa efter att du faktiskt kan lansera version 1.0

Steg 3: Skissa din app

CC License

Inget går snabbare än en penna & papper. Vid det här laget bör du ha en ganska solid idé om vad din app ska göra, så skissa upp en wireframe för appens användargränssnitt (UI). Var knapparna ska vara placerade, vad syftet med den knappen är och så vidare.

Skriv ner anteckningar och ge kött på benen hur appen ska fungera. Du är fortfarande i brainstormingstadiet, så ändra på saker och ting tills du är någorlunda nöjd med det.

Håller du det enkelt? Om du förkortade din lista från steg 2, håll dig till endast skissande funktioner som anges där – låt dig inte ryckas med. Om du inte kan hjälpa dig själv, skissa då två versioner: en grundversion och den slutliga versionen i dina drömmar.

Samt sett är detta inte det slutliga utseendet utan bara ett steg som hjälper dig att få ett fastare grepp om din app.

Steg 4: Planera appens användargränssnittsflöde

All right. Du har en bra idé om hur din app kommer att se ut, vad varje element ska göra och hur användarna kan interagera med din app. Nu är det dags att fundera ut appens användargränssnittsflöde. Det vill säga hur en användare ska använda din app från början till slut. Kartlägg varje steg som de måste ta och varje scenario som de kan stöta på. Försök att beakta varje användningsfall.

(CC License)

Inkludera alla åtgärder som din användare kan vidta i flödesschemat. Om din app till exempel kräver att användarna loggar in, hur skapar de ett konto? Vad händer om användarna har glömt sitt lösenord? Vad händer om de har angett fel lösenord? Vad ska en användare kunna göra i varje gränssnitt (lägga till ett nytt listobjekt > spara; redigera > spara/ta bort)? Och så vidare. Detta görs snabbast med papper och penna.

Och eftersom din app ska vara ganska enkel bör ditt diagram inte vara alltför omfattande.

Steg 5: Utformning av databasen

Okej! När du har planerat alla tänkbara scenarier kan du ta en titt på dem för att avgöra vilken typ av data du skulle behöva behålla. Om din app till exempel kräver att användarna skapar ett konto behöver du hålla reda på saker som användarnamn, användar-ID, användarens e-postadress, lösenordet, om användarens e-postadress är bekräftad, när kontot skapades samt varje gång användaren har loggat in i din app.

Om du bygger en Twitter-klon behöver du veta tweetens ID, tweetens innehåll, när tweeten publicerades/retweetades, hur många retweets den har och hur många stjärnor den har. Du skulle också behöva föra ett register över en användares retweets och stjärnor.

Du kan rita ett ERM-diagram (Entity-Relationship Model) för att kartlägga datarelationen.

Ett exempel på en kursvalssajts Entity-Relationship Diagram CC License

Och om du har några framtida funktioner planerade är det dags att planera in dem i din databas. Här är en trevlig artikel att kolla in när du designar en databas.

Avancerat

Om den app du planerar kommer att interagera med en server (t.ex. om du bygger en fullstack-webbapplikation) eller om din app kommer att interagera med ett API (t.ex. du försöker få information från Yahoo! Weather ), är det förmodligen en bra idé att rita ett sekvensdiagram för att du ska få en bättre uppfattning om hur processerna ska fungera.

Från Wikipedia

Steg 6: UX Wireframes

Okej, du har planerat backend. Nu är det dags att planera din front-end.

Förhoppningsvis är du fortfarande lika entusiastisk som hantverkarna ovan. Du vet vad du behöver – nu har du en mycket bättre uppfattning om hur din app ska se ut.

CC License

Då människor är mestadels visuella varelser har du lättare att förstå vad du ska göra om du har en visuell bild av varje vy som du ska koda. Men om du är som jag och din teckning är så rörig att du knappt kan förstå det obskyra…hosta mästerverk…du har skapat, är det naturligtvis oklokt att fortsätta med det här steget genom att missbruka dina stackars konstnärliga hjärnceller.

Tyvärr finns det många verktyg för wireframing och mockup på nätet som hjälper dig att planera ditt UX/UI-flöde (t.ex. Gliffy, Mockflow, Framebox, Wireframe.cc, Invisionapp).

Steg 6.5 (valfritt): Detta är ett valfritt steg, men om du tänker specialisera dig på front-end-utveckling eller om du bryr dig mycket om hur din app kommer att se ut till den grad att en snyggare app skulle motivera dig att koda, ska du definitivt gå vidare och designa appen så att alla dessa UI-element i wireframe kan bytas ut mot snyggare element.

Om du älskar att designa kommer du förmodligen att designa appen innan du börjar ändå – kanske har du redan designat den under steg 2.

Om du inte sysslar med design men ändå bryr dig om hur din app kommer att se ut, kan du överväga att använda element från UI-kits. Här är några resurser för UI-element:
(Obs: Photoshop krävs)

UI Cloud
Graphicburger
UI Dock

För spel:
Spriters Resource

Den ska dock inte vara alltför fixerad vid appens utseende. Just nu bör du fokusera på att bygga appens funktioner istället.

Steg 7: Undersöka lösningar

Snyggt! Du är klar med planeringsfasen … men hur ska du koda alla dessa saker?

En viktig färdighet som du måste lära dig som programmerare är att utvärdera när du ska använda något som en annan utvecklare redan har skrivit, och när du ska bygga funktionen själv.

Då alla bygger en unik app är inte alla användningsfall likadana. Därför måste du bedöma när du ska använda en befintlig lösning och när du ska bygga en egen, och du blir bättre på att göra det med erfarenhet.

Om du känner dig som en riktningslös båt som gått vilse på ett vidsträckt hav, ta ett djupt andetag och få ingen panik. Du klarar det här.

I takt med att du får mer erfarenhet av att forska, finslipa din ”Google-fu” och bygga saker kommer du så småningom att få ett grepp om den här processen.

Titta på lösningar

Ta en titt på alla diagram som du har ritat och på listan över funktioner som du gjorde i steg 2.

Vad finns det för saker som du inte har någon aning om hur du ska bygga?

Behövs det till exempel att användare måste skapa ett konto? Är din app beroende av uppdateringar i realtid? Vilka funktioner behöver du?

För det mesta är det en bra idé att bara använda en befintlig lösning för stora funktioner som hantering av synkronisering i realtid (t.ex. Firebase), nätverk/routing (t.ex. AFNetworking för iOS-appar), autentisering och UI-relaterade komponenter (t.ex.t.ex. flipboard eller pinterest-esque app).

Det finns många online-databaser där du kan söka efter backend-relaterade komponenter/paket/gems/etc, men du måste vara försiktig med din utvärdering av vad andra människor har skrivit – använd dem inte bara blint. Du kommer förhoppningsvis inte att bygga något alltför komplext just nu, så just nu kommer du förmodligen inte att behöva komponenter som andra har skrivit.

Det bästa sättet att börja är i alla fall att studera vad andra utvecklare har gjort före dig och lära sig logiken bakom deras beslut. GitHub är din bästa vän.

För ett verkligt exempel på en erfaren utvecklares forskningsprocess för en viss funktion kan du kolla in det här inlägget som handlar om hur Angular-Plunkers skapare byggde Plunkers drag-and-drop-direktiv.

Välja verktyg för att komma igång med

Om du bygger en webbapplikation kan du kanske kolla in Yeoman eftersom det syftar till att hjälpa dig att snabbt kickstarta nya projekt genom att hjälpa dig att sätta upp strukturen för ditt projekt.

Om du bygger en React-app kan du också kolla in startpaket och befintliga Flux-implementationer. HTML5Boilerplate och Bootstrap är populära front-end-mallar för din app. Oftast använder boilerplates Gulp eller Grunt för uppgiftshantering.

Då du sannolikt kommer att använda några befintliga komponenter eller lösningar bör du också installera bower för beroendehantering (npm för dem som använder Node.js och CocoaPods för iOS-utvecklare). Oroa dig inte – oftast kommer dessa verktyg med handledningar som lär dig hur du installerar dem.

Steg 8: Bygga appen

Ja, du är redo att bygga appen nu! Här är några tips som du bör tänka på när du bygger din app.

Checklista

Du bör fokusera på att bygga appen funktion för funktion. Om du alltså inte är klar med en uppgift, till exempel ett kommentarsystem, ska du inte plötsligt börja bygga en användarprofilvy. Med andra ord, om du till exempel bygger ett formulär bör du arbeta med både front- och backend-koden tills funktionen är klar.

För att hålla koll på dina framsteg kan du skriva ner en att-göra-lista över funktioner och använda den som en checklista.

Skriv tester först

Men om du inte bygger en spelapp är det en bra idé att skriva ett test för din funktion först innan du faktiskt börjar koda funktionen. Buggar är oundvikliga, men testning kommer att kraftigt minska dina misstag och dina chanser att släppa buggig kod till produktion.

Genom att skriva enhetstester tar tid och du kan ibland ifrågasätta om det är värt det. Men om du tänker bygga större projekt i framtiden där du fortsätter att lägga till nya funktioner kan detta hända med din app:

Då kan detta (är en överdrift av vad) hända:

Och gud förbjude:

Och det här skulle vara du som försöker fixa appen:

…mer eller mindre.

Det är alltså en bra idé att börja i liten skala och få in vanan att göra testdriven utveckling (TDD), särskilt eftersom du börjar på nytt och bygger något enkelt.

Du har inte någon deadline med en projektledares högaffel bakom ryggen nu, eller hur?

För att få tips om enhetstestningsmönster kan du kolla in den här artikeln. Ett annat tips att tänka på är att undvika att hävda för mycket trivialiteter.

Det finns många testverktyg att välja mellan, till exempel Jasmine eller Karma för JavaScript, Rspec för Ruby, PyTest för Python, PHPUnit för PHP, Quick som ett alternativ till xCTest för iOS-utveckling, eller vilket verktyg som helst som du känner skulle fungera för dig.

Om du dessutom bygger en iOS- eller Android-app är det en bra idé att kolla in Crashlytics.

7 steg för att felsöka effektivt och ändamålsenligt

Använd Git

Git är ett versionshanteringssystem och ett fullfjädrad förvaringsutrymme med fullständig historik och fullständiga möjligheter till versionsspårning. Det är en bra idé att börja lära sig använda Git när du bygger din första app. På så sätt kan du enkelt ångra dina misstag, återställa förlorad data med mera. Om du dessutom planerar att arbeta med ett team av utvecklare i framtiden kommer du ändå att behöva använda Git. GitHub är den mest populära värdtjänsten för Git-arkiv för öppen källkodsprojekt, medan Bitbucket är för privata arkiv.

Om du till slut stöter på problem när du använder git kan det här inlägget om de 10 vanligaste Git-problemen och hur du löser dem hjälpa dig.

Om du fastnar…

Som nybörjare kommer du oftare att känna dig som den där hamstern.

Du är inte ensam. Ibland räcker det med att ta en paus och låta problemet puttra så att du kan rensa tankarna.

Om detta fortfarande inte fungerar, så finns här några sätt att ta loss dig själv:

Googla

Jag nämnde Google-fu i steg 7, men låt mig återigen betona att det är viktigt att lära sig googla, vilket är en viktig färdighet som alla programmerare behöver förvärva. Om du fastnar i ett fel eller om du inte vet varför din kod inte fungerar är det en bra idé att googla.

Fråga på StackOverflow

Du kommer förmodligen att märka att dina googleresultat mestadels pekar på frågor och svar på StackOverflow. Om du fortfarande inte kan hitta en lösning på ditt problem efter att du har googlat som fan kan du försöka ställa en fråga på StackOverflow.

Håll dig till att visa att du har gjort din research i din fråga – det är mer sannolikt att du får ett svar på det sättet.

Alternativ: Hitta en mentor

Vissa personer kommer att säga att StackOverflow inte är nybörjarvänligt eftersom nybörjare inte vet hur de ska formulera sina frågor. Men vad händer om du inte ens vet vad ditt problem är?

Om du är på gränsen till headdesking (eller om du redan är headdesking…) behöver du inte misshandla din panna (om du slår tillräckligt hårt mot huvudet förlorar du bara hjärnceller).

Ett bra alternativ för att underlätta din utveckling och din inlärningsprocess är att få hjälp av en erfaren programmerare. Du behöver inte känna att du på något sätt är dum för att person X är en känd expert och en självlärd programmerare. Människor lär sig helt enkelt på olika sätt, och alla nybörjare kommer att ha nytta av personlig vägledning eftersom du kanske gör misstag som inte är en stor sak just nu men som faktiskt är en dålig praxis.

Håll dig i minnet att på den tiden hade många självlärda utvecklare inte de tjänster som du nu har tillgång till.

Därmed kan du få hjälp av erfarna programmerare via live 1:1-sessioner på Codementor, där priserna på mentorerna börjar från 15 dollar/minut. Under dessa sessioner kan du ha en videochatt med en erfaren utvecklare och dela din skärm/kod med dem, och mentorn kommer att lära dig hur du ska rätta till din kod samt berätta vad du har gjort fel så att du kan undvika misstaget i framtiden. Du kan också granska koden från sessionen eller spela in sessionen på din lokala disk via videochattverktyget. Registrera dig nu och prova de första 15 minuterna gratis med mentorer som erbjuder erbjudandet.

Sista tipset

Programmerare gör misstag hela tiden, så känn dig inte avskräckt när du inte ens kan klara ett test du skrivit eller om du ständigt snubblar över dig själv. Jag menar, tänk på iOS9, Android Lollipop eller någon app som du älskar att använda. Säkert har även de mest mogna apparna där ute fortfarande buggar, så utgå inte från att du kan bygga den mest perfekta, bugglösa appen där ute (det betyder förstås inte att du ska ställa låga krav på dig själv – du ska alltid sträva efter att bygga kvalitetsappar).

Det är dessutom mycket vanligt att du spenderar timmar eller till och med dagar på en sak och ändå har svårt att få den att fungera som du vill. Om det vore lätt att programmera nya funktioner snabbt skulle världen inte behöva nya programmerare. För helvete, vi skulle förmodligen vara på en felfri iOS100 nu och vi skulle ha byggt en digitaliserad värld som den i Matrix.

Därmed hör man ofta uttrycket ”gör misstag” när folk uppmuntrar dig att börja bygga saker. De menar det. En sak som du måste acceptera som programmerare är att du inte kommer att bli en tuff kodningsmaskin som kan trolla fram funktioner på ett ögonblick. Du kommer att misslyckas ofta och det är okej.

Och kom ihåg att du är nybörjare, så mycket kommer oundvikligen att vara svårt i början. Du kommer att lägga mycket tid på något som du tror borde vara enkelt och det kommer att kännas som en svår uppförsbacke, men allteftersom du får mer erfarenhet kommer det att bli lättare. Se fram emot den där känslan av prestation när du äntligen lyckas bygga din första app, och du kan till och med överväga att sälja din app om du finner det lämpligt.

Happy Coding!

Författarbio


Yi-Jirr Chen || Content Maketing & Operations
Den typiska massiva nörden som spelar och älskar vetenskap/teknik. Publicerar även skönlitteratur under ett pseudonym som är ett pseudonym av en anledning

Andra artiklar som du kanske är intresserad av:

  • Hur du får ditt första utvecklarjobb (även om du inte har en CS-examen)
  • Developer Community’s 9 Tips for Coding Beginners
  • 40 Side Project Ideas for Software Engineers
  • Hur du startar din karriär och får din första kund som frilansutvecklare

Lämna ett svar

Din e-postadress kommer inte publiceras.