Är programmering svårt?
Detta är en fråga som många icke-programmerare ställer till mig. Det gör att den hamnar på samma nivå som frågor som ”jobbar programmerare hemifrån” och ”vilken utbildning behöver man för att bli programmerare?”. Forskande sinnen vill veta.
Men till skillnad från vissa av dessa frågor är den här faktiskt ganska svår. Det är en enkel fråga, men svaret är mycket nyanserat.
Så låt oss dyka ner i den, i detalj, och hjälpa dig att förstå om programmering är svårt eller inte.
Är programmering svårt? Det korta svaret
Så låt oss först och främst ta itu med frågan med ett kort och direkt svar. Detta kommer att sätta scenen för resten av inlägget.
Är programmering svårt?
Nja, som konsulter brukar säga, ”det beror på”. Huruvida programmering är svårt eller inte beror på många faktorer, till exempel den specifika typen av programmering och hur du som individ tänker. Så det korta svaret är att programmering verkligen går från förvånansvärt lätt till vansinnigt svårt.
Tänk på det här sättet. Försök att svara på några av dessa frågor utifrån din erfarenhet:
- Är det svårt att spela basketboll?
- Är det svårt att tala portugisiska?
- Hur är det med att köra bil? Är det svårt?
Du förstår varför jag tvekar och säger ”ehhh… det beror på”.
Människor tenderar att bli överdrivet avskräckta av programmering
Jag vill dock ge en lite mer kvalificerad åsikt. Jag tror att icke-programmerare tenderar att dramatiskt överskatta hur svårt det är att programmera.
Har du hört någon säga något liknande:
Oh, jag är helt enkelt ingen matteperson!
Ja, jag hör det ofta. Men jag hör samma sak om programmering mer. Och jag anser att detta är ironiskt eftersom vissa områden inom programmering verkligen kräver matematik, men många kräver det inte. Programmering är enligt min mening en mycket mer varierad uppsättning frågor än ”matematik”.
Jag tror verkligen att många människor antar att de aldrig skulle klara sig som programmerare, men de har helt fel. Det är ett mycket mer lättillgängligt ämne än vad världen verkar tro.
Låt oss avliva några myter om programmering, bortom den matematiska myten
För att verkligen driva poängen hem, låt oss titta på några ytterligare missuppfattningar om programmering, bortom myten om att programmerare måste vara riktigt bra på matematik.
Missuppfattning 1: Programmerare är elithackare, som killen i Mr. Robot
Oavsett din ålder finns det någon film från din tid där ute som framställer programmerare som Bond-liknande (eller Bond-villain-liknande) hackare. När jag växte upp var det filmen Sneakers. Om du växte upp lite senare än jag kan du ha haft oturen att se Hackers eller Swordfish. Numera har genren förbättrats och du kanske gillar Mr. Robot.
Men oavsett om filmen är fantastisk, som Sneakers, eller fruktansvärd, som Hackers, har du fortfarande hackerprotagonister och hackerantagonister som verkar vara både kvasi-sociopatiska och otroligt briljanta programmerare.
Det här är inte det verkliga livet. Det är inte ens riktig hackning, för att inte tala om vanlig programmering. Så tro inte att programmering kräver att du flyttar kuber runt en skärm, eller vad Hugh Jackman nu gör i Swordfish. Vanligtvis kräver det bara en massa googlande.
Missuppfattning 2: Du behöver en examen i datavetenskap
Vi har behandlat detta i många detaljer, så jag ska inte gå in på det här. Men nej, du behöver ingen datavetenskapsexamen för att programmera. Du behöver ingen yrkesexamen, och du behöver kanske inte ens delta i ett bootcamp.
Dessa saker kommer alla att göra det lättare att få det första jobbet, men de är inte nödvändiga. Så när du undrar ”är programmering svårt?” blandar du förmodligen ihop de hinder du måste ta dig igenom med aktiviteten. Det finns inga förutsättningar för att programmera mer än ett anteckningsblock och nedladdning av en enda tolk eller kompilator.
Missuppfattning 3: Programmerare har fruktansvärda sociala färdigheter
Den här kanske får dig att klia dig lite i huvudet. Du tänker förmodligen: ”Vad har idén om att programmerare har fruktansvärda sociala färdigheter att göra med mig, eller med varför det är svårt att programmera?”
Nja, den är subtil, men verklig. Världen tittar på TV-program och filmer där man kan identifiera skickliga programmerare genom deras tendens att ”nörda”.”
Så den omvända logiken smyger sig in och du tänker: ”Om jag inte är vansinnigt socialt obekväm, kan jag då någonsin bli en ”riktig” programmerare?”
Ja. Ja, det kan du. Programmerare deltar i massor av konferenser och mötesplatser, håller föredrag, bildar gemenskaper och har fantastiska, normala sociala liv.
Missuppfattning 4: Programmerare är omedelbart duktiga på allt som har med datorer att göra
Jag personligen tog en examen i datavetenskap och fick sedan ett jobb som programmerare. Och när jag gjorde det antog alla genast att jag var expert på allt som har med datorer att göra.
- Erik, min dator gör ett konstigt ljud – vad tror du att det är för fel?
- Hej, jag får fel #90314 när jag försöker stänga MS Word. Vad betyder det?
- Vilket av dessa grafikkort är det bästa?
Alla dessa frågor var den typ av frågor som jag fick höra. Och i princip skulle jag bara googla svaret (om jag inte sa ”wow, jag vet verkligen inte”). Jag försörjde mig genom att skriva programvara, men det betydde inte att jag visste allt och alla om datorer.
Jag nämner detta eftersom du inte ska tro att du behöver veta allt och alla om datorer för att bli programmerare.
Det finns mycket variation inom programmering
När vi nu har slagit hål på några myter, låt oss titta på verkligheten inom programmering. Och verkligheten är att den faktiskt är ganska varierad. Här är bara ett litet urval av de saker som folk gör under det allmänna paraplyet ”programmering”:
- Design av layouten och de visuella egenskaperna hos en webbsida.
- Skapa algoritmer för artificiell intelligens.
- Skriva manuella uppgifter för att automatisera dem.
- Komplex statistisk modellering.
- Bygga enkla, repeterbara mobilappar.
Och det är bara ett litet urval av de olika typerna av programmering. Det tar inte ens upp alla de olika roller du kan ha som bidrar till dessa insatser.
Det finns lika mycket variation i ”att vara programmerare” som i ”att vara affärsman”.”
Vissa programmeringsroller är mer lättillgängliga
Med tanke på denna variation skulle jag vilja gräva lite djupare i vilka roller som kan tyckas vara mer lättillgängliga.
Jag kommer att backa lite från spektrumet ”lätt till svårt”, bara för att det är så beroende av vad du, som individ, tycker är svårt. Jag har till exempel alltid klarat mig mycket bra med matematik och algoritmer, men jag är uppriktigt sagt fruktansvärt dålig på design och layout. Du kanske har motsatta böjelser och tycker att det är löjligt att säga att ”det är lätt att programmera en sorteringsalgoritm”, och du kan motsvara detta med något som jag skulle tycka är lika löjligt: ”det är lätt att lägga upp en vacker webbsida”
Så förstå att jag inte kategoriskt kallar saker och ting för lätta eller svåra. Istället pekar jag på saker som du kanske inte hade tänkt på, om du bara har tänkt på programmering som något mycket matematiskt.
- Vissa personer i programmeringsroller fokuserar till stor del på layout och användarupplevelse. Detta innebär att de ägnar sig mycket åt applikationens estetik och hur användarna interagerar med den.
- Andra programmerare fokuserar till stor del på data och databaser. Istället för att bygga stora programvaror med hjälp av komplexa instruktioner fokuserar de mycket mer på faktiska data och resonemang om dessa data.
- En annan disciplin ligger närmare drift och support. Vissa människor arbetar en hel del med datorer som ”power users” och lär sig att programmera genom att här och där lära sig hur man automatiserar och effektiviserar det man gör manuellt.
Och det är bara några exempel. Så förstå att även om programmering verkar svårt för dig kan det finnas roller inom det som faktiskt verkar mer lättillgängliga.
Programmering är dock främmande, vilket kan betyda att programmering är svårt
I det här läget skulle jag vilja byta växel bara lite. Det känns som om jag har ägnat en hel del tid åt temat ”hej, programmering är inte så svårt som du tror”. Och det är sant. Jag tror att många människor skulle svara ”ja” på frågan ”är programmering svårt”, helt enkelt för att de inte vet vad programmering innebär.
Men jag tänker mildra det lite här. Programmering är svårt i den meningen att det kräver att du tänker på ett sätt som du inte är van vid.
För att förstå vad jag menar kan du tänka på att hantera Alexa.
Alexa kan svara på många taktiska frågor, och hon kommer att glädja och överraska dig ibland. Men hon är också riktigt frustrerande. Hennes datorvana visar sig ibland när hon på ett komiskt sätt missförstår grundläggande mänsklig interaktion.
Tänk nu på att Alexa, när det gäller datorprogram, är helt optimerad för att göra sitt bästa för att förstå dig. Du måste vara extremt exakt, bokstavlig och trubbig när du pratar med henne, och hon är där för att förstå dig.
Compilern (det som översätter din kod till handling) är som Alexa, men den är inte utformad för att göra ditt liv enkelt. Den är utformad för att maximera användbarheten. Så om du måste vara exakt när du har att göra med Alexa, är exakt inte ens en början till att beskriva vad kompilatorn vill. Om du förväxlar ett semikolon med ett kolon kan du krascha en dator.
Är det svårt att programmera? Ja, i den meningen att det kräver att du tänker på ett sätt som de flesta människor normalt inte tänker.
Programmering av det senaste är lagligt svårt
För att fortsätta med temat ”ja, programmering är svårt” kan vi tänka oss att det finns fickor i programmeringsvärlden som kräver en hel del skicklighet och övning för att komma in. Tänk inte för mycket på det. Ibland är programmering verkligen svårt.
Att göra avancerade saker med robotik, blockkedjor, artificiell intelligens, handelsalgoritmer osv. kräver mycket skicklighet, övning, talang och tävlingslust. Några av de stora företagen i Silicon Valley betalar enorma löner till programvaruutvecklare, och de kommer inte att göra det för någon som bara råkar vandra förbi.
Det finns specialiteter inom programmeringsvärlden som kräver blixtnedslag, i den meningen att du behöver övning, talang, smarthet och tur. Och utöver det finns det roller, positioner, utmaningar och situationer som inte särskilt många människor kan uppfylla på ett tillfredsställande sätt. Programmering kan vara ganska svårt.
Som allt annat är det en stor variation
Men i slutändan varierar det verkligen. Tänk tillbaka på vad jag sa i början.
Är basketboll svårt? Nej, om du menar ”kan vem som helst ta upp en boll och kasta den mot en korg?”. Ja, om du menar ”hur stor är chansen att Golden State skriver kontrakt med mig för att spela tillsammans med Steph Curry?”
Är det svårt att tala portugisiska? Tja, förmodligen inte om du är född i Brasilien eller Portugal. Men förmodligen ja om du är 70 år gammal och aldrig har talat något annat än japanska.
Så, är det svårt att programmera? Ja och nej. Ja, det är svårt att göra det på elitnivå eller inom ett mycket specialiserat och konkurrensutsatt område. Men nej, det är inte svårt att komma igång. Och det är definitivt inte bortom dig.
Detta inlägg skrevs av Erik Dietrich. Erik är en veteran inom programvaruvärlden och har innehaft nästan alla positioner inom den: utvecklare, arkitekt, chef, CIO och, så småningom, oberoende lednings- och strategikonsult. Denna breda erfarenhet har gjort det möjligt för honom att tala till alla personligheter inom branschen och att skriva flera böcker och otaliga blogginlägg på dussintals webbplatser.